微机原理试卷7及答案
⑥ JNZ NEXT ⑦ JNZ LOPA ⑧ BEGIN
2. MOV AX,1
NEG AL
;AX=(①)H
CBW
;AX=(②)H
ADD AL,AH
;AX=(③)H,CF=(④)
NOT AX
;AX=(⑤)H
解: 00FFH,0FFFFH,0FFFEH,1,0001
3. 已知CF=1, MOV AX,8
(11) MOV CS,AX CS值不能由程序员编程该变
(12) MOV SS,AX
SS值不能由程序员编程该变
(13) SHL AX,3
移位次数大于1,应先将移位次数送CL
5.试分别指出下列各指令语句的语法是否有错,如有错,指明是什么 错误。 MOV [BX][BP],AX TEST [BP],BL ADD SI,ABH AND DH,DL CMP CL,1234H SHR [BX][DI],3 NOT CX,AX LEA DS,35[SI] INC CX,1 PUSH 45[DI] 答:(1)应将BP,BX其中之一该为SI或DI (2)正确 (3)ABH改为0ABH (4)
答:(1)MOV AH,BX AH 为八位,BX为16位 (2)MOV [BX],[SI] 两个操作数不能都是存储单元 (3)MOV AX,[SI][DI] 一个操作数中不能用两个变址寄存器 (4)MOV MYDAT [BX][SI],E8:AX ES ES 后应为一个变址寄存器,表示偏移量 (5)MOV BYTE PTR[BX],1000 BYTE 说明时BX进行字节操作。 而1000为字 (6)MOV BX,OFFSET MYDAT [SI] OFFSET 为取某个地址的偏移量,故后面不应用[SI],而应是一
②
BEGIN:MOV AX,DATA
③
LEA BX,BUF
MOV CYTE PTR 0
⑤
TEST [BX],BYTE PTR 1
⑥
INC AX
NEXT : INC BX
DEC CX
⑦
MOV R,AX
MOV AH,4CH
INT 21H
CODE ENDS
END
⑧
解: 1).【程序一】① AX>=BX ② INC CX 2).【程序二】 ① $-BUF ② ASSUME CS:CODE,DS:DATA ③ MOV DS,AX ④ MOV AX,0 ⑤ JLE NEXT
⑴等待当前指令结束,CPU发出中断响应信号。 ⑵8259A连续(两个总周期)接收到两个INTA 的负脉冲的中断 响应信号,则通过数据总线将中断类型码送CPU,CPU把中断类型码乘4 作为中断矢量表的地址指针。 ⑶CPU保护断点,将状态标志字PSW及当前的CS和IP内容压栈。
⑷清IF和TF标志为0。 ⑸查中断矢量表,取中断处理程序首地址,将其分别置入IP和 CS中,程序转入执行中断处理程序。 非屏蔽中断的响应过程:非屏蔽中断请求在NMI加入,等待当前指 令执行结束,CPU优先响应NMI中断请求,其中断类型码由硬件决定类 型为2,无须从外部引入,其余响应过程与可屏蔽中断相同。 内部中断响应操作:内部中断响应的共同点是: ⑴中断类型码由指令码给定或硬件决定,无须外部逻辑输入; ⑵无INTA 信号响应周期; ⑶不受IF控制; ⑷除单步中断 外,其它内部中断响应优先于外部中断,响应 过程与非屏蔽中断类似。
指令
错误原因
(1) INC [ESI]
目的操作数[ESI]类型不明确
(2) MOV AX,BL
源操作数和目的操作数类型不一致
(3) MOV 2,EAX
常数不能作目的操作数
(4) MOV AX,[DX] DX不能作地址寄存器
(5) MOV AX, 源操作数寻址方式错,两个寄存器都是基址寄存器 [BX+BP]
2).(8分)【程序二说明】从BUF开始的11个单元中存放着11个整数, 找出这11个数中正数并且是偶数的个数存入R中。 【程序二】 DATA SEGMENT BUF DB –2,5,-3,6,100,0,-20,-9,8,-110,21
N= ① R DW ? DATA ENDS
CODE SEGMENT
4. 指出下列指令的错误原因 (1) INC [ESI] (2) MOV AX,BL (3) MOV 2,EAX (4) MOV AX,[DX] (5) MOV AX,[BX+BP] (6) MOV AX,[SI+DI] (7) MOV AH,300 (8) MOV [ESI],[EDI] (9) PUSH AL (10) POP DH (11) MOV CS,AX (12) MOV SS,AX (13) SHL AX,3 解:
7 2 0
5 2 1
3 2 2
余数 → 1 2 3
←商
用减 法实 现除 法示 意图
.MODEL SMALL .386
.STACK .DATA
X DW 7 Y DW 2 .DATA? RESULT DW ? XYMOD DW ? .CODE .STARTUP MOV AX,X MOV BX,Y MOV CX,0 .WHILE _____①____ SUB AX,BX _____②_____ .ENDW MOV RESULT,CX MOV XYMOD,AX .EXIT END
解:
2.设8255A的4个端口地址分别为0C0H、0C1H、0C2H和0C3H,要求用按位 置位/复位控制字使PC6输出方波信号,试编程实现。 解:MOV DX,0C3H
MOV AL,80H OUT DX,AL L1:MOV AL,0CH OUT DX,AL NOP NOP MOV AL,0DH OUT DX,AL NOP NOP JMP L1
(5)是字操作,CL改为CX (6)移位数大于1时,应用CL (7)NOT指令只有一个操作数 (8)LEA指令的源操作数应为一内存单元地址 (9)此指令不用指出1 (10)45改为45H
6. 指出下列指令的错误: (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 MYDAT[SI] (7)MOV CS,AX
3.简述8086CPU对中断的响应和处理过程。 答:8086对各类中断的响应不完全相同,主要区别在于如何获得中断 类型码。
可屏蔽中断的响应过程。首先必须满足中断允许标志IF置1,当没 有内部中断,非屏蔽中断(NMI=0)和总线请求(HOLD=0)时,外设向 中断控制器8259A发出中断请求,经8259A处理,得到相应的中断类型 码,并向CPU申请中断(INTR=1)。
(6) MOV AX,[SI+DI] 源操作数寻址方式错,两个寄存器都是变址寄存器
(7) MOV AH,300
300超出AH允许范围
(8) MOV [ESI],[EDI] 源操作数和目的操作数不能同时为内存单元地址
(9) PUSH AL
入栈的数据必须是一个16或32位数据
(10) POP DH
出栈的数据是一个16或32位数据,DH是8位寄存器
一、简答题(6×8分=48分) 1. 总共用三条不同指令,各自完成BX=0操作。 答:MOV BX,0;XOR BX,BX;AND BX,0000H;SUB BX,BX
2. 什么是逻辑地址?什么是物理地址?如何将逻辑地址转换为物理地 址? 解:逻辑地址是指在程序和指令中使用的一种地址,它包括两部分: 段基地址和偏移地址。段基地址说明每段在主存中的起始位置,它来 自于段寄存器(CS、DS、ES、SS)。偏移地址说明主存单元距离段起始 位置的偏移量。它是一个16位的偏移地址,根据指令的不同,它可以 来自于8086CPU中不同的16位寄存器 IP、SP、BP、SI、DI、BX等。 物理地址是指CPU对存储器进行访问时实际寻址所使用的地址,物理地 址是由段寄存器与偏移地址共同确定的。在实际工作时,从段寄存器 中取出段基址,将其左移4位,再与16位偏移地址相加,就得到了物理 地址,此地址在CPU总线接口部件BIU的20位地址加法器中形成。物理 地址的计算方法为:物理地址=段基地址×16+偏移地址。
个符号地址。 (7)MOV 是数据寻址,不应用程序段寄存器CS.
二、程序题(第一题12分,第二题5分。第三题5分,共22分)
1. 阅读下面的程序,填空。
1).(4分)【程序一说明】用减法实现除法。X是被除数,Y是除数, 处理结束后商存放在RESULT,余数存放在XYMOD。 【程序一】
被除 数 除数 商
;CF=(①)
MOV BL,05H
ADC AL,BL
;AL=(②)H
AAA
;AL=(③)H,AH=(④)H,CF=(⑤)
解: 1,0EH,04H,01H,0
三、设计题(2×15分=30分)
1. 已知Intel 6264 RAM芯片的存储容量为8KB,要求选用5片6264 RAM 芯片接在系统中,地址范围从F0000H开始,选用74LS138三一八译码器 及逻辑门电路,通过全译码方式译码产生片选,试设计出译码电路,并 计算出每个片选的地址范围。