Use the following data declarations. Assume that the offset of byteVal is 0000:
.data byteVal db 1,2,3,4 wordVal dw 1000h,2000h,3000h,4000h dwordVal dd 12345678h,34567890h aString db "ABCDEFG",0 pntr dw wordVal
1. Indicate whether or not each of the following instructions is valid:
(notate: V = valid, I = invalid)
a. |
mov ax,byteVal[si] |
I (operand size mismatch) |
||
b. |
add dx,[cx+wordVal] |
I (CX is not a base or index register) |
||
c. |
mov ecx,[edi+dwordVal] |
V |
||
d. |
xchg al,[bx] |
V |
||
e. |
mov ax,[bx+4] |
V |
||
f. |
mov [bx],[si] |
I (memory to memory not permitted) |
||
g. |
xchg al,byteVal[dx] |
I (DX is not a base or index register) |
2. Indicate the hexadecimal value of the final destination operand after each of the following code fragments has executed:
(If any instruction is invalid, indicate "I" as the answer.)
a. |
mov si,offset byteVal mov al,[si+1] |
2 |
||
b. |
mov di,6 mov dx,wordVal[di] |
4000h |
||
c. |
mov bx,4 mov ecx,[bx+dwordVal] |
34567890h |
||
d. |
mov si,offset aString mov al,byteVal+1 mov [si],al |
2 |
||
e. |
mov si,offset aString+2 inc byte ptr [si] |
44h('D') |
||
f. |
mov bx,pntr add word ptr [bx],2 |
1002h |
||
g. |
mov di,offset pntr mov si,[di] mov ax,[si+2] |
2000h |
3. Indicate the hexadecimal value of the final destination operand after each of the following code fragments has executed:
(If any instruction is invalid, indicate "I" as the answer.)
a. |
xchg si,pntr xchg [si],wordVal |
I (memory to memory not permitted) |
||
b. |
mov ax,pntr xchg ax,si mov dx,[si+4] |
dx = 3000h |
||
c. |
mov edi,0 mov di,pntr add edi,8 mov eax,[edi] |
12345678h |
||
d. |
mov esi,offset aString xchg esi,pntr mov dl,[esi] |
I (esi and pntr have different sizes) |
||
e. |
mov esi,offset aString mov dl,[esi+2] |
43h ('C') |