自检试题1
一、填空(共10分,每空1分)
1. 反码0D5H所表示的十进制数为 42H ,补码7AH所表示的十进制数为 +122 。
2. 设SP=0100H, SS=2000H, 压入10个16位二进制数后,栈顶的SP值和物理地址分别为__00ECH_和 200ECH 。
3. 80x86 CPU 可以访问的I/O空间共有 2^16B=64KB ,采用独立编址的方法。
4. CPU 与外设之间数据传输控制方式分为直接传输(无条件传输)、查询传输(有条件传输)、中断传输、 DMA传输等4种方式。
二、回答问题(共10分)
1.图9-1为某接口的地址译码电路,该I/O接口为何种类型?占有多少有效地址?写出所占有的I/O地址范围。(4分)
答:因为I/O读信号参加译码,所以为输入接口。该接口占有2^9=512个地址,地址范围为EA00H~EBFFH。
2.请简述数据总线与地址总线各自具有的特点,如果某CPU的数据总线与地址总线采用同一组信号线可采用什么方法分离开。(6分)
答:数据总线的特点为双向三态,其总线位数决定CPU与外部一次传输数据的位数。地址总线的特点为单项三态,其总线位数决定CPU对外部寻址的范围。如果某CPU的数据总线与地址总线采用同一组信号线,可以利用锁存器将地址总线分离出来。
三、分析程序(共20分)
1.设AL=05AH,BL=7BH,当执行ADD AL,BL指令后各状态位的状态为:
OF=__1__,CF=__0__,SF=__1__,ZF=__0___,AF=__1__,PF=__0__。(6分)
2.阅读下列程序段,内存数据是如何存放的?(如图9-2所示)(6分)
DATASEGMENT
DA1DB-5,2DUP(45),’AB’
DATAENDS
DATA: DA1 | FBH |
DATA: DA1+1 | 2DH |
DATA: DA1+2 | 2DH |
DATA: DA1+3 | 41H |
DATA: DA1+4 | 42H |
3.执行下面程序段后,DAT1和DAT2单元的值是什么?请填写图9-2所示内存单元。(5分)
︰
DAT1DB78H,12H
DAT2DB56H,34H
︰
MOVSI,OFFSET DAT1;
LEADI,DAT2
MOVAX,[SI]
CMPAX,[DI]
JNCDONE (JNC)
MOVBX,[DI]
MOV[DI],AX
同步通信和异步通信的区别MOV[SI],BX
DONE: HLT
︰
答:DAT1=3456H,DAT2=1278H
4.以下是8251初始化程序。
MOVDX,201H
MOVAL,9AH
OUTDX,AL
MOVAL,15H
OUTDX,AL
根据上述指令段说出8251被设置为同步通信方式还是异步通信方式,写出数据通信格式。
答:异步通信,通信格式为:1.5位停止位,奇校验,7位数据位,波特率因子为16。
四、简单说明下列指令错误的原因(10分)
1)SUB[3000H],[BX]
2)OUT180H,AX
3)CMPAL,[SI][DI]
4)PUSHBL
5)MOVCS,2000H
答:
1)内存之间不能直接做减法操作
2)端口地址180H大于1B,必须用DX间接寻址方式
3)SI和DI不能同时出现在同一个内存操作数寻址中
4)8086/8088的PUSH指令十六进制操作,而BL为8位
5)代码段寄存器CS不能赋值
五、电路设计(15分)
某一微机系统,CPU为8088,最小工作方式,现用如图9-3所示存储器芯片组成16KB内存,起始地址为86000H,试画出存储器与CPU连接的原理图,并写出每片存储器芯片所占用的地址范围。
答:
1)选片:因为存储器芯片的容量为2^13=8KB,故需采用2片存储器芯片。
2)地址分配如图9-5所示。
3)地址译码:若采用138译码器,译码电路如图9-6所示。
4)信号连接如图9-7所示。
六、编程(共35分)
1.试编制程序段,实现将某中断服务程序的入口地址INTPRO装入中断矢量表中(设中断类型号为60H)。(10分)
2.试编制8253A的初始化程序,要求:实现1 min定时功能(设系统提供500kHz的时钟信号,口地址为160~163H)。(10分)
3.从键盘上输入的1位十六进制数,试编制完整的汇编语言源程序实现在屏幕上显示出相应的十进制数。(15分)
答:
1.中断向量装入中断向量表可采用3种方法,即:程序赋值法、串操作指令定义法、DOS功能调用法。这里只采用一种方法,参考程序段如下:
PUSHDS
XORAX,AX ;AX=0
MOVDS,AX ;DS指向0000H段
MOVAX,OFFSET INTPRO ;取中断服务程序首地址的偏移量
MOV[180H],AX ;180H=4*60H
MOVAX,SEG INTPRO ;取中断服务程序首地址的段基值
MOV[182H],AX ;182H=4*60H+2
POPDS
2.答案如下:
1)根据题意8253的3个通道和控制寄存器口地址分别为:
通道0:160H,通道1:161H,通道2:162H,控制寄存器:163H
2)定时1min可采用方式2,计数初值N=1min/(1/500kHz)=500 000=500*1000>65535,故需要2个计数通道协作完成,设选用通道0和通道1。
通道0:控制字=00110100B(方式2,二进制数计数),计数初值N0=500.
通道1:控制字=01110100B(方式2,二进制数计数),计数初值N1=1000.
3)参考初始化程序段:
;对通道0初始化
MOVAL,00110100B
MOVDX,163H
OUT DX,AL ;将计数通道0的控制字送入控制寄存器
MOVAX,500
MOVDX,160H
OUT DX,AL ;将计数初值低字节送入计数通道0
MOVAL,AH
OUT DX,AL ;将计数初值高字节送入计数通道0
;对通道1初始化
MOVAL,01010100B
MOVDX,163H
OUT DX,AL ;将计数通道1的控制字送入控制寄存器
MOVDX,161H
MOVAX,1000
OUT DX,AL ;将计数初值低字节送入计数通道1
MOVAL,AH
OUT DX,AL ;将计数初值高字节送入计数通道1
3.从键盘上输入的一位十六进制数,可采用DOS功能调用的01号功能,在屏幕上显示一个字符可采用DOS功能调用的02号功能。注意从键盘读入和从显示器输出均为ASCⅡ码。将十六进制数转换成十进制数可以采用两种方法,在这里采用十六进制数除10取商为十位数,余数为个位数的方法。参考程序为:
CODESEGMENT
ASSUMECS:CODE
START: MOVAH,01H
INT 21H ;取十六进制数
MOVBL,AL
MOVDL,0AH
MOVAH,02H
INT21H
MOVDL,0DH
MOVAH,02H
INT21H
CMP BL,30H ;判断是否在’0’~’9’之间
JCLPN
CMPBL,3AH
JCLP1
CMP BL,41H ;判断是否在’A’~’F’之间
JCLPN
CMPBL,47H
JNCLPN
CMP BL,61H ;判断是否在’a’~’f’之间
JCLPN
CMPBL,67H
JNCLPN
SUBBL,37H
JMPLPO
LP1: SUBBL,30H
;将十六进制数转换成十进制数
LP0: MOVCL,10
MOVAL,BL
XORAH,AH
DIV CL ;十进制数在AL中,个位数在AH中
;屏幕上显示十进制数
MOV BL,AH ;保存个位数
MOV DL,AL ;取十位数送显
ORDL,30H
MOVAH,02H
INT21H
MOV DL,BL ;取个位数送显
ORDL,30H
JMPLP2
LPN: MOV DL,"N"
MOVAH,02H
INT21H
MOV DL,"O"
LP2: MOVAH,02H
INT21H
MOV AH,4CH ;返回
INT21H
CODE ENDS
END START
自检试题2
一、单选题(共10分)
1.计算机内溢出是指其运算结果(C)。
A.无穷大B.超出了计算机内存储单元所能存储的数值范围
C.超出了该指令所指定的结果单元所能存储的数值范围 D.超出了运算器的取值范围
2.8086/8088CPU对存储器采用分段管理的方法,每个存储单元均拥有(C)两种地址。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论