答:8086为16位微处理器,可访问1M字节的存储器空间;1M字节的存储器分为两个512K字节的存储体,分别命名为偶存储体和奇存储体;偶体的数据线连接D7~D0,“体选”信号接地址线A0;奇体的数据线连接D15~D8,“体选”信号接BHE信号;A0信号有效时允许访问偶体中的低字节存储单元,BHE信号有效时允许访问奇体中的高字节存储单元,实现8086的低字节访问、高字节访问及字访问。
24.有一个由20个字组成的数据区,其起始地址为610AH:1CE7H。试写出该数据区首末单元的实际地址PA。
首单元地址:610A0H+1CE7H=62D87H 末单元地址:62D87H+27H=62DAEH
25.有两个16位的字31DAH、5E7FH,它们在8086系统存储器中的地址为00130H和00135H,试画出它们的存储器示意图。
地址 00130H 00131H 00132H 00133H 00134H 00135H 00136H
内容 0DAH 31H 7F 5E
26.试说明8086CPU的控制引脚ALE的作用。
答:8086的低位地址线与数据线复用,为保证地址线维持足够的时间,需使用ALE信号将低位地址线通过锁存器保存,以形成系统地址总线。
第三章 80x86指令系统
习题与答案
1、指出下列指令中操作数的寻址方式(8086系统)。
(1) MOV AX,100 (2) MOV AX,[100] (3) MOV DL,[BP+SI] (4) MOV [BX],CX (5) MOV DX,[SI] (6) MOV 1234H[BX],DS (7) MOV [DI+5678H],AL (8) MOV 12[BP][DI],BH (9) POP CX (10)MOV AX,[BX+SI+10] 解: (1) MOV AX,100 (2) MOV AX,[100] (3) MOV DL,[BP+SI] (4) MOV [BX],CX (5) MOV DX,[SI] 目的操作数 寄存器寻址 寄存器寻址 寄存器寻址 源操作数 立即数寻址 直接寻址 基址变址寻址 寄存器间接寻址 寄存器寻址 寄存器寻址 寄存器间接寻址 (6) MOV 1234H[BX],DS 寄存器相对寻址 寄存器寻址 (7) MOV [DI+5678H],AL 寄存器相对寻址 寄存器寻址 (8) MOV 12[BP][DI],BH 相对基址变址寻址 寄存器寻址 (9) POP CX 隐含为堆栈 寄存器寻址 相对基址变址寻址 (10)MOV AX,[BX+SI+10] 寄存器寻址
2、指出下列指令中操作数的寻址方式(80386系统)。
(1) MOV [EBX+12H],AX (2) MOV [EBP+EDI*2],EBX (3) MOV [EBX*4],BX (4) MOV EDX,[EAX+ESI*8-12H] 解:
目的操作数 源操作数 (1)寄存器相对寻址 寄存器寻址 (2)基址比例变址寻址 寄存器寻址 (3)比例变址寻址 寄存器寻址 (4)寄存器寻址 3、指出以下指令中,哪些指令是非法的,并说明为什么(8086系统)。
(1) PUSH 1234H (2) MOV CS,AX (3) IN AX, 300 (4) MOV AX,[DX+12] (5) MOV BX,[BX] (6) MOV DS,1000H (7) XCHG AL,AL (8) MOV AL,100H (9) MOV DX,AL (10)LEA BL,[BX+5] (11)LEA DX,BX (12)MOV [1000H],12H (13)ADD AX,DS (14)SUB [0100H],BYTE PTR [0001]
(15)SHL BL,2 (16)SHR CL,CL (17)MUL AL,BL (18)INT 400
解:(1)非法,8086系统不允许PUSH指令的操作数为立即数; (2)非法,MOV指令中CS不能作为目的操作数; (3)非法,端口号大于0FFH; (4)非法,DX不能出现在中括号[]内; (5)合法;
(6)非法,不能把立即数赋给段寄存器; (7)合法;
(8)非法,源操作数大于0FFH,不能赋给8位寄存器AL;
(9)非法,源操作数是8位寄存器,目的操作数却是16位寄存器,不匹配;
相对基址比例变址寻址 (10)非法,LEA指令得到的是16位偏移量,但目的操作数是8位寄存器; (11)非法,LEA指令的源操作数只能是存储器操作数; (12)非法,指令存在歧义,无法确定传送的是字节还是字; (13)非法,段寄存器不能参与算术运算;
(14)非法,源和目的寄存器不能同为存储器操作数;
(15)非法,在8086系统中,移位次数大于1时需要将移位次数存放到CL中; (16)合法;
(17)非法,在8086系统中MUL指令没有双操作数的用法; (18)非法,中断类型号大于0FFH。
4、指出以下指令中,哪些指令是非法的,并说明为什么(80386系统)。 (1) MOV AX,12[EBX][SI*16] (2) RCR EAX,10
(3) PUSH 5678H (4) POP 1000H (5) MOV [EAX+EAX],EAX (6) MOV AL,[ESP+ESP*2] (7) MOV BL,[AX+12] (8) IMUL AL,BL,12
解:(1)非法,比例因子只能是1、2、4、8,不能是16; (2)合法; (3)合法;
(4)非法,POP指令的目的操作数不能是立即数; (5)合法;
(6)非法,ESP只能作为基址寄存器,不能作为变址寄存器;
(7)非法,在386系统中AX不能作为基址寄存器,也不能作为变址寄存器; (8)合法。
5、假设(AX)=1234H,(BX)=5678H,(SP)=1000H,指出执行下面的程序段后,各相关寄存器及堆栈段中的内容。
PUSH AX ;(AX)=?,(BX)=?,(SP)=?,栈顶字节[SP]=?, 栈顶第二字节[SP+1]=?