Indirect and Indexed Operands

This topic covers the MOV instruction, applied to indirect, based, and indexed memory operands. Click here to view the answers.

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]
  
b.
add  dx,[cx+wordVal]
  
c.
mov  ecx,[edi+dwordVal]
  
d.
xchg al,[bx]
  
e.
mov  ax,[bx+4]
  
f.
mov  [bx],[si]
  
g.
xchg al,byteVal[dx]

 

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]
  
b.
mov di,6
mov dx,wordVal[di]
  
c.
mov bx,4
mov ecx,[bx+dwordVal]
  
d.
mov si,offset aString
mov al,byteVal+1
mov [si],al
  
e.
mov si,offset aString+2
inc byte ptr [si]
  
f.
mov bx,pntr
add word ptr [bx],2
  
g.
mov di,offset pntr
mov si,[di]
mov ax,[si+2]

 

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
  
b.
mov  ax,pntr
xchg ax,si
mov  dx,[si+4]
  
c.
mov edi,0
mov di,pntr
add edi,8
mov eax,[edi]
  
d.
mov esi,offset aString
xchg esi,pntr
mov  dl,[esi]
  
e.
mov esi,offset aString
mov dl,[esi+2]