第三章80x86指令系统
3-1 指令由操作码字段和操作数字段组成。8086的指令长度在1~6字节范围。
3-2 分别指出下列指令中源操作数和目的操作数的寻址方式。若是存储器寻址,使用表达
式表示出EA=? PA=?
MOV SI, 2100H(2) MOV CX, DISP[BX] (3) MOV [SI], AX
ADC ZX, [BX][SI] (5) AND AX, DX (6) MOV AX, [BX+10H]
(7) MOV AX, ES:[BX] (8)MOV AX, [BX+SI+20H] (9) MOV [BP], CX
PUSH DS
解:
源操作数寻址
目的操作数寻址
EA
PA
1) MOV SI, 2100H
立即数寻址
寄存器
—
—
(2) MOV CX, DISP[BX]
寄存器相对寻址
寄存器
[BX+SISP]
(DS)*16+(BX+DISP)
(3) MOV [SI], AX
寄存器寻址
寄存器间接
[SI[
(DS)*16+(SI)
(4) ADC ZX, [BX][SI]
基址变址寻址
寄存器
[BX+SI]
(DS)*16+(BX)+(SI)
(5) AND AX, DX
寄存器寻址
寄存器
—
—
(6) MOV AX, [BX+10H]
寄存器相对寻址
寄存器
[BX+DISP]
(DS)*16+(BX)+10H
(7) MOV AX, ES:[BX]
带段超越寄存器寻址
寄存器
[BX]
(ES)*16+(BX)
(8)MOV AX, [BX+SI+20H]
相对基址变址寻址
寄存器
[BX+SI+20H]
(DS)*16+(BX)+(SI)+2
0H
(9) MOV [BP], CX
寄存器寻址
寄存器间接
[BP]
(SS)*16+(BP)
(10) PUSH DS
固定寻址
寄存器
[SP]
(SS)*16+(SP)
3-3 已知8086中一些寄存器的内容和一些存储器单元的内容如图3-1所示,试指出下列各
条指令执行后,AX中的内容。
(1) MOV AX, 2010H(2) MOV AX, BX (3) MOV AX, [1200H]
(4) MOV AX, [BX] (5) MOV AX, 1100H[BX](6) MOV AX, [BX][SI]
(7) MOV AX, 1100H[BX+SI] (8) MOVLEA AX, [SI]
解:(
解:(1)(AX) =2010H( 2)(AX)=0100H
(3)( AX =4C2AH ( 4)( AX =3412H
( AX) =4C2AH (
( AX) =4C2AH ( 6)( AX) =7856H
(7)( AX) =65B7H( 8)( AX =0002H
M
30100H
12H
30101H
34H
30102H
56H
30103H
78H
31200H
2AH
31201H
4CH
31202H
B7H
31203H
65H
CPUBX0100H
CPU
BX
0100H
SI
0002H
DS
3000H
3-4 已知(AX)=2040H,(DX)=380H,端口(PORT)=(80H)=1FH, (PORT+1)=45H执行下列指令
后,指出结果等于多少?
解:
OUT DX, AL
OUT DX, AX ⑶ IN AL, PORT
⑷IN AX, 80H
(0380H)=40H
(380H)=40H (381h)=20H
(AL)=1FH
(AX)=451FH
OUT PORT1, AL(PORT1)=40H
OUT PORT1, AX(PORT1)=2O4OH
3-5 已知:(SS)=0A2F0H,(SP)=00C0H,(AX)=8B31H,(CX)=0F213, 试画出下列指令执行到位置
1和位置2时堆栈区和SP指针内容的变化示意图。图中应标出存储单元的实际地址PA
PUSH AX
PUSH CX ;位置 1
POPF;位置2
解:已知(SS)=0A2F0H,指令顺序依次编号为①、②、,示意图如图所示:
(SS)=0A2F0H
0A2FBCH
13H
J②(SP)-4=00BCH (位置 1)
F2H
0A2FBEH
31H
SP) -2=00BEH ③(SP)+2=00BCH +0002H=00BEH (位置 2)
8BH
0A2FC0H
(SP) =00C0H
3-6 识别下列指令的正确性,对错误的指令,说明出错的原因。
MOV DS, 100MOV [1000H], 23HMOV [1000H],[2000H]
MOV DS, 100
MOV [1000H], 23H
MOV [1000H],[2000H]
MOV DATA, 1133H
MOV 1020H,