DOC PREVIEW
NMT EE 308 - Lecture Notes

This preview shows page 1-2-3 out of 9 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 9 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 9 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 9 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 9 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

• Disassembly of 9S12 op codes • Writing an assembly language program • Huang Sections 2.4, 2.5, 2.6 o Disassembly of 9S12 op codes o Use flow charts to lay out structure of program o Use common flow structures  if-then  if-then-else  do-while  while o Do not use spaghetti code o Plan structure of data in memory o Plan overall structure of program o Work down to more detailed program structure o Implement structure with instructions o Optimize program to make use of instruction efficiencies o Do not sacrifice clarity for efficiency Writing Assembly Language Programs — Use Flowcharts to Help Plan Program StructureFlow chart symbols:IF-THEN Flow Structure if (C) { A; }EXAMPLE: if (A<10) { var = 5; } CMPA #10 BLT L1 BRA L2L1: LDAB #5 STAB varL2: next instructionOR: CMPA #10 BGE L2 LDAB #5 STAB varL2: next instructionIF-THEN-ELSE Flow Structure if (C) { A; } else { B; }if(A < 10) { var = 5; } else { var = 0; } CMPA #10 BLT L1 CLR VAR BRA L2L1: LDAB #5 STAB varL2: next instructionDO WHILE Flow Structure do { A; } while ( C );EXAMPLE:i = 0; do { table[i]=table[i]/2; i=i+1; } while (i <= LEN); LDX #table CLRAL1: ASR 1,X+ INCA CMPA #LEN BLE L1WHILE Flow Structure while ( C ) { A; } EXAMPLE: i = 0; while( i <= LEN) { table[i]=table[i]*2; i=i+1; } LDX #table CLRAL1: CMPA #LEN BLT L2 BRA L3L2: ASL 1,X+ INCA BRA L1L3: next instructionUse Good Structure When Writing Programs — Do Not UseSpaghetti CodeExample Program: Divide a table of data by 2Problem: Start with a table of data. The table consists of 5 values. Eachvalue is between 0 and 255. Create a new table whose contents are the originaltable divided by 2.1. Determine where code and data will go in memory.Code at $1000, data at $2000.2. Determine type of variables to use.Because data will be between 0 and 255, can use unsigned 8-bit numbers.3. Draw a picture of the data structures in memory:4. Strategy: Because we are using a table of data, we will need pointers to each table so we can keep track of which table element we are working on.Use the X and Y registers as pointers to the tables.5. Use a simple flow chart to plan structure of program.6. Need a way to determine when we reach the end of the table.One way: Use a counter (say, register A) to keep track of how manyElements we have processed.7. Add code to implement blocks:8. Write program:; Program to divide a table by two; and store the results in memoryprog: equ $1000data: equ $2000count: equ 5org prog ;set program counter to 0x1000ldaa #count ;Use A as counterldx #table1 ;Use X as data pointer to table1ldy #table2 ;Use Y as data pointer to table2l1: ldab 0,x ;Get entry from table1lsrb ;Divide by two (unsigned)stab 0,y ;Save in table2inx ;Increment table1 pointeriny ;Increment table2 pointerdeca ;Decrement counterbne l1 ;counter != 0 => more entries to divideswi ;Doneorg datatable1: dc.b $07,$c2,$3a,$68,$F3table2: ds.b count9. Advanced: Optimize program to make use of instructions set efficiencies:; Program to divide a table by two; and store the results in memoryprog: equ $1000data: equ $2000count: equ 5org prog ;set program counter to 0x1000ldaa #count ;Use B as counterldx #table1 ;Use X as data pointer to table1ldy #table2 ;Use Y as data pointer to table2l1: ldab 1,x+ ;Get entry from table1; then inc pointerlsrb ;Divide by two (unsigned)stab 1,y+ ;Save in table2; then inc pointerdbne a,l1 ;Decrement counter; if not 0, more to doswi ;Doneorg datatable1: dc.b $07,$c2,$3a,$68,$F3table2: ds.b countTOP-DOWN PROGRAM DESIGN• PLAN DATA STRUCTURES IN MEMORY• START WITH A LARGE PICTURE OF PROGRAM STRUCTURE• WORK DOWN TO MORE DETAILED STRUCTURE• TRANSLATE STRUCTURE INTO CODE• OPTIMIZE FOR EFFICENCY —DO NOT SACRIFICE CLARITY FOR


View Full Document

NMT EE 308 - Lecture Notes

Documents in this Course
Load more
Download Lecture Notes
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Lecture Notes and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Lecture Notes 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?