曹玉珍 微机原理课后作业答案18章Word文件下载.docx
《曹玉珍 微机原理课后作业答案18章Word文件下载.docx》由会员分享,可在线阅读,更多相关《曹玉珍 微机原理课后作业答案18章Word文件下载.docx(20页珍藏版)》请在冰点文库上搜索。
4037H*10H+000AH=4037AH
2)5075H:
002AH
5075H*10H+002AH=5077AH
3)8288H:
037AH
8288H*10H+037AH=825FAH
4)0010H:
E05BH
0010H*10H+E05BH=0E15BH
15.解:
(1)47H+38H
(2)52H-7FH
17.解:
1)物理地址范围:
2360*10H+0000H=23600H
2360*10H+0800H=23E00H
所以范围为:
23600H~23E00H
2)SP的内容为0800H-20D=0800H-14H=07ECH
第3章答案
1.答:
源操作数
目的操作数
1
立即寻址
寄存器寻址
2
直接寻址
3
寄存器间接寻址
4
寄存器相对寻址
5
6
相对基址变址寻址
7
基址变址寻址
8
2.答:
(1)(DS)*10H+EA=2100H*10H+0020=21020H
(2)(DS)*10H+(BX)+10=2100H*10H+0200+0AH=2120AH
(3)(DS)*10H+(SI)+DELTA=2100H*10H+0540H+0100H=21640H
(4)(DS)*10H+(BP)+(DI)=2100H*10H+0120H+(DI)
(5)(ES)*10H+EA=3000H*10H+1020H=3120H
4.答:
(1)03H
(2)03H(3)0A8H(4)0A9H
(5)1EFH(6)01H(7)14H(8)
7.答:
MOVAL,25H
SHLAL,1
MOVBL,15H
MULBL
AX=0612H
10.答:
BX=0000000010110111
循环左移1位后:
0000000101101110
循环右移3位后:
1100000000101101
BX=C02DH
第4章答案
第1题答案:
(1)BUF1DB240DUP(?
)
(2)DB‘ABCD’,‘1234’
(3)
P108第3题答案:
DATASSEGMENT
;
此处输入数据段代码
DATASENDS
STACKSSEGMENT
DB20DUP(?
);
此处输入堆栈段代码
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX
MOVAX,562CH
XORBX,BX
MOVCX,16
A0:
ROLAX,1
JCA1
INCBH
JMPA2
A1:
INCBL
A2:
LOOPA0
MOVCX,BX
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
P108第7题答案:
BUF1DB12H,25H,0FEH,13H,25H,1EH,0F5H,1AH,19H,22H
BUF2DW?
'
$'
);
MOVCX,9
MOVBH,BUF1
MOVBL,BUF1
LEASI,BUF1
A0:
INCSI
CMP[SI],BH
JAA1
CMP[SI],BL
JAA2
MOVBL,[SI]
A1:
MOVBH,[SI]
A2:
LOOPA0
第5章答案
6.答:
16片;
A12~A0;
A15,A14,A13
9.答:
(1)A8~A0,D3~D0
(2)A9~A0,D3~D0
(3)A9~A0,D7~D0(4)A10~A0,D0
(5)A11~A0,D0(6)A13~A0,D3~D0
(7)A15~A0,D0(8)A17~A0,D3~D0
;
片内寻址线:
A8~A0;
总地址线:
A12~A0
A9~A0;
A14~A0
A11~A0
(4)
A11~A0;
A15~A0
第6章答案
接口是CPU与“外部世界”的连接电路,是CPU与存储器、输入输出设备等外设之间协调动作的控制电路;
从更一般的意义上说,接口是在两个电路或设备之间,使两者动作条件相配合的连接电路。
典型的I/O接口包括数据端口、状态端口、控制端口及控制逻辑电路。
数据端口是双向的,用于CPU与外设之间的数据传送和缓冲;
状态端口用于传送外设的状态给CPU;
控制端口用于传送CPU向外设所发送的控制命令。
3.答:
I/O端口的寻址方式有直接寻址和间接寻址两种。
直接寻址只能用于端口地址在00H~0FFH范围时,在IN和OUT指令中直接给出端口地址;
而间接寻址可以用于端口地址为0000H~0FFFFH范围,但端口地址在100H~0FFFFH范围时只能用间接寻址方式,端口地址先存放于DX寄存器中,然后在IN或OUT指令中由DX做为端口地址指针。
5.答:
I/O编址方式有统一编址方式和独立编址方式两种。
1)I/O端口和存储器统一编址
这种编址方式是外设端口地址和存储器单元地址,共用存储器的访问空间,即一个外设端口占用一个存储单元地址。
不用专用的I/O指令,访问I/O端口使用的是存储器读/写操作指令。
①优点:
CPU访问存储单元的所有指令都可用于访问I/O端口;
②缺点:
其一是I/O端口占用了内存空间;
其二是在程序中不能一目了然的区分当前正在进行的访问是存储器还是I/O端口。
2)I/O端口独立编址
这种编址方式是外设端口地址和存储器单元地址,分别是建立地址空间。
专用的I/O指令访问I/O端口。
其一是I/O端口不占用内存空间;
其二是访问I/O端口指令仅需两个字节,执行速度快;
其三是读程序时只要是I/O指令,即知是CPU访问I/O端口。
其一是要求CPU有独立的I/O指令;
其二是CPU访问I/O端口的寻址方式少。
8.答:
(1)在一个芯片中有4个独立的DMA通道,每个通道均可独立地传送数据。
(2)每个通道的DMA请求都可以分别允许和禁止。
(3)每个通道的DMA请求有不同的优先权,优先权可以是固定的,也可以是旋转的。
(4)每个通道—次传送的最大长度可达64KB。
可以在存储器与外设间进行数据传送,也可以在存储器的两个区域之间进行传送。
(5)8237的DMA有单字节传送、数据块传送、请求传送方式、级连方式等4种传送方式。
(6)有一条结束处理的输入信号,允许外界用此输入端来结束DMA传送或重新初始化。
(7)8237可以级联、任意扩展通道。
1)单字节传送模式
在这种模式下,8237每完成一个字节传送后,内部字节计数器便减1,地址寄存器的值加l或减1。
随后,8237释放系统总线,这样CPU至少可以得到一个总线周期。
但是8237在释放总线后,会立即对DREQ端进行测试,一旦DREQ有效,则8237会立即发总线请求,在获得总线控制权后,又成为总线主模块而进行DMA传送。
2)块(成组)传送模式
在这种模式下,可以连续进行多个字节的传送,只有当字节计数器减为0,从而在端输出一个负脉冲或者外部I/O接口往DMA控制器的端送一个低电平信号时,8237才释放总线而结束传送。
第7章答案
中断源请求中断→中断判优→中断响应→中断服务→中断返回。
中断矢量号就是中断的类型号。
中断矢量就是中断服务程序的入口地址。
中断矢量表是中断类型号与它对应的中断服务程序入口地址之间的换算表。
中断矢量表占用存储器的最低地址区,每个中断矢量占用4个字节。
由于14H*4=0050H,那么类型14H的中断矢量在存储器的0000H:
0050H~0000H:
0053H单元存放。
将中断服务程序入口地址装入中断矢量表的方法为:
MOVAX,0000H
MOVDS,AX
MOVAX,SEGIRQ14S;
中断服务程序入口地址的段地址送中断矢量表
MOVSI,0050H
MOV[SI],AX;
将14H的入口地址的段地址送0000H:
0050H单元
MOVAX,OFFSETIRQ14S
MOVSI,0052H
MOV[SI],AX
6.答:
(1)可为CPU管理和处理8个中断源电路的中断,并对它们进行优先级管理。
(2)可与其它8个8259A芯片组成主从式中断系统,实现64级中断源控制。
(3)优先级方式在执行程序时可动态改变,有多种中断管理方式。
(4)每一中断源中断都可以屏蔽或允许,可通过编程选择。
(5)能自动送出中断类型号,使CPU方便的找到中断服务程序的入口地址。
(6)允许中断嵌套。
第8章答案
8255A芯片的端口有数据端口A、端口B、端口C和控制端口四个端口。
三种工作方式,即方式0--基本输入输出方式、方式1--选通输入输出方式及方式2--双向输入输出方式。
方式0无固定的联络信号,当端口工作于方式0时,由CPU执行IN/OUT指令就可以实现A、B、C三端口数据的输入/输出传送操作,另外,端口C的某些位也可以做为端口A、B的控制和状态信息位,而且此信息位是由C口按位置位/复位控制字产生。
在方式1下,端口A或端口B仍作为数据端口,端口C的某些位固定作为应答信号或中断请求(这种规定在输入和输出时不相同),其余位可指定为输入或输出,但只能工作于方式0。
方式2类似于方式1输入和输出的组合。
设定为方式2后,端口C的5位作为指定的控制/联络信号,端口A既做为输入端口又做为输出端口,双向传送数据,而端口B仍然可选方式0或方式1,做为输入端口或者输出端口。
方式选择控制字:
10111111B;
此时,方式选择控制字中的D3、D1用于指定C口在方式1下做为A口和B口控制位以外的其余位做为输入线。
(1)初始化程序为:
CLI;
关中断
MOVDX,CONTROL-PORT
MOVAL,10000010B;
A口工作于方式0输出,B口工作于方式0输入,C口工作于方式0输出
OUTDX,AL
或者
MOVAL,10011001B;
A口工作于方式0输入,B口工作于方式0输出,C口工作于方式0输入
(2)初始化程序为:
MOVAL,10100010B;
A口工作于方式1输出,B口工作于方式0输入,C口其余位输出
STI;
开中断
(3)初始化程序为:
MOVAL,11000100B;
A口工作于方式2,B口工作于方式1输出,C口其余位输出
(4)初始化程序为:
MOVAL,10110100B;
MOVAL,00001111B;
PC7置1
MOVAL,00001100B;
PC6清0
设8255A的端口地址为60H、61H、62H、63H,则初始化程序为:
MOVAL,10010000B
OUT63H,AL
INAL,60H
OUTAL,61H
CMPAL,80H
JNLA0
MOVAL,00001010B
MOVAL,00000100B
JMPSTOP
MOVAL,00001011B
MOVAL,00000101B
STOP:
MOVAH,4CH
INT21H
16.答:
8253有三个定时器/计数器,即计数器0、计数器1和计数器2。
每个计数器的操作是完全独立的,但它们的结构相同。
每一个计数器包含一个16位的计数初值寄存器、一个16位的计数执行单元和一个16位的输出锁存器。
计数初值寄存器用以存放计数初始值,CPU用OUT指令向其写入计数初值。
锁存器在计数器工作的过程中跟随计数值的变化,在接收到CPU发来的读计数值命令时,用以锁存计数值,供CPU读取;
读取完毕之后,输出锁存器又跟随计数执行单元变化。
方式0(计数结束产生中断)
写入控制字,OUT端为低电平,计数初值装入该计数器后,等待到GATE输入高电平时,计数器开始递减计数。
在整个计数过程中,OUT保持低电平,当计数器减为0时,OUT输出高电平。
方式1(可编程单拍脉冲)
写入控制字,OUT端为高电平,计数初值装入该计数器后,在GATE信号的上升沿后的下一个CLK脉冲的下降沿开始计数,OUT变为低电平。
在整个计数过程中,OUT保持低电平,当计数器减为0时,OUT变为高电平,输出一个单脉冲,若GATE信号再由低变高,可再产生一个单脉冲,相当一个单稳态。
方式2(分频器或脉冲信号发生器)
8253相当于一个分频脉冲产生器,若计数值为N,则每输入N个CLK脉冲,输出一个脉冲,脉冲宽度等于N*CLK周期。
方式3(方波发生器)
输出周期性方波,若计数值为N,则输出的方波周期是N个CLK周期。
CPU写入控制字后OUT变高,写完计数值后自动开始计数,输出保持高电平。
当计到一半计数值时,输出变低,直到计数到0,输出又变为高,重新开始计数。
方式4(软件触发选通)
写入控制字,OUT端为高电平,写入计数初值后立即开始计数(相当软件触发启动),计数器计到0时,OUT变为低电平,经过一个CLK脉冲周期,OUT又变高,计数器停止计数,只有写入新计数值才能开始新的计数。
要求GATE一直为高电平。
方式5(硬件触发选通)
写入控制字,OUT变高,写入计数初值后,由GATE信号的上升沿触发开始计数。
计到0后,OUT变为低电平。
经一个CLK周期后,OUT又变为高电平,并停止计数,等下次GATE触发才能再计数。
17.答:
(1)输出端OUT的初始状态,方式0在写初值后,经N+1个时钟周期OUT端变为高电平,GATE=0停止计数,软触发单次负脉冲;
方式5,写入控制字后,输出为高,门控触发后,经N个时钟周期,OUT变低一个时钟周期。
方式5的输出波形是宽度为一个CLK时钟周期的负脉冲,由硬件触发启动。
(2)方式1与方式5工作过程相同,但输出波形不同,方式1输出的是宽度为N个CLK脉冲的低电平有效的脉冲(计数过程中输出为低),而方式5输出的是宽度为一个CLK脉冲的负脉冲(计数过程中输出为高)。
四、8255A应用举例
【例8.5】8255A端口A作为数据输出端口工作于方式0,接了8个发光二极管,端口B作为数据输入端口工作于方式0,要求单拨PB4对应的开关K4时,发光二极管全亮;
K4拨回原位又全灭。
单拨PB7对应的开关K7,单个发光二极管从VD0~VD7循环亮灯,K6回原位全灭。
设8255A端口地址为203H~206H。
【解】端口A、端口B都工作于方式0,因此采用无条件传送方式,端口A用于数据输出,端口B用于数据输入,因此得到8255A的方式选择控制字为10000010B=82H。
程序为
STACKSEGMENT
DW100DUP(?
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,SS:
STACK
MAIN:
MOVAL,82H;
8255A控制字
MOVDX,206H
OUTDX,AL;
8255A初始化
NEXT:
MOVDX,204H
INAL,DX;
读B口数据
TESTAL,04H;
测试PB4
JNZLIT;
PB4=1,转LIT,发光二极管全亮
MOVAL,00H;
否则全灭
JMPTRLT
LIT:
MOVAL,0FFH
TRLT:
MOVDX,203H
OUTDX,AL
MOVDX,204H
TESTAL,80H;
测试PB7
JNZCONT;
PB7=1,转CONT,发光二极管循环点亮
MOVDX,203H
JMPNEXT
MOVBL,01H
CONT:
MOVAL,BL
CALLDELAY;
调用延时程序
SHLBL,1
JNZCONT
CODEENDS
ENDMAIN
【例8.6】8255A作为字符式打印机接口,端口A工作于方式1,采用中断方式将内存BUF开始的数据区共20字节的数据输出到打印机上。
字符式打印机上输入引脚
为数据选通信号,输出引脚
为接收数据的响应信号。
地址线各位未用的均设为0。
由PC7充当打印机的数据选通信号,通过对PC7的置位/复位来产生选通。
同时,由PC2来接收打印机发出的响应信号作为能否输出的查询。
【解】由图8.11可以看出,8255A的端口地址范围为88H~8BH,芯片8259A的端口地址为90H、91H。
假设8259A初始化时送ICW2为08H,则8255AA口的中断类型码是0BH,此中断类型码对应的中断向量应放到中断向量表从2CH开始的4个单元中。
则参考程序为
DATASEGMENT
DATAENDS
CODE,DS:
DATA,SS:
MOVAL,0A0H
OUT8BH,AL;
设置8255A的控制字
MOVAL,01H;
使选通无效
OUT8BH,AL
MOVAX,DATA
MOVDS,AX
MOVAX,STACK
MOVSS,AX
MOVAX,OFFSETRINTR
MOVWORDPTR[002CH],AX
MOVAX,SEGRINTR
MOVWORDPTR[002EH],AX;
送中断向量
MOVAL,0DH
使8255AA口输出允许中断
LEADI,BUFF;
设置地址指针
MOVCX,99;
设置计数器初值
MOVAL,[DI]
OUT88H,AL;
输出一个字符
INCDI
MOVAL,00H
产生选通
INCAL
撤消选通
STI;
HLT;
等待中断
LOOPNEXT;
修改计数器的值,指向下一个要输出的字符
中断服务子程序为
RINTRPROC
PUSHAX
MOVAL,[DI]
OUT88H,AL:
从A口输出一个字符
MOVAL,00H
OUT8BH,AL:
MOV8BH,AL;
INCDI:
修改地址指针
IRET:
中断返回
RINTRENDP
由图8.12可以看出,8255A的端口地址范围为110H、112H、114H、116H,芯片8259A的端口地址为120H、122H。
例如在异步通信中,每秒传送480个字符,每个字符包括一个起始位、七个数据位、一个奇偶校验位和一个停止位共10位组成,则传送波特率为
10位×
480字符/秒=4800位/秒=4800bit/s
那么每一个信息位传送时间t位波特率的倒数为
例1:
8253控制LED。
要求:
LED点亮10秒,熄灭10秒
分析:
8253的数据线与CPU高8位数据线D8——D15相连,8253的各端口的地址为81H、83H、85H、87H。
OUT1输出占空比为1:
1的方波,8253端口1工作在方式3。
时钟频率为2MHz时,
16位计