14.8086可屏蔽中断请求输入线是什么?“可屏蔽”的涵义是什么?
15.中断向量表的功能是什么?已知中断类型码分别是84H和0FAH,它们的中断向量应
放在中断向量表的什么位置?
答:中断向量是指中断服务程序入口地址的偏移量与段基值,一个中断向量占据4字节空间。中断向量表是8088系统内存中最低端1K字节空间,它的作用就是按照中断类型号从小到大的顺序存储对应的中断向量,总共存储256个中断向量。在中断响应过程中,CPU通过从接口电路获取的中断类型号(中断向量号)计算对应中断向量在表中的位置,并从中断向量表中获取中断向量,将程序流程转向中断服务程序的入口地址。 84H是它的I/O地址代表它的中断类型是21即为dos系统功能调用 FAH应为0FAH,即DOS系统功能调用中的打开文件(FCB)功能
调用参数DS:DX=FCB首地址 返回参数AL=00文件找到AL=FF文件未找到 16.简述在最小工作模式下,8086如何响应一个总线请求?
17. 在基于8086的微计算机系统中,存储器是如何组织的?是如何与处理器总线连接
的?BHE#信号起什么作用? 18.“80386是一个32位微处理器”,这句话的涵义主要指的是什么? 19.80X86系列微处理器采取与先前的微处理器兼容的技术路线,有什么好处?有什么不
足?
20.80386内部结构由哪几部分组成?简述各部分的作用。 21.80386有几种存储器管理模式?都是什么?
22.在不同的存储器管理模式下,80386的段寄存器的作用是什么?
23.试说明虚拟存储器的含义,它与物理存储器有什么区别?80386虚拟地址空间有多
大?
第3章 指 令 系 统
1. 简要分析8086的指令格式由哪些部分组成,什么是操作码?什么是操作数?寻址和
寻址方式的含义是什么?8086指令系统有哪些寻址方式? 答:8086的指令格式由操作码和操作数字段组成。 操作码:要完成的操作。 操作数:参与操作的对象。
寻址:寻找操作数或操作数地址的过程。
寻址方式:指令中给出的找到操作数或操作数地址采用的方式。 8086指令系统的寻址方式主要有立即数寻址、寄存器寻址、存储器寻址和I/O端口寻址,存储器寻址可进一步分为直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、
第 5 页 共 27 页
相对基址变址寻址;I/O端口指令IN和OUT使用的端口寻址方式有直接寻址和间接寻址。 2. 设(DS)=2000H,(ES)= 2100H,(SS)= 1500H,(SI)= 00A0H,(BX)= 0100H,(BP)= 0010H,
数据变量VAL的偏移地址为0050H,请指出下列指令的源操作数字段是什么寻址方式?它的物理地址是多少?
(1) MOV AX,21H (2) MOV AX,BX (3) MOV AX,[1000H] (4) MOV AX,VAL (5) MOV AX,[BX] (6) MOV AX,ES:[BX] (7) MOV AX,[BP] (8) MOV AX,[SI] (9) MOV AX,[BX+10] (10) MOV AX,VAL[BX]
(11) MOV AX,[BX][SI] (12) MOV AX,VAL[BX][SI] 解:(1)MOV AX,21H
立即寻址,源操作数直接放在指令中 (2)MOV AX,BX
寄存器寻址,源操作数放在寄存器BX中 (3)MOV AX,[1000H]
直接寻址,EA = 1000H,PA =(DS)×10H+EA = 2000H×10H+1000H = 21000H (4)MOV AX,VAL 直接寻址,EA = [VAL] = 0050H,PA =(DS)×10H+EA = 2000H×10H+0050H = 20050H (5)MOV AX,[BX]
寄存器间接寻址,EA =(BX)= 0100H,PA =(DS)×10H+EA = 2000H×10H+0100H = 20100H
(6)MOV AX,ES:[BX]
寄存器间接寻址,EA =(BX)= 0100H,PA =(ES)×10H+EA = 2100H×10H+0100H = 21100H
(7)MOV AX,[BP]
寄存器间接寻址,EA =(BP)= 0010H,PA =(SS)×10H+EA = 1500H×10H+0010H = 15010H
(8)MOV AX,[SI]
寄存器间接寻址,EA =(SI)= 00A0H,PA =(DS)×10H+EA = 2000H×10H+00A0H = 200A0H
(9)MOV AX,[BX+10]
寄存器相对寻址,EA =(BX)+10D = 0100H+000AH= 010AH,PA =(DS)×10H+EA = 2000H×10H+010AH = 2010AH (10)MOV AX,VAL[BX]
寄存器相对寻址,EA =(BX)+[VAL]= 0100H+0050H= 0150H,PA =(DS)×10H+EA = 2000H×10H+0150H = 20150H (11)MOV AX,[BX][SI]
第 6 页 共 27 页
基址变址寻址,EA = (BX)+(SI)= 0100H+00A0H = 01A0H,PA = (DS)×10H+EA = 2000H×10H+01A0H = 201A0H (12)MOV AX,VAL[BX][SI]
基址变址相对寻址,EA = (BX)+(SI)+[VAL]= 0100H+00A0H+0050H = 01F0H,PA =(DS)×10H+EA = 2000H×10H+01F0H = 201F0H
3. 给定寄存器及存储单元的内容为:(DS) = 2000H,(BX) = 0100H,(SI) = 0002H,(20100) =32H,(20101)=51H,(20102) =26H,(20103)= 83H,(21200)=1AH,(21201)=B6H,(21202)=D1H,(21203)=29H。试说明下列各条指令执行完后,AX寄存器中保存的内容是什么。
(1) MOV AX,1200H (2) MOV AX,BX (3) MOV AX,[1200H] (4) MOV AX,[BX] (5) MOV AX,1100H[BX] (6) MOV AX,[BX][SI] 解:(1)MOV AX,1200H 执行后,(AX)= 1200H (2)MOV AX,BX 执行后,(AX)= (BX)= 0100H (3)MOV AX,[1200H] 直接寻址,EA = [VAL] = 1200H,PA =(DS)×10H+EA = 2000H×10H+1200H = 21200H,执行后,(AX)= B61AH (4)MOV AX,[BX]
EA = (BX)= 0100H,PA =(DS)×10H+EA = 2000H×10H+0100H = 20100H,执行后,(AX)= 5132H
(5)MOV AX,1100H[BX]
EA =(BX)+1100H = 0100H+1100H = 1200H,PA =(DS)×10H+EA = 2000H×10H+1200H = 21200H,执行后,(AX)= B61AH (6)MOV AX,[BX][SI]
EA =(BX)+(SI)= 0100H+0002H = 0102H,PA =(DS)×10H+EA = 2000H×10H+0102H = 20102H,执行后,(AX)= 29D1H
4. 试说明指令MOV BX,10H[BX]与指令LEA BX,10H[BX]的区别。
答:前者是数据传送类指令,表示将数据段中以(BX+10H)为偏移地址的16位数据送寄存器BX.;后者是取偏移地址指令,执行的结果是(BX)= (BX)+10H,即操作数的偏移地址为(BX)+10H。
5. 假设(DS)=3000H,(CS)=1000H,(IP)=1500H,(BX)=1000H,位移量大DATA=50H
(31000H)=1250H,(31050H)=2400H,(31052H)=6000H。确定下列转移指令的转移地址。 (1)JMP 2500H (2) JMP BX
(3)JMP WORD PTR[BX] (4) JMP DWORD PTR[BX+DATA] 解:(1)JMP 2500H
第 7 页 共 27 页
(IP)=2500H (2) JMP BX
(IP)=(BX)=1000H (3)JMP WORD PTR[BX]
物理地址=(DS)*10H+(BX)=3000H*10H+1000H=31000H,所以(IP)=1250H
(4) JMP DWORD PTR[BX+DATA] 物理地址=(DS)*10H+(BX)+(DATA)=3000H*10H+1000H+50H=31050H,所以(IP)=2400H 6. 设堆栈指针SP的初值为2500H, (AX)=1234H,(BX)=5678H。执行指令PUSH AX后,
(SP)=?,再执行指令PUSH BX及POP AX之后,(SP)=? (AX)=? (BX)=? 解:堆栈指针SP总是指向栈顶,每执行一次PUSH指令SP-2,执行一次POP指令SP+2.所以,执行PUSH AX指令后,(SP)=24FEH;再执行PUSH BX及POP AX后,(SP)=24FEH,(AX)=(BX)=5678H
7. 分析下列指令的正误,对于错误的指令要说明原因并加以改正。 (1) MOV AH,BX (2) MOV [BX],[SI]
(3) MOV AX,[SI][DI] (4) MOV MYDAT[BX][SI],ES:AX (5) MOV BYTE PTR[BX],1000 (6) MOV BX,OFFSET MAYDAT[SI] (7) MOV CS,AX (8) MOV DS,BP 解:(1) MOV AH,BX
错误,寄存器类型不匹配,可改为MOV AX,BX (2) MOV [BX],[SI]
错误,两个操作数不能都为存储单元,可改为MOV BX,[SI]或MOV [BX],SI (3) MOV AX,[SI][DI]
错误,寻址方式中只能出现一个变址寄存器,可改为MOV AX,[BX][DI]。 (4) MOV MYDAT[BX][SI],ES:AX
错误,AX前不能有段跨越前缀,去掉ES:,改为MOV MYDAT[BX][SI],AX (5) MOV BYTE PTR[BX],1000 错误,1000超出字节空间存储范围 (6) MOV BX,OFFSET MAYDAT[SI] 正确
(7) MOV CS,AX
错误,MOV指令CS不能做目的操作数,可改为MOV DS,AX (8) MOV DS,BP 正确
注:本题错误改正部分有的答案并不唯一,可参考原题题意改成合法形式。 8. 设VAR1、VAR2为字变量,LAB为标号,分析下列指令的错误之处并加以改正。 (1) ADD VAR1,VAR2 (2) MOV AL,VAR2 (3) SUB AL,VAR1 (4) JMP LAB[SI]
第 8 页 共 27 页