微机原理与接口技术
一、填空(每空1分,共20分)
1.下列各数均为二进制补码:a=00110010B b=01001010B c=11101001B d=10111010B,
试求下列运算的十进制数真值:a+b= d-c-a=
2.设机器字长为8位,写出真值-0010101B表示的二进制数原码、补码和反码。
原码= 补码= 反码=
3.MOV DL,86
ADD DL,0AAH
上述两条指令执行后,标志寄存器中各标志位和DL的值是:
DL CF= OF= AF= SF= ZF=
4.存储器芯片2114的存储量为1024×4,若用2114 构成16KB的存储器,需要片2114。5.设(CS)=4000H,(SS)=6000H,(IP)=200H,则IP所指的物理地址为。
6.设堆栈指针(SP)=0110H,顺序执行下面三条指令后,PUSH AX;PUSH BX;POP AX。SP的内容是。
7.设某程序中数据定义如下:
A DW ?
B DB 2 DUP(0,1)
C DB ‘1234’
D EQU $-A
则,变量D的值是。
其表示的意义是。
8.已知某门电路的I OH=15mA ,I OL=24mA ,它的I IL=0.2mA ,I IH=0.1mA 。若用这样的门可驱动同样的门理论上可驱动个。实际应用时,一般不超过个。
9.8086/8088在最大工作模式中,8086/8088CPU不直接提供用于
等控制信号。
10.在指令MOV AX,ES:[BX]中,采用的是寻址方式。
二、分析程序填空(每空2分,共20分)
1.如果当前(DS)=2000H,(BX)=1000H,(21000H)=0FFH,(21001H)=0FFH,程序如下:MOV CL,16
MOV AL,[BX]
INC BX
MOV AH,[BX]
ROL AL,CL
执行完之后,(AX)= ,CF= 。
2. DA1 DB 34
MOV AL,DA1
MOV AH,0
MOV CX,3
MOV DL,10
LOP:DIV DL
MOV BL,AH
MOV BH,0
PUSH BX
LOOP LOP
当执行完这段程序时,它向堆栈压了个数,压入的第一个数值是,执行后(AL)= 。
3.下面程序段是判断DA1和DA2两个字存储单元中的数是否同为正数,若是则将0→AX中,否则-1→ AX,试在每一个空白处各填上一条条件分支指令(两个空白处要求利用不同的标志位,选用适应的条件分支指令)。
MOV AX,DA1
MOV BX,DA2
XOR AX,BX
TEST BX ,8000H MOV AX ,0 JMP DONE NEXT :MOV AX ,-1 DONE :
4.下面程序段完成的功能是: 请将该程序补充完整。
X DB 25H Y DB ?
MOV AL ,X PLUS PLUS :MOV Y ,AL HLT
三、接口03FBH 的BIT5为状态标志,当该位为1时,表示外设忙;当其为0时,表示可以接受数据。当CPU 向接口03F8H 写入一个数据时,上述标志就置1;当它变为0状态时,又可以写入下一个数据。根据上述要求,编写程序,将当前数据段偏移地址为SEDA T 的顺序50个单元中的数据由接口输出。(12分)
四、编写程序,在屏幕上显示“西北师范大学物理与电子工程学院”的英文名称。要求:调用09H 号功能写出完整程序。(10分)
五、试判断8088系统中存储系统译码器74LS138的输出0Y ,4Y ,6Y 和7Y 所决定的内存地址范围,见图1。(8分)
六、已知SRAM 芯片如图2所示。(20分)
1.利用该芯片构成从B2000H ~BDFFFH 的内存,试画出连接电路图。(8分)
2.从地址B2000H 开始,顺序将00,01,…,FFH 重复写满上面构成的内存,编写程序。(6分) 00x
x Y x x ≥?=?
??
3.若发现上面构成的内存中无论写入什么数据,读出数据的D3总为1而其他各位均正常,试说明出现该故障的原因。(6分)
七、假定已定义了以下数据段
DA TA SEGMENT
BUF DW 7F6AH
COUNT DW ?
DA TA ENDS
试编程统计单元BUF中“1”的个数,存入COUNT单元。(10分)
2007—2008学院度第1学期微机原理
与接口技术课程期中考试试卷参考答
案
一、填空(每空1分,共20分)
1.a +b=01111100=+124;d-c-a=10011111=-97
2.原=10010101B ;补=11101011B ;反=11101010B
3.DL=30H,CF=1,OF=1,AF=1,SF=0,ZF=0
4.32
5.40200H
6.SP=010EH
7.11 ;变量A,B,C所占有的存储单元的字节数。
8.120 ;20
9.存储器或I/O读写的读写命令
10.寄存器间接寻址
二、程序填空(每空2分,共20分)
1.(AX)=0FFFFH ;CF=1
2.3 ;0004H ;(AL)=00H
3.JS NEXT ;JZ NEXT
4.OR AL,AL ;JNS ; NEG AL
三、(12分)
解:这是利用查询外设状态,向接口输出数据的问题,每输出一个数据,等待外设不忙,在输出下一个数据,依次将要求的数据全部输出。
编程如下:
SEDAT: MOV CL,50
MOV SI,OFFSET SEDAT
GOON:MOV DX,03FBH
WAIT: IN AL,DX ;取外设状态
TESE AL,20H
JNZ WAIT
MOV AL,[SI]
MOV DX,03F8H
OUT DX,AL ;由接口输出数据
INC SI
DEC CL
JNZ GOON
HLT
四、(10分)
解:
DATA SEGMENT
STRING DB ‘Physics & Electronics Engineering College of Northwest Normal University.’,0DH,0AH,‘$’
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MOV AX,DATA
MOV DX,AX
MOV DX,OFFSET STRING
MOV AX,09H
MOV AX,4CH
INT 21H
CODE ENDS
END
五、(8分)
解:根据图1所示的译码电路,我们分析此译码器的特征如下:
A19 A18 A17 A16 A15 A14 A13 A12 …Y0 Y4 Y6 Y7 地址范围1 ×0 0 0 0 0 0 √译码输入1 0 0 0 0 0 0 0 0 80000H
81FFFH 1 0 0 0 0 0 0 1 1
1 1 0 0 0 0 0 0 0 C0000H
C1FFFH 1 1 0 0 0 0 0 1 1
1 0 0 0 1 0 0 0 0 √88000H
89FFFH 1 0 0 0 1 0 0 1 1
1 1 0 0 1 0 0 0 0 C8000H
1 1 0 0 1 0 0 1 1 C9FFFH 1 0 0 0 1 1 0 0 0 √8C000H
8DFFFH 1 0 0 0 1 1 0 1 1
1 1 0 0 1 1 0 0 0 CC000H
CDFFFH 1 1 0 0 1 1 0 1 1
1 0 0 0 1 1 1 0 0 √8E000H
8FFFFH 1 0 0 0 1 1 1 1 1
1 1 0 0 1 1 1 0 0 CE000H
CFFFFH
1 1 0 0 1 1 1 1 1
六、(20分)
解:1、图2所示的SRAM芯片是一片容量为16KB的芯片,要构成的内存空间为48KB,因此需要三片SRAM芯片。画出连接图如图
所示。
2、按题目的要求编程如下:
PORWMY:MOV DX,0B000H
MOV DS,DX
MOV SI,20000H
MOV CX,0C000H
MOV AL,00H
GOON: MOV [SI],AL
INC SI
INC AL
LOOP GOON
HLT
3、这种故障很可能是总线上的D3
断开,没有连接到芯片上,当读内
存时,D3是悬空的,而悬空状态读
出来一般会呈现高电平。
也有可能D3与+5v短路,不小心碰
到一起,则有可能使D3总为高电平。但这种情况会使CPU
不能正常工作,甚至损坏器件。
七、(10分)
解:算法:一个字节中含有8位二进制数,先取1字节数
据,将其左移或右移,通过判断进位标志位CF,当CF=1
时计数,完成8次循环后,该1字节数据才处理完,然后
再取下1字节数据重复8次移位,判断计数,直到2个字
节数据都处理完为止。显然这是一个双重循环,内循环为
8次,外循环为2次。
流程图和完整程序如下:
DATA SEGMENT
BUF DB 7F6AH
COUNT DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MOV AX,DA TA
MOV DS,AX
MOV SI,OFFSET BUF
MOV CX,2;外循环次数CX
REPT0:XOR BX,BX;BX清零,存放结果寄存器MOV DH,08H;内循环次数
MOV AL,[SI];取第1个数
REPT1:ROR AL,1;AL右移1位
JNC NEXT;C F≠1转NEXT
INC BX;BX←BX+1,计数
NEXT:DEC DH;DH←DH-1
JNZ REPT1;DH≠0转REPT1
INC SI;SI←SI+1,修改取数地址
LOOP REPT0;CX≠0转REPT0
MOV COUNT,BX;保存“1”的个数的统计结果 MOV AH,4CH
INT 21H
CODE ENDS END