The following is an assembly program.
CODE SEGMENT
START: MOV AX, DATA
MOV DS, AX
MOV CX, 3
MOV SI, OFFSET ARRAY
ITER: MOV AX, [SI]
XCHG AH, AL
ROL AX, 1
INC SI
AND [SI], AX
LOOP ITER
ENDS
DATA SEGMENT
DB 6 DUP (0)
ARRAY DB 0B9H,8BH,01H,70H,02H,06H,34H,0CH
ENDS
END START
Enter the above program in emu8086, obtain the list file and single step the program, to complete tasks and answer questions below.
- Fill in the blanks in the following table after each instruction is executed for the first run of the ITER loop:
Run 1 | AX | CX | SI | 8-bit data in DS:SI | 8-bit data in DS:SI+1 |
MOV AX, [SI] | |||||
XCHG AH, AL | |||||
ROL AX, 1 | |||||
INC SI | |||||
AND [SI], AX | |||||
LOOP ITER |
The data of the 8 memory locations starting from ARRAY at the end of Run 1:
What is the function of ROL? Use the numbers in ROL AX,1 to explain.
What is the function of AND?
- Fill in the blanks in the following table after each instruction is executed for the second run of the ITER loop:
Run 2 | AX | CX | SI | 8-bit data in DS:SI | 8-bit data in DS:SI+1 |
MOV AX, [SI] | |||||
XCHG AH, AL | |||||
ROL AX, 1 | |||||
INC SI | |||||
AND [SI], AX | |||||
LOOP ITER |
The data of the 8 memory locations starting from ARRAY at the end of Run 2:
What are the final values of them after the execution of the program? Explanation and screenshot are required.
- If the data transferred into CX is 6, how many times will the LOOP instruction execute?
Write an equivalent instruction to MOV AX,DATA using array.