Presentation is loading. Please wait.

Presentation is loading. Please wait.

LC-3 Control Structures

Similar presentations


Presentation on theme: "LC-3 Control Structures"— Presentation transcript:

1 LC-3 Control Structures
if, else if, while, for, switch

2 If statement Other cases ;if (R1 == R2) ; becomes ;if (R1 < R2)
; if (R1 - R2 != 0) skip code block if true IFLABEL NOT R3, R2 ;2’s complement ADD R3, R3, #1 ;2’s complement ADD R3, R1, R3 ; evaluate expression BR?? ENDIFLABEL ; test condition ;{ ; if code block ;} ENDIFLABEL Other cases ;if (R1 < R2) ; if (R1 - R2 ? 0) skip code block if true; BR?? ENDIFLABEL ; evaluate NZP bits ;what is the BRxxx to evaluate NZP condition? ;if (R1 > R2) ; if (R1 - R2 ? 0) skip code block if true BR?? ENDIFLABEL ; evaluate NZP bits; what does the “?” do in the statement “R1 - R2 ? 0”

3 IF - ELSEIF C Code: if (R1 == R2) { //if code block }
else if ( R1 > R2 ) { // else if code block else { // else code block Assembly Code: IF ; evaluate R3 <- R2 - R1 to set condition BR?? ELIF ;{ if code block } BRNZP ENDIF ELIF BR?? ELSE ;{ else if code block } ELSE ;{ else code block } ENDIF What if the evaluation statements are unrelated? i.e. if (R1 == R2) ; do something elseif (R1== R3) ; do something different else ; do something else endif

4 WHILE LOOP C code: GETC; while ( R0 != ‘\r’) { //loop code block; }
Assembly Code: GETC ;start of while loop WHILE ADD R1, R0, #-10 ; R1 = R0 + #-10 BR? ENDWHILE ; test loop condition ;{ start of loop body ;loop code block ;} end of loop body BRnzp WHILE ENDWHILE

5 DO WHILE LOOP C code: do { // loop code block GETC;
} while ( R0 != ‘\r’); Assembly Code: DO ;{ start of loop ;loop code block GETC ;} end of loop AND R1, R0, #-10 ; set condition BR?? DO ;test loop condition ENDLOOP ;label not needed

6 FOR LOOP YOUR TURN C code: //for (init, test, next)
for (R1 = -10, R1 > 0, R1--) { //start of loop body //loop code block } //end of loop body Assembly Code: YOUR TURN

7 FOR LOOP C code: //for (init, test, next)
for (R1 = 10, R1 > 0, R1--) { //start of loop body //loop code block } //end of loop body Assembly Code: FOR AND R1, R1, #0 ; clear R1 ADD R1, R1, #10 ; init statement FORLOOP BR? ENDFOR ; test loop condition ;{ start of loop body ;loop code block ;} end of loop body ADD R1, R1, #-1 ; decrement loop index BRnzp FORLOOP ENDFOR

8 SWITCH STATEMENT YOUR TURN C Code: switch (R1) { CASE ‘0’:
; case 0 code block ;break CASE ‘1’: ; case 1 code block CASE ‘2’: ; case 2 code block Default: ; default case code block } Assembly Code: YOUR TURN

9 SWITCH STATEMENT Solution #1
Assembly Code: SWITCH ;Evaluate Test condition Case 0 BRz CASE_0 ;Evaluate Test condition Case 1 BRz CASE_1 ;Evaluate Test condition Case 2 BRz CASE_2 BRnzp DEFAULT CASE_0 ;Code block ;Code block BRnzp ENDSW CASE_1 CASE_2 DEFAULT ENDSW NOT A SOLUTION!!! WHY WONT THIS WORK?

10 SWITCH STATEMENT Solution #2
Assembly Code: SWITCH CASE0 ; ;Evaluate Test condition Case 0 BRnp CASE1 ;Code block BRnzp ENDSW CASE1 ; ;Evaluate Test condition Case 1 BRnp CASE2 CASE2 ; ;Evaluate Test condition Case 2 BRnp DEFAULT DEFAULT ENDSW


Download ppt "LC-3 Control Structures"

Similar presentations


Ads by Google