大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
微型计算机原理与接口技术第三版答案
第1章 练习题
1.选择题
(1)B C A (2) A (3) D A (4) C
2.填空
(1) 10, 12
(2) 取出指令, 执行指令
(3)
(4) 内部码
3.简答题
(1)微处理器,微型计算机和微型计算机系统三者有何联系与区别?
答:微处理器是把原来的中央处理单元 CPU 的复杂电路(包括运算器和控制器)做在一片或几片大规模集成电路的芯片上。把这种微缩的 CPU 大规模集成电路称为微处理器。
微型计算机是以微处理器为核心,再配备上用大规模集成电路工艺制成的存储器和 I/O 接口就构成了微型计算机。
以微计算机为核心,再配备上系统软件、I/O 设备、辅助电路和电源就构成了微机系统。微型计算机系统包括硬件和软件了两大部分。
(2)计算机中为什么采用二进制数表示?
答:计算机是一种电器设备,内部采用的都是电子元件,用电子元件表示两种状态是最容易实现的,比如电路的通和断、电压高低等等,而且也稳定和容易控制。把两种状态用0,1来表示,就是用二进制数表示计算机内部的数据。
(3)简述程序的运行过程。
答:即取指令—分析指令—执行指令。根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。将指令寄存器中的指令操作码取出后进行译码,分析其指令性质,然后执行指令。
(4)设两个正的浮点数如下。
1)若是否一定有?
2)若S1和S2均为规格化的数,且,是否一定有?
答:1)若 不一定有。
若S1 =11100101B,S2 =00100101B
当P1 =01B时,P2 =10B时,
故
2)若S1和S2均为规格化的数,且,一定有。
浮点规格表示要求对浮点二进制正数,其尾数数字S部分的最高位必须是1,故不会出现上述情况,当时,一定有 。
4.计算题
(1)计算十进制数-47的原码、反码、补码(8位二进制的形式表示),并说明8位二进制原码、反码、补码所能表示的数值范围(用十进制表示)。
解:[-47]原 =10101111
[-47]反 =11010000
[-47]补 =11010001
8位二进制原码表示的范围为-127~+127,反码表示的范围为-127~+127,补码表示的范围为-128~+127。
(2)将十进制数658.125转换成二进制、八进制、十六进制和BCD码。
解: 658/16=41…余数为2
41/16=2…余数为9
2/16=0…余数为2
0.125×16=2 小数部分为0,整数部分为2
658.125D = 292.2H = 001010010010.0010B = 1222.1Q = 011001011000.000100100101(BCD数)
(3)设浮点数的表示格式为阶码4位(包括阶符1位)、尾数8位(包括尾符1位)。阶码和尾数均用补码表示。写出二进制数X=-0.0010110011B的规格化浮点数表示。
解: X = -0.0010110011B = -0.10110011 ×
S = 0100110
Sf = 1
J = 110
Jf = 1
规格化浮点数为1 110 1 0100110
(4)若X=-79,Y=+97,求[-X]补,[Y]补,[X-Y]补,[-X+Y]补,[-X-Y]补,要求给出求解过程,并指明运算后的溢出情况。
解:[-X]补=01001111
[X]补=10110001
[Y]补=01100001
[-Y]补=10011111
[X-Y]补=[X]补+[-Y]补=01010000
10110001
+10011111
1 01010000
CS=1,CP=0,负溢出
[-X+Y]补= [-X]补+[Y]补=10110000
01001111
+01100001
10110000
CS=0,CP=1,正溢出
[-X-Y]补=[-X]补+ [-Y]补=11101110
01001111
+10011111
11101110
CS=0,CP=0,无溢出
第2章 练习题
1.选择题
(1)D (2)A (3)B (4)C (5)C (6)B (7)A (8)A
2 填空题
(1) 地址总线的宽度,00000H~0FFFFFH
(2)SS,DS,CS,ES
(3)第33 ()引脚
(4) SS,DS
(5) 奇地址区,偶地址区,高 8 位,低 8 位
3.简答题
(1) 什么是指令周期?什么是总线周期?一个总线周期至少包括几个时钟周期?
答:指令周期是一条指令执行所需的时钟周期,CPU在执行指令过程中,凡需执行访问存储器或访问 I/O 端口的操作都统一交给 BIU 的外部总线完成,进行一次访问所需的时间称为一个总线周期。一般一个基本的总线周期由 4 个时钟周期组成。
(2) 8086CPU 中,标志寄存器包含哪些标志位?各标志位为‘0’ , ‘1’分别表示什么含义?
答:标志寄存器包含状态标志和控制标志,状态标志包括符号标志、零标志、奇/偶标志、进位标志、辅助进位标志、溢出标志,控制标志包括方向标志、中断标志、跟踪标志。
符号标志(SF)用来指出前面运算执行后的结果是正还是负,结果为负,则SF=1;结果为正,则SF=0。零标志(ZF)用来指出前面运算执行后的结果是否为零,结果为零,则ZF=1;结果为非零,则ZF=0。奇/偶标志(PF)用来指出前面运算结果的低8位中所含的1 的个数为偶数还是奇数,结果为偶,PF=1;结果为奇,PF=0。进位标志(CF),当执行加法运算使最高位产生进位或执行减法运算引起最高位产生借位时,CF=1,否则CF=0。辅助进位标志(AF),当执行加法运算使第3位往第4位上有进位或减法运算使第3位从第4位有借位时,则AF=1,否则AF=0。溢出标志(OF),当运算的结果超出了范围是就会产生溢出,OF=1,否则OF=0。方向标志(DF)在串操作指令中用来控制串操作过程中地址的增减,当DF=0,则地址不断递增;当DF=1,则地址会不断递减。中断标志(IF)在中断过程中控制是否响应可屏蔽中断的请求,当IF=0,则CPU不能响应可屏蔽中断请求;当IF=1,则CPU可以接受可屏蔽中断请求。跟踪标志(TF)在中断过程中控制是否响应单步中断的请求,当TF=1,则CPU按跟踪你方式执行指令;当TF=0,则CPU不会响应单步中断。
(3) 8086CPU 中有哪些通用寄存器和专用寄存器?说明他们的作用。
答:4个通用寄存器,AX:16位的累加器;BX:16位的基数寄存器,可用于寄存器间接寻址;CX:16位的计数寄存器,可作为程序循环计数寄存器;DX:16位的数据寄存器,可作为I/O指令专用间接寻址寄存器。
4个专用寄存器,BP:16位的基数指针寄存器,用来存放位于堆栈段中的一个数据区基址的偏移地址;SP:16位的堆栈指针寄存器,存放栈顶的偏移地址;SI:16位的源变址寄存器,用于存放当前数据段的偏移地址;DI:16位的目的变址寄存器,也用来存放当前数据段的偏移地址。
(4) 在 8086CPU 中,已知 CS 寄存器和 IP 寄存器的内容分别如下所示,请确定其物
理地址。
- CS=1000H ,IP=2000H
答:物理地址: CS*16+IP=10000H+2000H=12000H - CS=1234H ,IP=0C00H
答:物理地址: CS*16+IP=12340H+0C00H=12F40H
(5)设(AX)=2345H,(DX)=5219H,请指出两个数据相加或相减后,FLAG 中状态标志位的状态。
答:相加 : 0010 0011 0100 0101
+ 0101 0010 0001 1001
0111 0101 0101 1110
CF=0,SF=0,ZF=0,AF=0,OF=0,PF=0
相减: 0010 0011 0100 0101
- 0101 0010 0001 1001
1101 0001 0010 1100
CF=1,SF=1,ZF=0,AF=1,OF=1,PF=0
(6) 8086CPU 在最小模式下构成计算机系统至少应该包括哪几个基本的部分?
答:一片8284A时钟发生器,三片8282或74LS373地址锁存器,两片8286总线接收器。
(7)简述堆栈指示器SP有什么功能?堆栈的操作过程是怎样的?试举例说明。
答:堆栈指示器(SP )存放栈顶的偏移地址,以便存取位于当前堆栈段中的数据。
举例:PUSH BX ;将寄存器BX的内容压入堆栈。
操作过程分析:执行PUSH指令时,SP先自动减2,BX的低8位放入SP所指单元中,高8位放入SP+1所指单元中。
第3章 练习题
1.选择题
(1)D (2)C (3)A (4)A
2.填空题
(1)字节递增 8DH,5CH,3BH,1AH
(2)递增
(3)60H 0
(4)1F02C
3. 问答题
(1)试分别说明换码指令和串操作指令所用的隐含寄存器及标志位,并说明各自的工作过程。
答:换码指令XLAT所用的隐含寄存器为BX和AL。指令“XLAT”的工作过程:将BX和AL中的值相加,把得到的值作为地址,然后将此地址所对应的单元中的值取到AL中。
串操作指令所用的隐含寄存器和标志位为CX、SI、DI和DF。字符串传送指令“REP MOVSB”的工作过程:将DS:SI逻辑地址所指存储单元的字节传送到ES:DI逻辑地址所指的内存单元中,当DF=0时,SI和DI均增1,CX减1;当DF=1时,SI和DI均减1,CX减1。重复执行上述操作,直到CX=0时停止。
(2)RET与IRET两条指令有何区别?并说明各自的应用场合。
答:RET是从堆栈中弹出断点地址,装入IP或IP与CS中,从而段内返回的目的。主要用于子程序的返回。IRET是中断返回指令,是专门为中断服务程序返回设计的。
(3)试分别举例说明8086CPU乘法与除法指令所用的隐含寄存器。
答:乘法指令有无符号数乘法指令MUL和有符号数乘法指令IMUL。MUL隐含寄存器AX,IMUL隐含寄存器AX和DX。如指令“MUL DL”的功能是将DL中的内容与AL中的内容相乘,结果放在AX中。
除法指令也有无符号数除法指令DIV和有符号数除法指令IDIV。DIV隐含寄存器AX,IDIV隐含寄存器AX和DX。如指令“IDIV BX”的功能是将DX和AX中的32位有符号数除以BX中的16位有符号数,商在AX中,余数在DX中。
(4)简述堆栈指示器SP有什么功能?堆栈的操作过程是怎样的?试举例说明。(教材P85)
(5)8086CPU有哪些操作数的寻址方式?请分别举例说明。
答:8086CPU中操作数寻址可分为4种:立即寻址、寄存器寻址、存储器寻址和I/O端口寻址。立即寻址如MOV AX,3412H。寄存器寻址如MOV AX,BX。存储器寻址可分为五类:直接寻址如MOV AX,[7834H];寄存器间接寻址如MOV AX,[BX];寄存器相对寻址如MOV AX,[BX+12H];基址加变址寻址方式如MOV AX,[BX+SI];相对的基址和变址寻址如MOV AH,[BX+SI+2468H]。I/O端口寻址包括两类:直接端口寻址如IN AL,27H;间接端口寻址如OUT DX,AL。
4.请指出下列指令中源操作数和目的操作数的寻址方式。
(1)MOV SI,120 ;目的操作数为寄存器寻址,源操作数为立即寻址;
(2)MOV BP,[BX] ;目的操作数为寄存器寻址,源操作数为寄存器间接寻址;
(3)MOV BX,[200] ;目的操作数为寄存器寻址,源操作数为直接寻址;
(4)PUSH DS ;源操作数为寄存器寻址;
(5)POP BX ;目的操作数为寄存器寻址;
(6)AND DL,[BX+SI+30H] ;目的操作数为寄存器寻址,源操作数为相对的基址和变址寻址;
5.请写出如下程序片段中每条逻辑运算指令执行后标志 ZF、SF、和 PF 的状态:
MOV AL,4CH ; ZF不变,SF不变,PF不变
AND AL,0F0H ; ZF=0 ,SF= 0 ,PF=0
OR BL,4CH ; ZF=0 ,SF= 0 ,PF=0
XOR AL,AL ; ZF=1, SF= 0 ,PF=1
6.请写出如下程序片段中每条算术运算指令执行后标志 CF、ZF、SF、OF、PF 和 AF 的状态:
MOV BL, 54H ; 各标志位保持不变
ADD BL, 4BH ; CF=0, ZF=0 ,SF= 1 ,OF=1 ,AF=1,PF=0
CMP BL, 0B6H ; CF=1, ZF=0 ,SF=1, OF=0 ,AF=0 ,PF=0
SUB BL, BL ; CF=0 ,ZF=1 ,SF= 0 ,OF=0, AF=1,PF=0
INC BL ; CF=0 ,ZF=0 ,SF=0, OF=0 ,AF=0, PF=0
7.(DS)=1000H,(SS)=2500H,(SI)=0100H,(BX)=0800H,(BP)=0600H,指出下列指令的目的操作数字段寻址方式,并计算目的操作数字段的物理地址。
(1) MOV [BX], CX
目的操作数为寄存器间接寻址
目的操作数的物理地址为:DS×16+0800H=10800H
(2) MOV [2000H], BX
目的操作数为直接寻址
目的操作数的物理地址为:DS×16+2000H=12000H
(3) MOV [BP], BX
目的操作数为寄存器间接寻址
目的操作数的物理地址为:SS×16+0600H=25600H
(4) MOV [BP+200], BX
目的操作数为寄存器相对寻址
目的操作数的物理地址为:SS×16+0600H+C8H=256C8H
(5) MOV [BX+300][SI], AX
目的操作数为相对基址加变址寻址
目的操作数的物理地址为:DS×16+0800H+12CH+0100H=10A2CH
8.已知(SS)=800H,(SP)=0040H,(CX)=0AF0H,(DX)=201H。下列指令连续执行,请指出每条指令执行后SS、SP、AX、BX寄存器中的内容是多少?
PUSH CX ;SS=0800H,SP=003EH,AX不变,BX不变
PUSH DX ;SS=0800H,SP=003CH,AX不变,BX不变
POP AX ;SS=0800H,SP=003EH,AX=0201H,BX不变
POP BX ;SS=0800H,SP=0040H,AX=0201H,BX=0AF0H
9.阅读下列各小题的指令序列,在后面空格中填入该指令序列的执行结果。
(1) MOV DL,37H
MOV AL,85H
ADD AL,DL
DAA
AL= 22H , BL= 37H ,CF= 1
(2) MOV DX,1F45H
STC
MOV CX,95
XOR CH,0FFH
SBB DX,CX
DX= 1FB0H ,CF= 1
10.已知程序段如下。
CMP CX,BX
JNC L1
JNC L2
JMP L3
假设有以下三组CX,BX值,那么在程序执行后,分别转向哪里?
(1)(CX)=D301H,(BX)=D301H
答:转向 L1
(2)(CX)=2E50H,(BX)=8301H
答:转向 L2
(3)(CX)=477BH,(BX)=10DCH
答:转向 L1
11.设4个BCD码DT1、DT2、DT3、DT4分别放在AL、AH、CL、CH的低4位,请编写程序段,将这4个数按如下要求合并存放到BX寄存器中。
BX DT1 DT2 DT3 DT4
解:程序段如下:
MOV BX,00H
AND AX,0F0FH
AND CX,0F0FH
MOV BL,CL
MOV CL,4
SHL BL,CL
ADD BL,CH
MOV BH,AL
SHL BH,CL
ADD BH,AH
12.请用串操作指令实现将10~99这90个数从2100H开始的内存单元搬到3100H开始的内存单元处。
解:程序段如下:
MOV DS,2000H
MOV ES,3000H
CLD
MOV CX,90
MOV SI,100H
MOV DI,100H
REP MOVSB
第4章 练习题
1.选择题
(1)BC (2)A (3)C (4)D
2. 问答题
(1)变量和标号有什么异同之处?
答:变量和标号都有三种属性:段地址、偏移地址及类型。变量是存放在存储器单元中的操作数,其值可以改变,变量的类型可以是BYTE(字节)、WORD(字)、DWORD(双字)等;标号是可执行指令语句地址的符号表示,即用标志符来表示地址,标号的类型可以是NEAR(近)或FAR(远)。
(2)简述汇编语言中伪指令的基本作用和特点,与机器指令相比有何区别?
答:伪指令语句没有对应的机器代码,经汇编程序汇编后并不产生目标代码,由汇编程序对源程序汇编期间进行处理,主要作用是完成变量的定义、存储器的分配、段结构的定义,段的分配、过程的定义、程序开始和结束的指示等。而机器指令由CPU来执行,它的每一条指令语句在源程序汇编时都要产生可供计算机执行的指令代码(即目标代码)。
(3)试简述宏调用与子程序调用各自的作用和相互之间的区别。
答:宏调用的作用是在定义宏指令后,通过宏指令来表示对应的程序片段。子程序调用的作用是定义一个由主程序可以用CALL指令调用的程序。两者的区别:宏调用比子程序调用执行速度快;子程序调用使用CALL语句实现,在CPU执行时进行处理,而宏调用由宏汇编软件MASM中的宏处理程序来处理;子程序调用比宏调用节省内存空间;宏调用比子程序调用灵活。
(4)8086汇编语言程序中段的类型有几种?段定义语句中定位类型、组合类型和类别各起什么作用?
答:段类型有四类:数据段、代码段、堆栈段、附加段。定位类型用于规定20位的段起始地址。组合类型规定该段与其他段的位置关系。类别名的主要作用是将所有分类名相同的逻辑段组成一个段组。
3.根据题意定义变量
(1) 将字节数据12H,567H存放在变量DATA1的存储单元中。
DATA1 DW 12H,567H
(2) 将字节数据56H,0BCH存放在变量DATA2的存储单元中。
DATA2 DB 56H,0BCH
(3)在DATA3为首地址的存储单元中连续存放字节数据5个‘A’,6个(1,2,3),20个空单元。
DATA3 DB 5DUP(‘A’),6DUP(1,2,3), 20DUP(?)
(4) 在STR1为首地址的存储单元中存放字符串‘HOW ARE YOU’。
STR1 DB ‘HOW ARE YOU’
4.已知某数据段经汇编后数据在存储器中存放格式如下图,试写出数据段定义。
DATA1 00H
(字节数据) 0AH
10H
DATA2 04H
重
复
15
次
(字节数据) 08H
08H
08H
09H
DATA3 77H
(字数据) 65H
6CH
63H
6FH
6DH
…
解:DATA1 DB 00H,0AH,10H
DATA2 DB 15 DUP(04H,3DUP(08H),09H)
DATA3 DW 6577H,636CH,6D6FH
5.设数据段数据定义如下。
DATA SEGMENT
STR DB ‘GOOD MORNING!’,’$’
ADR DW 3 DUP(0,2,5)
DISP DW 3
DATA ENDS
(1)画出内存分配图。
STR 47H
(字节数据) 4FH
4FH
44H
20H
4DH
4FH
52H
4EH
49H
4EH
47H
21H
24H
ADR 00H
重
复
3
次
(字数据) 00H
02H
00H
05H
00H
DISP 03H
(字数据) 00H
(2)分别用两种求偏移量的指令将STR的偏移地址送BX.
解:①LEA BX,STR
②MOV BX,OFFSET STR
6.写出以下指令在汇编后目标程序中对应的指令。
7.同时对于两条指令中分别出现的两个AND和两个OR是不是同一种含义?为什么?
(1)MOV BX,1234H GT 1000H对应MOV BX,0FFFFH
(2)SBB DX,1024 SHR 3对应SBB DX,0080H
(3)AND AL,7 AND 47H对应AND AL,07
(4)OR DL,NOT(7 OR 54H)对应OR DL,A8
(5)MOV AX,HIGH(1000H+5)对应MOV AX,0010
(6)ADD AX,HIGH 1000H+5对应ADD AX,0015
注意:汇编后显示的立即数均为16进制数
第(3)、(4)条指令中出现的两个AND和OR中,前面的AND和OR是指令系统中的指令助记符,是在程序执行时进行运算的;后面的AND和OR是逻辑运算符,是在编程过程中进行运算的,逻辑运算对象只能是常数,其结果也是常数。
8.程序在数据段中定义的数据如下。
DATA SEGMENT
VAR1 DB 4,6
VAR2 DD 200 DUP(?)
DATA ENDS
以下三条指令分别汇编成什么?(可立即数方式表示)
(1)MOV CL,LENGTH VAR2汇编成MOV CL,C8
(2)MOV BL,TYPE VAR1汇编成MOV BL,01
(3)MOV BX,SIZE VAR2汇编成MOV BX,0320
注意:汇编后显示的立即数均为16进制数
9.给定宏定义如下。
DIF MACRO X,Y
MOV AX,X
SUB AX,Y
ENDM
ABSDIF MACRO V1,V2,V3
LOCAL NEXT
PUSH AX
DIF V1,V2
CMP AX,0
JGE NEXT
NEG AX
NEXT: MOV V3,AX
POP AX
ENDM
试展开以下调用,并判定调用是否有效(展开后的指令必须符合8086CPU指令系统要求)。
(1)ABSDIF DX,AX,CX
+PUSH AX
+MOV AX,DX
+SUB AX,AX
+CMP AX,0
+JGE NEXT
+NEG AX
+NEXT:MOV CX,AX
+POP AX
(2)ABSDIF [100],[DI],BX
+PUSH AX
+MOV AX,[100]
+SUB AX,[DI]
+CMP AX,0
+JGE NEXT
+NEG AX
+NEXT:MOV BX,AX
+POP AX
(3)ABSDIF [BX+SI],[BP],100H;调用无效。语法错误(立即数的使用)。
10.写一个宏定义,要求能把任意一个寄存器的最低位移至另一个寄存器的最高位中。
解:宏定义如下:
SMOV MACRO X1,X2
AND X1,0001H
ROR X1,1
AND X2,7FFFH
OR X2,X1
ENDM
11.利用DOS功能调用从键盘输入60个字符到缓冲区BUF中,在按下ENTER键后在屏幕上显示这些字符。请写出程序段。
解:程序段如下:
DATA SEGMENT
BUF DB 60 ;用户定义存放60个字节的缓冲区
NUMB DB ? ;系统填入实际输入字符字节数
CHARS DB 60 DUP(?) ;存放输入字符的ASCII码值
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET BUF
MOV AH,0AH
INT 21H
XOR BX,BX
MOV BL,NUMB
MOV CHARS[BX],’$’ ;字符串后加一个结束符
MOV DL,0DH ;回车
MOV AH,2
INT 21H
MOV DL,0AH ;换行
MOV AH,2
INT 21H
MOV DX,OFFSET CHARS
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
第5章 练习题
2.读程序
(1)欲把AX寄存器的内容倒序,即D15→D0,D14→D1,…,D0→D15,请在空格处填上正确的指令。
MOV BX,AX
MOV CX,16
AGAIN: RCL BX,1
RCR AX,1
LOOP AGAIN
(2)若要完成50-(1+2+3+4+5)的运算,并把最终运算结果转换成分离8421BCD码,高位->AH,低位->AL,请在空格处填上正确的指令。
MOV CX,5
MOV AX,50
NEXT: SUB AX,CX
LOOP NEXT
AAM
(3)有一输出设备,8位状态端口地址为62H,最高位为时,CPU可以向该设备的8位数据端口(地址61H)发送数据;否则,等待。根据题意,请在空格处填上正确的指令。
WAIT: IN AL,62H
TEST AL,80H
JNZ WAIT
OUT 61H,AL
(4) 要求把源串AREA1中的100个字传送给目的串AREA2,指针按地址增量方向修改,请在空格处填写正确的指令。
MOV SI,OFFSET AREA1
MOV DI,OFFSET AREA2
MOV CX,100
CLD
REP MOVSW
2.编程题
(1)试编写一程序,把数组STRING中存放的20个8位二进制数分成正数数组和负数数组,并统计正数、负数和零的个数,结果分别存放在P、M、Z三个单元。
DATA SEGMENT
STRING DB 20 DUP(?)
POSI DB 20 DUP(?)
NEGA DB 20 DUP(?)
P DB 00H
M DB 00H
Z DB 00H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
XOR BX,BX
MOV SI,BX
MOV DI,BX
MOV CX,20
LP: MOV AL,STRING[BX]
CMP AL,0
JGE P1
MOV NEGA[DI],AL
INC DI
INC M
JMP NEXT
P1: JNE P2
INC Z
JMP NEXT
P2: MOV POSI[SI],AL
INC SI
INC P
NEXT: INC BX
LOOP LP
MOV AH,4CH
INT 21H
CODE ENDS
END START
(2)试编写一程序,完成10个一位十进制数累加,累加结果以分离式BCD码形式存放于AH(高位),AL(低位)寄存器。
DATA SEGMENT
STRING DB ‘1112220004’
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV CX,10
XOR BX,BX
MOV AX,0
LP: ADD AL,STRING[BX]
AAA
INC BX
LOOP LP
MOV AH,4CH
INT 21H
CODE ENDS
END START
(3)试编写一程序,将2个字节的二进制数,变换成用ASCII码表示的四位十六进制数(用四字节表示)。
DATA SEGMENT
NUM DW 12345 ;0~65535
ASC DB 4 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV BX,NUM
LEA DI,ASC
MOV CX,0404H
LP1: ROL BX,CL
MOV DL,BL
AND DL,0FH
CMP DL,10
JB LP2
ADD DL,7
LP2: ADD DL,‘0’
MOV [DI],DL
INC DI
DEC CH
JNZ LP1
MOV AH,4CH
INT 21H
CODE ENDS
END START
(4)试用串操作指令SCAS,在10个字节的数据块BLOCK中,搜索与2EH相等的数,若找到,则将该数地址存放于ADR中,并在SIGNAL单元中作标记0FFH;否则,SIGNAL为00H。
DATA SEGMENT
BLOCK DB 26H,27H,28H,29H,2AH,2BH,2CH,2DH,2EH,2FH
ADR DW ?
SIGNAL DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV DI,OFFSET BLOCK
CLD
MOV CX,10
MOV AL,2EH
REPNZ SCASB
JNZ AA
MOV SIGNAL,0FFH
DEC DI
MOV ADR,DI
JMP NEXT
AA: MOV SIGNAL,00H
NEXT: MOV AH,4CH
INT 21H
CODE ENDS
END START
(5)请按如下说明编写子程序。
子程序功能:把用ASCII码表示的两位十进制数转换为压缩BCD码。
入口参数:DH:十位数的ASCII码,DL:个位数的ASCII码。
出口参数:AL:对应压缩BCD码。
TRANS PROC NEAR
PUSH CX
PUSH DX
MOV CL,4
SUB DH,‘0’
SUB DL,‘0’
SHL DH,CL
ADC DL,DH
MOV AL,DL
POP CX
POP DX
RET
TRANS ENDP
(6)编写一程序,计算100个16位正整数之和,如果和不超过16位字的范围(0~65535),则保存其和到SUM,如超过则显示“Overflow!”。
DATA SEGMENT
DAT1 DW 25 DUP(0034H,0345H,0000H,0000H)
SUM DW ?
STRING DB ‘Overflow!’,0DH,0AH,’$’
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET DAT1
MOV BX,OFFSET SUM
MOV CX,100
XOR AX,AX
L1: ADC AX,[SI]
JC OVER
INC SI
INC SI
LOOP L1
MOV [BX],AX
JMP NEXT
OVER: MOV DX,OFFSET STRING
MOV AH,9
INT 21H
NEXT: MOV AH,4CH
INT 21H
CODE ENDS
END START
3.问答题
(1)汇编语言程序的开发有哪些步骤,其工作过程需哪些软件来实现?可产生哪些输出文件?
答:步骤如下:1)明确任务,确确算法 2)绘制流程图 3)编写汇编语言程序 4)上机调试程序。
编写汇编语言程序时:1)需要EDIT.COM软件建立源程序文件,并保存为.ASM文件。2)需MASM.EXE软件汇编源程序文件,可产生扩展名为OBJ的目标文件、扩展名为LST的列表文件和扩展名为CRF的对照文件。3)需要LINK.EXE软件与目标文件连接,可产生扩展名为EXE的可执行文件、扩展名为MAP的列表文件和扩展名为LIB的库文件。
上机调试时,需要DEBUG.EXE调试软件。
(2)程序结束软中断有哪几种实现方法?有什么区别?
答:程序结束软中断有三种实现方法:INT 20H、INT 21H、INT 27H。
INT 20H的功能是终止当前进程,关闭所有打开的文件,清除磁盘缓冲区,返回控制台的命令接收状态,实现程序退出时,不需要任何入口参数。INT 21H用于系统功能调用,该软中断包括3种情况:无返回程序结束(入口参数AH=0,无返回号)、程序结束并驻留(入口参数AH=31H,返回号AL=1)、带返回程序结束(入口参数AH=4CH,返回号AL=1)。INT 27H用于驻留退出,入口参数DX=XX设置驻留程序的长度。
(3)用汇编语言编程序有哪几种结构?
答:顺序结构;分支结构;循环结构;子程序结构。
(4)子程序结构中,主程序和子程序之间参数传递有哪几种方法?
答:参数传递的实现方案可分为:寄存器传送、固定缓冲区传送、地址表传送、堆栈传送。
第6章 练习题
1.选择题
(1)C ,(2)B,(3)C
2.填空题
(1)随机存取存储器,丢失,只读存储器,不会丢失
(2)电荷,电荷泄露,刷新
(3)128,10
(4)48000H,4FFFFH,32K
3.简答题
(1)半导体存储器的主要性能指标有哪些?
答:半导体存储器的主要性能指标有:存储容量、存取速度、功耗、可靠性、价格。
(2)存储器芯片由哪几部分组成?各部分功能是什么?
答:存储芯片由存储矩阵、地址译码器、存储器控制电路、三态双向缓冲器组成。存储矩阵的功能是把能够寄存二进制信息的基本电路的集合体的这些基本存储电路按阵列形式排列和编址;地址译码器的功能是将CPU发送来的地址信号进行译码后产生地址编码,以便选中存储矩阵中的某一个或某几个基本存储电路,使其在存储器控制逻辑的控制下进行读/写操作;存储器控制电路通过相应的信号引脚,接收来自CPU或外部电路的控制信号,经组合变换,产生芯片内部各部分的控制信号;三态双向缓冲器的作用是使组成半导体RAM的各个存储芯片很方便地与系统数据总线相连接。
(3)简述SRAM和DRAM的各自特点。
答:SRAM的特点为速度快,不必配合内存刷新电路,可提高整体的工作效率,但集成度低,功耗较大,相同的容量体积较大。DRAM的特点是需要刷新来补充电荷。
(4)DRAM为什么要刷新?存储系统如何进行刷新?
答:DRAM由电容组成,通过高低电平表示存储的状态,由于是电容器作为载体,产生电荷泄露,故需要刷新来补充电荷。刷新按行进行,即每当CPU或外部电路对动态存储器提供一个行地址信号,使存储体中的某一行被选中,同时令列地址无效,即关闭所有的列选通道,这样,该行中所有基本存储电路的数据将在内部读出,并在相应列刷新放大器作用下被放大和刷新。
(5)什么是高速缓冲器?与主体有什么关系?基本工作原理是什么?
答:高速缓冲器为缓存,位于CPU与内存之间的临时存储器,以提高CPU数据输入输出速率。高速缓冲器的原理是根据局部性原理,把主存储器中访问概率高的内容存放在缓冲器中,当CPU需要读取数据时就首先在缓冲器中查找是否有所需内容,如果有则直接从缓冲器中读取;若没有则再主存中读取该数据,然后同时送往CPU的高速缓冲器。
3.一个5124的RAM芯片需要多少根地址线?多少根数据线?若要组成一个64K8的存储器,需要多少个RAM芯片?多少芯片组?多少根芯片组选择地址线?
答:一个5124的RAM芯片需要9根地址线,4根数据线。组成一个64K8的存储器需要256个RAM芯片,128个芯片组,7根芯片组选择地址线。
4.由Intel2164DRAM芯片组成一个64K8的存储器,共需多少个DRAM芯片?若进行刷新操作,需要几次才能刷新完毕?
答:组成一个64K8的存储器,共需8个DRAM芯片。需要128次才能刷新完毕,7个触发器。
第7章 练习题
1.选择题
(1)B (2)A、B (3) C
2.填空题
(1)01B0H,01B3H,4
(2)8 ,36
(3)中断请求、中断判优、中断响应、中断服务、中断返回
3.问答题
(1)试说明8086CPU对INTR的响应过程。若某外部中断源通过8259A的IR4接入8086CPU系统,试说明应做哪几个方面的工作才能使该中断正常工作。
答:响应过程:1)CPU在每执行完一条指令后,自动检测是否有INTR中断请求;2)判断是否响应INTR线上的中断请求;3)确定中断向量地址;4)保存断点;5)执行中断服务程序;6)中断返回。
若外部中断源通过IR4接入8086系统,应做:1)设置8259A的初始化命令字和相关操作命令字;2)系统开中断。
(2)说明软中断与子程序调用在使用时有何区别。
答:软中断是由CPU根据程序的某条指令或者程序员对标志寄存器中某个标志位的设置而产生的;子程序调用是由CALL指令引起的。
(3)采用DMA方式为什么能进行高速数据传送?
答:DMA是一种直接存储器存取方式,利用这种方式,可以在没有CPU干预的情况下,存储器与外设之间或存储器与存储器之间进行直接数据传输,这样可以大大提高数据传输的速度。
(4)简述DMA控制器8237A的工作周期。
答:8237A在系统中的工作状态可分为两种工作周期:DMA空闲周期和DMA有效周期。
当8237A的所有通道均没有DMA请求时,芯片即处于空闲周期,此时8237A作为普通接口芯片受CPU控制,处于从属状态。当8237A采样到某通道有DMA请求,即向CPU发总线请求信号,一旦获得总线控制权则由空闲周期进入有效周期,此时8237A作为系统的主控芯片,处于主控状态.
(5)8237A在进行单字节方式DMA传送和块传送时,有什么区别?
答:1)单字节传送方式:每次DMA操作仅传送一个字节数据,传送后当前地址寄存器加1或减1,并将当前字节计数器减1,保持请求信号HQR无效,交出总线控制权,随后再次请求DMA传送下一个字节数据,如此往复直到当前字节计数器减为0FFFFH时终止。
2)数据块传送方式:8237A一旦获得总线控制权,便开始连续传送数据,每传送一个字节就自动修改地址,并使要传送的字节数减1,直到当前字节计数器减为0FFFFH时产生终止信号,或者受到外部的信号时结束传送,交出总线权。
4.下面是一个对8259A进行初始化的程序,请加上注释,并具体说明各初始化命令字的含义。
MOV AL,13H ;设置 ICW1 命令字 边沿触发方式,单片8259A需要设置 ICW4
MOV DX,40H
OUT DX,AL
INC DX ;DX 增 1,为设置下面的命令字做准备
MOV AL,08H ;设置 ICW2中断类型号为从 08H ~0FH
OUT DX,AL
MOV AL,09H ;设置 ICW4为8088模式,一般 EOI 缓冲方式,全嵌套方式
OUT DX,AL
系统分配给8259A的I/O地址为40H和41H
5.设8259A的偶地址是1000H,试编写屏蔽8259A中的IR3,IR4和IR6中断请求的程序。
MOV DX,1000H ;指向8259A的偶地址
MOV AL,01011000B ;使IMR的D3、D4、D6位为1
0UT DX,AL
8259A的OCW1可以实现中断源的屏蔽与开放。
6.某8086CPU系统的中断系统由两片8259A级联组成,从片联在主片的IR3上,主、从8259A的IR5上各接有一个外部中断源,其中断类型码分别为0DH,95H。假设它们的中断入口地址均在同一段中,段基址为1000H,偏移地址分别是200H,300H;所有中断都采用边沿触发方式、全嵌套方式、正常EOI结束方式。
(1)写出主、从8259A中断向量地址的范围;
(2)试编写全部初始化程序。
解:(1)主8259A的中断类型码的范围为:08H0FH,中断向量地址的范围为:20H3CH。从8258A的中断类型码的范围:90H97H,中断向量地址范围为:240H25CH。
(2)主8259A初始化程序段
MOV AX,00H
MOV DS,AX ;中断向量表的段地址为0000H
MOV BX,0DH4 ;取中断向量地址
MOV AX,200H ;取中断向量并送入中断向量表
MOV [BX],AX
MOV AX,1000H
MOV [BX+2],AX
MOV AL,00010001B ;ICW1边沿触发,级联方式,写入ICW4
OUT 30H,AL
MOV AL,08H ;ICW2中断类型号范围
OUT 31H,AL
MOV AL,00000100B ;ICW3从片联在主片的IR3上
OUT 31H,AL
MOV AL,00011101B ;ICW4全嵌套方式,正常EOI结束方式
OUT 31H,AL
从8259A初始化程序段
MOV AX,00H
MOV DS,AX ;中断向量表的段地址为0000H
MOV BX,95H4 ;取中断向量地址
MOV AX,300H ;取中断向量并送入中断向量表
MOV [BX],AX
MOV AX,1000H
MOV [BX+2],AX
MOV AL,00010001B
OUT 36H,AL
MOV AL,90H
OUT 37H,AL
MOV AL,00000011
OUT 37H,AL
MOV AL,0001
7.设计8237A的初始化程序。要求:通道0工作于快传送写模式,地址加1变化,允许自动预置功能;通道1工作于单字节传送,地址减1变化,禁止自动预置功能;通道2、通道3和通道1工作于相同的方式。8237A的DACK为高电平有效,DREQ为低电平有效,采用循环优先级方式启动8237A工作。
MOV DX,DMA+0DH ;DMA+0DH为复位命令端口地址
MOV AL,0 ;发复位命令
OUT DX,AL
MOV AL,10110100B ;设置通道0方式字
MOV DX,DMA+0BH
OUT DX,AL
MOV AL,01001001B ;设置通道1方式字
MOV DX,DMA+0BH
OUT DX,AL
MOV AL,01001010B ;设置通道2方式字
MOV DX,DMA+0BH
OUT DX,AL
MOV AL,01001011B ;设置通道3方式字
M0V DX,DMA+0BH
OUT DX,AL
MOV AL,10010000B ;设置控制字
MOV DX,DMA+08H
OUT DX,AL
8.试编写程序段,要求利用8237A在存储区的两个区域BUF1和BUF2之间直接传送数据,传送的数据长度为64KB
MOV AL,04H
MOV DX,DMA+08H ;控制寄存器端口
OUT DX,AL ;设控制字,禁止8237A工作
MOV DX,DMA+0DH ;复位命令端口
OUT DX,AL ;发复位命令
MOV DX,DMA+00H ;通道0地址寄存器端口
MOV AX,BUF1 ;源数据区首址
OUT DX,AL ;写入地址低8位
MOV AL,AH
OUT DX,AL ;写入地址高8位
MOV DX,DMA+02H ;通道1基地址与当前地址
MOV AX,BUF2 ;目的数据区首址
OUT DX,AL ;写入地址低8位
MOV AL,AH
OUT DX,AL ;写入地址高8位
MOV DX,DMA+03H ;通道1基计数与当前字节计数
MOV AX,0FFFFH
OUT DX,AL ;写入初始值低8位
MOV AL,AH
OUT DX,AL ;写入初始值高8位
MOV DX,DMA+0CH ;先/后触发器端口
OUT DX,AL ; 清先/后触发器端口
MOV DX,DMA+0BH ;方式寄存器端口
MOV AL,88H
OUT DX,AL ;设通道0方式字,数据块读 增量
MOV DX,DMA+0CH
OUT DX,AL ; 清先/后触发器端口
MOV DX,DMA+0BH ;方式寄存器端口
MOV AL,85H
OUT DX,AL ;设通道1方式字,数据块写 增量
MOV DX,DMA+0CH
OUT DX,AL ; 清先/后触发器端口
MOV DX,DMA+0FH ;主屏蔽字端口
MOV AL,0CH
OUT DX,AL ;屏蔽通道2、3
MOV DX,DMA+0CH
OUT DX,AL ; 清先/后触发器端口
MOV DX,DMA+08H ; 控制寄存器端口
MOV AL,01H
OUT DX,AL ;设控制字,允许存储器到存储器,启动8237A工作
MOV DX,DMA+0CH
OUT DX,AL ; 清先/后触发器端口
MOV DX,DMA+09H ;请求寄存器端口
MOV AL,04H
OUT DX,AL ;向通道0发出DMA请求
MOV DX,DMA+08H ; 读状态寄存器端口
AA1:IN AL,DX
JZ AA1
MOV DX,DMA+0CH
OUT DX,AL ; 清先/后触发器端口
MOV DX,DMA+09H ;请求寄存器端口
MOV AL,00H
OUT DX,AL ;通道0撤销DMA请求
MOV DX,DMA+0CH
OUT DX,AL ; 清先/后触发器端口
MOV DX,DMA+08H ; 设控制字
MOV AL,04H
OUT DX,AL ;禁止8237A工作
HLT
第8章 练习题
1.选择题
(1)C (2)B
2.填空题
设某接口的状态端口地址为100H,状态位从D7位输入,数据端口的地址为200H,输入数据的总字节数为200,输入数据段放在内存单元的首地址为300,查询式输入数据的程序段如下。
MOV SI,300
MOV CX,200
INPUT: IN AL,100H
TEST AL,80H
JZ INPUT
IN AL,200H
MOV [SI],AL
INC SI
LOOP INPUT
3.问答题
(1)当接口电路与系统总线相连接时,为什么要遵循“输入要经过三态,输出要锁存”的原则?
答:接口电路是介于主机和外设之间的一种缓冲电路,它使外设与总线隔离,起缓冲、暂存数据的作用。因为数据总线是各种设备以及存储器传送数据的公共总线,任何设备都不允许长期占用数据总线,而仅允许被选中的设备在读/写周期中享用数据总线,这就需要接口电路为输入设备提供三态缓冲作用,只在读/写周期中为被选中的设备开放与系统数据总线的连接,即输入要经三态;另外,对于输出接口,当快速的CPU要将数据传送到慢速的外设时,事先需要把数据送到锁存器中,等外设做好接收数据的准备工作后再把数据取走。
(2)I/O 接口的主要功能有哪些? 一般有哪两种编址方式?两种编址方式各自有什么特点?
答:I/O 接口的主要功能有:l)解决 CPU 与外设之间速度不匹配问题;2)实现信号电平的转换;3)实现信号格式的转换;
I/O 端口的编址方式有两种:统一编址方式和独立编址方式。
统一编址方式:优点是简化了指令系统的设计,访问 I/O 设备的指令类型多、功能强, I/O 地址空间可大可小。缺点是I/O 端口占用了存储单元的地址空间,且 I/O 译码电路变得较复杂。访问存储器的指令一般要比较长,这样延长了输入输出操作时间。独立编址方式:优点是可读性好,I/O 指令长度短,执行的速度快,占用内存空间少,I/O 地址译码电路较简单。缺点是CPU 指令系统中必须有专门的 IN 和 OUT 指令,而且这些指令的功能没有访问存储器的指令强。
(3)按照与CPU之间数据传输的方向分,可以将外部设备分为哪几类?外设与CPU之间传输的信号可以分为哪三种?
答:按照与CPU之间数据传输的方向分,可以将外部设备分为三类:输入设备、输出设备及I/O复合设备。
外设与CPU之间传输的信号可以分为三类:数据信号、状态信号、控制信号。
(4)何为总线?系统总线实现数据传输的操作过程是如何在主控模块的控制下进行的?
答:用于各部件之间传送信息的公共信号线称为总线。
若系统总线上只有一个主控模块,就没有总线请求阶段,但当系统总线上有多个主控模块时,则需提出申请,由总线仲裁部分确定总线使用权。主控模块取得总线使用权后,通过地址总线发出本次打算访问的从属模块的地址,通过数据总线发出相关命令。当主控模块和从属模块之间联系成功后,就可以进行数据传输,数据由源模块发出经数据总线送入目的模块。当数据传输完成后,当前主控模块的有关信息均从系统总线上撤除,让出总线的控制权。
(5)根据总线中信息传送的类型可分为哪几种?若按总线的规模、用途和应用场合又可分成哪几类?一般总线完成一次数据传输的操作过程可分为哪4个阶段?
答:根据总线中信息传送的类型可分为三种:地址总线、数据总线和控制总线。
按总线的规模、用途和应用场合又可分成四类:芯片内部总线、元件级总线、系统总线和外部总线。
一般总线完成一次数据传输的操作过程可分为4个阶段:总线请求阶段、寻址阶段、传输阶段、结束阶段。
4.在8086微型计算机系统中,有一外设的接口地址为2A8H~2AFH,请用74LS138译码器设计符合要求的地址译码电路。
解:该接口共有8个端口地址,取地址码最低3位A2、A1、A0作为接口内不同端口的选择。高13位地址码译出本接口的选择地址2A8H
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
0 0 0 0 0 0 1 0 1 0 1 0 1 X X X
在最小模式下,译码电路如下。
5.某系统分别用74LS244和74LS273作为输入输出接口。其输入口的地址为1000H,输出口的地址为2000H,试编写程序,当输入口的bit1,bit3和bit5位同时为1时,把以DATA为首地址的50个单元的数据从输出口输出;如果不满足上述条件则等待。
MOV SI,OFFSET DATA
MOV CX,50
LP1: MOV DX,1000H
IN AL,DX
AND AL,2AH
CMP AL,2AH
JNZ LP1
OUTPUT:MOV AL,[SI]
MOV DX,2000H
OUT DX,AL
INC SI
LOOP OUTPUT
6.一个采用查询式数据传送的输出接口,其数据端口地址为 300H,状态端口地址为 301H,外设状态位用 D7 位表示,并约定低电平有效。如果要将存储器缓冲区 DATA 中的 200 个字节数据通过该输出口输出,画出流程图,编写控制程序段。
程序段为:
LEA SI,DATA
MOV CX,200
LP1: MOV DX,301H
IN AL,DX
TEST AL,80H
JNZ LP1
DEC DX
MOV AL,[SI]
OUT DX,AL
INC SI
LOOP LP1
第 9 章
1、 (1)D (2)C (3)A (4)D (5)C (6)D (7)C (8)A
2、填空题
(1)3,基本输入/输出方式,选通输入/输出方式,双向总线 I/O 方式
(2)外设响应信号
(3)方式选择控制字,置位/复位控制字
(4)中断允许信号,PC的某些位
(5)移位,移位
(6)低电平,8
(7)5.36s
(8)发送线、接收线、信号地线
3.问答题
(1)并行接口和串行接口各有哪些特点?
答:并行接口的特点:1)通过多根信号线同时传送多位数据;2)多用于传输距离短,数据量大,速度高的实时传输场合;3)传送时一般不需要特定的数据传送格式。
串行接口特点:所需传送线少,成本低,而且能实现远距离通信。但传送速度较慢。
(2)8255A的三种工作方式有何不同?三个8位的数据端口功能有何异同?
答:8255A的三种工作方式为:基本输入/输出方式(方式0)、选通输入/输出方式(方式1)、双向总线 I/O 方式(方式2)。方式0没有专门的联络信号,一般只能用于简单的、无条件的传输场合,端口A、B、C均可工作于该方式下。方式1端口A、B的输入输出受端口C相应位控制。方式2时可实现数据的双向传输,只有端口A可以工作在方式2。
三个8位的数据端口:端口A、端口B和端口C。端口A可以设置为输入端口,也可以设置为输出端口,还可以设置为双向的8位数据端口,输入/输出时端口都具有锁存器、缓冲器,具有三种工作方式,是功能最齐全的数据端口。端口B可以设置为输入端口,也可以设置为输出端口,但不能设置为双向数据端口,端口B输入不能锁存,而输出可以锁存,具有两种工作方式。端口C有位寻址功能,能作为联络线配合端口A和B工作,端口C还能作为两个4位的端口使用,可以设置为输入端口,也可以设置为输出端口,但不能设置为双向数据端口。
(3)8251A同步和异步串行通信的初始化过程有何区别?
答:异步方式字格式
S2 S1 EP PEN L2 L1 B2 B1
同步方式字格式
SCS ESD EP PEN L2 L1 0 0
可见由方式字的最低两位确定8251A的工作方式,当全为0时,工作于同步方式,否则工作于异步方式。8251A工作于异步方式时,采用方式字的S2、S1两位来确定异步格式中的停止位的位数;当工作于同步方式时,SCS、ESD用于确定时内同步还是外同步,以及同步字符的个数。
(4)若8251A的工作方式寄存器内容为11111010,为使接收的波特率和发送的波特率分别为1200bit/s和4800bit/s,则此时RxC和TxC上分别接何种时钟信号频率?
答:RxC上接收时钟频率=120016Hz=19.2kHz
TxC上接发时钟频率=480016Hz=76.8kHz
4.设 8255A 的端口 A 和 B 均工作与方式 1,端口 A 输出,端口 B 和 C 为输入,端口 A 地址为 0060H(接口连续编址)。
(1)写出工作方式控制字。
0AFH
(2)编写 8255A 的初始化程序。
MOV DX,0063 H
MOV AL,0AFH
OUT DX,AL
(3)若要用置位/复位方式将 PC2 置为 1,PC7 清 0,试写出相应程序。
MOV DX,0063H
MOV AL,05H
OUT DX,AL
MOV AL,0EH
OUT DX,AL
5.用8255A作为打印机接口,如图9-33所示。当8255A向打印机送出一个负脉冲作为选通信号() 时,端口A的字符数据就送往打印机。当打印机的应答信号BUSY为0时,表示打印机不忙,可以发送数据到打印机。若8255A的端口地址为60H~63H,需打印的数据存放在以1000H数据为首地址的内存RAM中,数据长度为200,试编写向打印机发送数据的程序。
MOV BX,1000H
MOV CX,200
MOV AL,10000001B
OUT 63H,AL
LOP: IN AL,62H
TEST AL,80H
JNZ LOP
MOV AL,[BX]
OUT 60H,AL
MOV AL,01H
OUT 63H,AL
MOV AL,00H
OUT 63H,AL
MOV AL,01H
OUT 63H,AL
INC BX
LOOP LOP
6.设8251A的控制口地址为0C2H,数据口地址为0C0H,按下列要求对8251A进行初始化。
(1)要求工作于异步方式,波特率系数为16,奇校验,8位数据位,1位停止位。
(2)允许接收、允许发送、全部错误标志复位。
(3)查询8251A的状态字,当接收准备就绪时,则从8251A输入数据,否则等待。
解:初始化程序如下
MOV DX,0C2H ;控制口地址
MOV AL,01011110B ;要求(1)
OUT DX,AL
MOV AL,00010101B ;要求(2)
OUT DX,AL
WAIT: IN AL,DX ;判断接收是否准备就绪
TEST AL,02H
JZ WAIT
MOV DX,0C0H
IN AL,DX
7.若8251A的地址为30H和31H,收发时钟(RxC,TxC)频率为38.4kHz,与引脚相连,要求波特率为2400,每帧字符的数据位数为7,停止位数为1,试编写出偶校验的半双工异步通讯的处于发送状态的初始化程序。
解:收发时钟频率为38.4kHz,波特率为2400bit/s,故波特率因子为38400/2400=16。
XOR AX,AX
MOV DX,31H
OUT DX,AL
OUT DX,AL
OUT DX,AL
MOV AL,40H
OUT DX,AL
MOV AL,01111010B
OUT DX,AL
MOV AL,00110101B
OUT DX,AL
第10章 练习题
1.选择题
(1)B (2)B (3)B (4)C
2.填空题
MOV AL,30H
OUT 43H,AL
MOV AL,34H
OUT 40H,AL
MOV AL,12H
OUT 40H,AL
3.问答题
(1)A/D和D/A转换器在微型计算机应用中起到什么作用?各有哪些性能指标?
答:D/A转换器是将数字量转换成模拟量的器件。主要性能指标:分辨率、转换精度、建立时间、线性误差、温度系数。
A/D转换器是将模拟量转换为数字量的器件。主要性能指标:分辨率、转换精度、转换时间、量程、温度参数。
(2)A/D和D/A转换器与CPU连接时应考虑哪几个方面?
答:D/A转换器与CPU接口时,应考虑两个方面:1)数字量的输入;2)输出电路。
A/D转换器与CPU接口时,应考虑四个方面:1)启动转换;2)多通道模拟量选择;3)数字量输出线的连接;4)转换结果的读取。
(3)DAC0832转换器有哪几种工作方式?每种工作方式如何实现?
答:DAC0832提供三种工作方式:直通工作方式、单缓冲工作方式、双缓冲工作方式。
直通工作方式的实现:、、和引脚直接接数字地,ILE引脚为高电平。
单缓冲工作方式的实现:使输入寄存器或DAC寄存器中的任意一个工作在直通状态,另一个工作在受控锁存状态,只执行一次写操作。
双缓冲工作方式的实现:CPU对DAC0832进行两次写操作。
(4)ADC的转换结果信号起什么作用?如何使用该信号读取转换结果?
答:ADC的转换结果信号用于判断转换是否结束,如果转换结束,则可读取转换结果。
判断转换结束并读取转换结果的方式有三种:定时读取、程序查询、中断方式。
4.设一个8253控制端口的地址为143H,三个计数器的端口地址分别为140H、141H和142H,要求将8253计数器0设置为方式0,计数初值为3000H;计数器1设置为方式2,计数初值为2010H;计数器2设置为方式4,计数初值为4030H。试编出相应的初始化程序。
解:MOV DX,143H
MOV AL,00110000B
OUT DX,AL
MOV DX,140H
MOV AL,0
OUT DX,AL
MOV AL,30H
OUT DX,AL
MOV DX,143H
MOV AL,01110100B
OUT DX,AL
MOV DX,141H
MOV AL,10H
OUT DX,AL
MOV AL,20H
OUT DX,AL
MOV DX,143H
MOV AL,10111001B
OUT DX,AL
MOV DX,142H
MOV AL,30H
OUT DX,AL
MOV AL,40H
OUT DX,AL
5.设8253时钟频率CLK为1MHz,其端口地址同题4,利用8253计数器0软件产生一次性中断,要求在送完计数初值后经过20ms产生一次中断,试编写初始化程序。
解:计数器0工作在方式0,按二进制计数,计数初值=20000/1=20000=4E20H。
MOV DX,143H
MOV AL,00110000B
OUT DX,AL
MOV DX,140H
MOV AL,20H
OUT DX,AL
MOV AL,4EH
OUT DX,AL
6.在某微机控制系统中。8251A作为CPU的全双工异步串行通信接口,采用中断方式工作,波特率因子为64,字符长度为7,偶校验,1位停止位,发送和接收数据的波特率均为2400bit/s。8253的计数器2为8251A提供发送、接收时钟TxC和RxC,CLK输入信号为8MHz。已知8251A的端口地址为0C0H和0C1H,8253的端口地址为330H~333H。请编写8251A和8253的初始化程序段。
解:波特率为2400bit/s,波特率因子为64,故收发时钟频率=2400*64=153.6kHz,即周期为6.5μs。时钟为8MHz,即周期为0.125μs,故计数初值=6.5/0.125=52,采用方式3。
8251A的初始化程序段。
XOR AX,AX
MOV DX,0C1H
OUT DX,AL
OUT DX,AL
OUT DX,AL
MOV AL,40H
OUT DX,AL
MOV AL,01111011B
OUT DX,AL
MOV AL,00010101B
OUT DX,AL
8253的初始化程序段
MOV AL,00010110B
MOV DX,333H
OUT DX,AL
MOV AL,52
MOV DX,330H
OUT DX,AL
7.应用8255A和AD574设计一个A/D转换的接口电路,设8255A的端口地址为060H和063H,要求采用查询方式连续采样100次,并将12位采样结果保存到BUFF开始的内存缓冲区,请画出硬件连线示意图并编程实现。
解:AD574进行12位转换时,可以通过并行接口电路8255A与CPU进行连接,如下图所示。12位数字输出端分别与8255A的PA口和PB口的低4位相连。CE、、信号与8255A的PC7~PC5相连,STS信号与8255A的PC0相连,当转换结束时发出低电平信号。
XOR SI,SI
MOV CX,100
MOV AL,10010011B ;设定8255A的A、B口工作于方式0输入
OUT 63H,AL ;C口高4位输入,低4位输出
NEXT:MOV AL,00001010B ;使为低电平
OUT 63H,AL
MOV AL,00001100B ;使为低电平
OUT 63H,AL
MOV AL,00001111B ;使CE为高电平,启动A/D转换
OUT 63H,AL
LOP:IN AL,62H
TEST AL,01H
JNZ LOP
MOV AL,00001011B ;使为高电平,准备读A/D转换结果
OUT 63H,AL
NOP
NOP
IN AL,61H
AND AL,0FH
MOV BX,AL
IN AL,60H
MOV BL,AL
MOV BUFF[SI],BX
INC SI
INC SI
LOOP NEXT
MOV AL,00001110B
OUT 63H,AL
MOV AL,0000110DB
OUT 63H,AL
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/186617.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...