// y = 8; // z = 15; // for( x =0; x < 25; x++) // { // if( (z-y) < 0) // { // z--; // } // else // { // y++; // if( x % 2 == 0) // { // y++; // } // } // } // y = 16; z = -5 at the end .data A: WORD -1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1 .text MOV R0, #8 // put constant 8 in reg 0 MOV R1, #1 // put constant 1 in reg 1 MOV R2, #15 MOV R3, #26 // stop condition of loop MOV R5, #1 // loop value MOV R6, 0 loop: SUB R4, R0, R2 JMPN R4, else // if z > y go to the else SUB R2, R2, R1 // drop the value of R2 JMPN R6, skip // always skip else: ADD R0, R0, R1 // increment y MOVR R4, R5, @A // load d[x] JMPZ R4, skip // if loop iteration is even ADD R0, R0, R1 // increment y skip: ADD R5, R5, R1 // increment count for loop SUB R4, R5, R3 // check to see if loop condition met JMPN R4, loop // jump to loop END