$20.99
1. Single step through the program created in the previous assignment (HW3)—the AddSub Program. Submit a trace of screenshots single stepping through each line of the program.
2. Declare whether each flag is set (‘1’ for set, ‘0’ for not set) following each instruction. Show the function of the instructions by hand.
Instruction #
Instruction
CF
SF
ZF
OF
0
mov ax, 7F00h
1
add ax, 100h
2
add al, 0h
3
add al, 0FFh
4
sub ah, 080h
3. Given the following data declarations:
.data
Alpha BYTE 2Bh, 23h, 4Ah
Beta DWORD 222h
Delta DWORD 312h
Iota DWORD 434h
Zeta WORD 124h
A. Write an instruction that moves Beta into EAX and adds Iota to the same register
B. Write a set of instructions that adds all the elements of the array Alpha into AL
C. Write a set of instructions that moves Delta into EAX, adds the value stored in Zeta to the same register
D. Write an instruction that moves the last two bytes in ALPHA into CX.
E. What are the contents of CX subsequent to part D of this question?
4. Fill in the requested register values after executions of the instructions:
Show the memory map.
.data
myBytes BYTE 24h, 25h, 26h, 27h
myWords WORD 2233h, 3355h, 3456h, AACCh, BCCBh
myDoubles DWORD BB00h, 2345h, 3456h, AB71h, 44h
myPointer DWORD myDoubles
.code
mov esi, OFFSET myBytes
mov ax, WORD PTR [esi+2] ; A. AX =
mov eax, DWORD PTR myWords ; B. EAX =
mov esi, myPointer
mov ax, WORD PTR [esi+8] ; C. AX =
mov ax, WORD PTR [esi+1] ; D. AX =
mov ax, WORD PTR [esi-6] ; E. AX =
5. What is returned by the following operations in connection to the given array:
.data
myArray DWORD 12 DUP(23), 3, 34, 467 , 2365, 47899
A. TYPE myArray
B. LENGTHOF myArray
C. SIZEOF myArray
6. Fill in the requested register values after executions of the instructions (Do not let your eyes deceive you. There are some movSx instructions and some movZx instructions.):
.code
mov bx, 0ACD8h
movzx eax, bx ; A. EAX =
movzx edx, bl ; B. EDX =
movzx cx, bh ; C. CX =
mov bx, 0DD34h
movsx eax, bx ; D. EAX =
movsx edx, bl ; E. EDX =
movsx cx, bh ; F. CX =