2-1下面的MOV指令完成什么操作?
(a)MOV AX,BX; 把BX的内容移动到AX中
(c)MOV BL,CH; 把CH的内容移动到BL中
2-2 列出寄存器寻址使用的8位寄存器
答:AH、AL、BH、BL、CH、CL、DH和DL
2-3列出寄存器寻址使用的16位寄存器
答:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器。
2-6 指令MOV BL,CX 错在哪里?
答:BL和CX的位数不一致。
2-7 指令MOV DS,SS 错在哪里?
答:两个寄存器之间是不能直接传送数据的。
2-13 指令 MOV [BX],[DL] 错在哪里
答:目标操作数寻址方式错误。
2-17给定DS=1200H,BX=0100H和SI=0250H。假定按实模式操作,确定下面每条指令寻址的地址:
(a)MOV [100H],DL; 12100H
(c)MOV DL,[BX+100H]; 12200H
2-18 给定DS=1100H,BX=0200H,LIST=0250和SI=0500H。假定按实模式操作,确定下面每条指令寻址的地址:
(b) MOV CL,LIST[BX+SI]; 11950H
2-19 给定DS=1300H,SS=1400H,BP=1500H和SI=0100H。假定按实模式操作,确定下面每条指令寻址的地址:
(b) MOV AL,[BP+SI+200H]; 14800H
2-20 哪些基址寄存器可以寻址堆栈段的数据?
答:SP ,SS
3.1 给出(BX)=637DH,(SI)=2A9BH,偏移量D=7237H,尝试指出下列每一种寻址模式的有效地址。
(1) 立即寻址;
(2) 直接寻址
(3) 用BX的寄存器寻址;
(4) 用BX的寄存器间接寻址;
(5) 用BX的寄存器相对寻址;
(6) 基址变址寻
(7)相对基址变址寻
答案:
(1)无
(2)EA=7237H
(3)无
(4)EA=637DH
(5)EA=D+[BX]=7237H+637DH=0D5B4H
(6)EA=[BX]+[SI]=637DH+2A9BH=8E18H
(7)EA=D+[BX]+[SI]=7237H+637DH+2A9BH=1004FH
3.2 根据下列要求, 写出相关的汇编语言指令。
(1) 把BX 的内容和DX 的内容相加,结果放入DX 中。
(2) 把AL的内容加上内存地址的内容,并把结果放到AL中。内存地址由BX和SI进行基址变址寻址所得。
(3)把CX的内容加上内存地址的一个字,并把结果放到内存地址中。内存地址由BX和偏移量0B2H进行寄存器相对寻址所得。
(4) 把内存地址的内容与数2A59H相加,并把结果放入内存地址。内存地址由偏移量0524H进行直接寻址所得。
(5) 把数值0B5H 与AL 寄存器的内容相加, 结果放入AL寄存器。
答案:
(1)ADD DX, BX
(2)ADD AL, BX[SI]
(3)ADD WORD PTR 0B2H [BX], CX
(4)ADD WORD PTR [0524H], 2A59H
(5)ADD AL,0B5H
3.3 写出指令,把首址是BLOCK的字数组中的第六个字移入DX寄存器。使用如下的寻址方式。
(1) 寄存器间接寻址
(2) 寄存器相对寻址
(3) 基址变址寻址
答案:
(1) LEA BX, BLOCK+10
MOV DX, WORD PTR [BX]
(2) LEA SI, BLOCK
MOV DX, WORD PTR 0AH[SI]
(3)LEA BX, BLOCK
MOV SI, 0AH
MOV DX, WORD PTR [BX][SI]
3.4 给出(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H, (20101)=34H,(20102)=56H, (20103)=78H, (21200)=2AH,(21201)=4CH,(21202)=B7H, (21203)=65H,
尝试解释:执行指令后,AX寄存器的内容。
(1) MOV AX, 1200H
(3) MOV AX, [1200H]
(5) MOV AX, 1100[BX]
(7) MOV AX, 1100[BX][SI]
答案:
(1) (AX)=1200H
(3)(AX)=4C2AH
(5)(AX)=4C2AH
(7)(AX)=65B7H
3.8 给出(DS)=2000H,(ES)=2100H,(SS)=00A0H,(BX)=0100H,(BP)=0010H,数据段中VAL 的偏移地址是0050H,指出源操作数段得寻址方式和物理地址。
(2) MOV AX, BX
(4) MOV AX, VAL
(6) MOV AX, ES:[BX]
(8) MOV AX, [SI]
(10)MOV AX, VAL[BX]
(12)MOV AX, VAL[BX][SI]
答案:
(2)寄存器寻址
(4)直接寻址,物理地址=20050H
(6)寄存器间接寻址,物理地址=21100H
(8)寄存器间接寻址,物理地址=200A0H
(10)寄存器相对寻址,物理地址=20150H
(12)相对基址变址寻址,物理地址=201F0H
问题:
单选
当执行POP [BX] 和寻找目标操作数时,段地址跟偏移地址是在( B )中。
a. 无段地址也无偏移地址
b.DS 和BX中
c.ES 和 BX中
d.SS 和 SP中
2.下列指令中, 哪个是错的?
a. MOV SS:[BX+DI],1000H
b. MOV DX, 1000H
c. MOV WORD PTR [BX],1000H
d. MOV DS, 2000H
答案:
d. 错误: 立即数到段寄存器
简答:
1. 指出下列的错误:
MOV AH, BX ;操作数大小不同
MOV [BX], [SI] ;出错:内存到内存
MOV AX,[SI] [DI] ;出错: 把[SI][DI]放到一起
MOV MYDAT [BX][SI], ES:AX ; 与2同,
MOV BYTE PTR[BX], 1000 ; 与1同,
MOV BX, OFFSET MYDAT[SI] ;删除[SI]
MOV CS, AX ;出错: CS 是第一操作数
给出DS = 6400h,BX = 0743h, SS=6500H, BP = CA40h, SI = 2100h 和 DI = 04A4h, 而且BETA是一个偏移量为0202h的数据项 (名称/变量), 对于下列每一条指令指出其寻址方式且计算出源操作数和目标操作数的20-位的物理地址:
(i) MOV AL, [BP][SI] 基址变址寻址 72B40H
(ii) MOV [BX + DI + 4],
AX 相对基址变址寻址 64BEBH
(iii) MOV BETA, BL 直接寻址 64202H
(iv) MOV AH, [BP][DI + BETA]
相对基址变址变址 710E6
(v) LODSB 寄存器寻址 66100H