微机原理课后答案Word格式文档下载.docx
- 文档编号:18496298
- 上传时间:2022-12-17
- 格式:DOCX
- 页数:17
- 大小:100.77KB
微机原理课后答案Word格式文档下载.docx
《微机原理课后答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《微机原理课后答案Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
8086/8088CPU内部设置了4个16位段寄存器,它们分别是代码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS、附加段寄存器ES,由它们给出相应逻辑段的首地址,称为“段基址”。
控制寄存器:
含指令指针IP及标志位寄存器FR。
IP用来存放将要执行的下一条指令在现行代码段中的偏移地址。
标志寄存器FR用来存放运算结果的特征
3.58086的存储器采用什么结构?
8086的存储器采用分体结构。
1M的存储空间分成两个存储体:
偶地址存储体和奇地址存储体,各为512K字节。
3.78086系统中的堆栈操作是按什么原则进行的?
堆栈操作的原则是后进先出。
4.3存储器的地址译码有几种方式?
各自的特点是什么?
常用的存储器地址译码有两种方式,即单译码和双译码方式。
单译码方式是一个“N中取1”的译码器,译码器输出驱动N根字线中的一根,每根字线由M位组成。
若某根字线被选中,则对应此线上的M位信号便同时被读出或写入,经输出缓冲放大器输出或输入一个M位的字。
主要用于小容量的存储器。
双译码方式采用的是两级译码电路。
当字选择线的根数N很大时,N=2p中的p必然也大,这时可将p分成两部分,如:
N=2p=2q+r=2q×
2r=X×
Y,这样便将对N的译码分别由X译码和Y译码两部分完成。
从而大大减少了选择线的数目。
4.4某RAM芯片的存储容量为1024×
8位,该芯片的外部引脚应有几条地址线?
几条数据线?
若已知某RAM芯片引脚中有13条地址线,8条数据线,那么该芯片的存储容量是多少?
该芯片的外部引脚应有10条地址线,8条数据线。
RAM芯片引脚中有13条地址线,8条数据线,那么该芯片的存储容量是8K×
8位。
4.5用Intel21141K×
4位的RAM芯片组成32K×
8位的存储器,需要多少块这样的芯片?
需要64块。
注:
扩展时需要的芯片数量可以这样计算:
要构成一个容量为M×
N位的存储器,若使用p×
k位的芯片(p<
M,k<
N),则构成这个存储器需要(M/p)×
(N/k)个这样的存储器芯片。
4.6利用2764芯片(EPROM,8K×
8位)并采用74LS138译码器进行全译码,在8086系统的最高地址区组成32KB的ROM,请画出这些芯片与系统总线连接的示意图。
5.1试出指令MOVBX,3040H和MOVBX,[3040H]有什么不同?
1、寻址方式不同:
立即数寻址和直接寻址。
2、运行结果不同:
MOVBX,3040H;
BX=3040H
MOVBX,[3040H];
将DS段3040H和3041H的内容送BX
5.2指出下列指令是否有错,并说明理由。
(1)MOV[DI],[SI];
错,内存单元之间不能直接进行数据传送
(2)MOVCS,AX;
错,CS不能做目的操作数
(3)MOV1200,AX;
错,立即数不能做目的操作数
(4)MOVDS,CS;
错,段寄存器之间不能互相传送
(5)PUSHFLAG;
对
(6)POPCS;
(7)MOVCL,AX;
错,源、目的操作数长度不一致
(8)MOV[5000H],[1000H];
5.3在8086中,堆栈操作是字操作还是字节操作?
已知SS=1050H,SP=0006H,AX=1234H,若对AX执行压栈操作(即执行PUSHAX);
试问AX的内容存放在何处?
堆栈操作是字操作。
入栈时“先减后压”(SP先减2,再压入操作数),执行压栈操作后AL的内容存放在10504H,AH的内容存放在10505H。
5.4假如要从200中减去AL中的内容,用SUB200,AL对吗?
如果不对,应采用什么方法?
不对,立即数不能作为目的操作数。
先把立即数传送到一个存储器或寄存器当中。
例如:
MOVBL,200
SUBBL,AL
或:
NEGAL
ADDAL,200
5.5编程求AX累加器和BX寄存器中两个无符号数之差的绝对值,结果放内存(2800H)单元中。
解:
CMPAX,BXCMPAX,BXCLC
JAPT1JAPT1SUBAX,BX
SUBBX,AXXCHGAX,BXJCPT1
MOVDX,2800HPT1:
SUBAX,BXMOVDI,2800H
MOVDX,BXMOV[2800H],AXMOV[DI],AX
HLTHLTHLT
PT1:
SUBAX,BXPT1:
SUBBX,AX
MOVDX,2800HMOVDI,2800H
MOVDX,AXMOV[DI],BX
HLTHLT
5.6若有两个4字节的无符号数相加,这两个数分别存放在2000H和3000H开始的存储单元,将所求的和存放在2000H开始的内存单元中,试编制程序。
MOVDI,2000H
LEASI,3000H
MOVAX,[DI]
MOVDX,[DI+2]
ADDAX,[SI]
ADCDX,[SI+2]
MOV[DI],AX
MOV[DI+2],DX
5.7用两种方法写出从88H端口读入信息的指令,再用两种方法写出从44H端口输出数据56H的指令。
方法一:
INAL,88H方法二:
MOVDX,0088H
INAX,DX
MOVAL,56HMOVAL,56H
OUT44H,ALMOVDX,0044H
OUTDX,AL
6.12指出以下四条指令的作用(HEX为数据段的一个变量名)
⑴MOVBX,HEX;
将变量HEX的内容传送到BX寄存器
⑵LEABX,HEX;
取变量HEX的偏移地址送BX
⑶MOVBX,OFFSEGHEX;
BX指向变量HEX的偏移地址
⑷MOVBX,SEGHEX;
将变量HEX所在段的段地址传送到BX
6.13下面是变量定义伪指令,
DATASEGMENT
BUFDW3DUP(5,2DUP(8))
CEDDB‘Welcometoyou’,ODH,OAH,‘$’
ADDRDWBUF
COUNTEQU$-CED
DATAENDS
问:
⑴按内存单元存放的先后次序,按字节写出数据段中的数据。
05H,00H,08H,00H,08H,00H,
05H,00H,08H,00H,08H,00H,
05H,00H,08H,00H,08H,00H,
57H,65H,6CH,63H,6FH,6DH,65H,20H,74H,6FH,20H,79H,6FH,75H,
0DH,0AH,24H,00H,00H
⑵说明对BUF,CED,ADDR等变量施行TYPE,LENGTHSIZE运算符后,其结果分别为多少?
TYPEBUF=2LENGTHBUF=3SIZEBUF=6
TYPECED=1LENGTHCED=1SIZECED=1
TYPEADDR=2LENGTHADDR=1SIZEADDR=2
⑶COUNT的值为多少?
19
6.17编写一个将16位二进制数转化为四位十六进制数的程序,并将十六进制数的各位显示出来。
注:
答案中给了一个假定的16位二进制数。
DATASEGMENT
BINDW1001110101111011B
HEXASCDB4DUP(20H)
DB‘$’
DATAENDS
STACK1SEGMENTPARASTACK
DW20HDUP(0)
STACKlENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACKl
BINHEX:
MOVCH,4;
十六进制数的位数
MOVBX,BIN;
取待转移数据
MOVDI,OFFSETHEXASC;
取存放ASCII码首地址
CONV1:
MOVCL,4
ROLBX,CL;
取4位二进制数
MOVAL,BL
ANDAL,0FH
CMPAL,09H;
是0-9吗?
JBEASCI;
是,转移
ADDAL,07H;
是A-F,先加07H
ASCI:
ADDAL,30H;
加30H
MOV[DI],AL;
存结果
INCDI;
修改指针
DECCH
JNECONVI;
计数未完,继续
LEADX,HEXASC
MOVAH,09H
INT21H
CODEENDS
ENDBINHEX
很多同学的答案:
ADW4
XDW(16位二进制数)
YDB4DUP(?
)
……
START:
MOVCX,A
LEADI,Y
AGAIN:
MOVBX,X
PUSHCX
DECCX
MOVING:
SHRBX,4
LOOPMOVING
POPCX
ANDBL,0FH
CMPBL,09H
JGDAYU
ADDBL,30H
JMPXIAOYU
DAYU:
ADDBL,37H
XIAOYU:
MOV[DI],BL
INCDI
LOOPAGAIN
LEADX,Y
MOVAH,09H
ENDSTART
7.1名词解释
(1)时钟周期:
一个时钟脉冲的时间长度,CPU的时钟频率的倒数,也称T状态。
(2)总线周期:
CPU中,BIU完成一次访问存储器或I/O端口操作所需要的时间,称作一个总线周期,也称机器周期(MachineCycle)。
(3)指令周期:
执行一条指令所需的时间称为指令周期。
(4)等待周期:
在T3和T4之间插入的周期。
(4)
(5)空闲状态:
CPU不执行总线周期时的状态。
(6)时序:
计算机操作运行的时间顺序。
8.5简述CPU与外设以查询方式传送数据的过程。
现有一输入设备,其数据端口的地址为FEE0H,并从端口FEE2H提供状态,当其D0位为1时表明输入数据准备好。
试编写采用查询方式进行数据传送的程序段,要求从该设备读取64个字节并输入到从2000H:
2000H开始的内存中。
(程序中需加注释)
P144~145页。
MOVAX,2000H
MOVDS,AX;
设定段基址
MOVDI,2000H;
目的地址送DI
MOVCX,64;
字节数
READ:
MOVDX,0FEE2H;
指向状态口
INAL,DX;
读入状态位
TESTAL,01H;
数据准备好否?
JZREAD;
否,循环检测
MOVDX,0FEE0H;
指向数据口
已准备好,读入数据
MOV[DI],AL;
存到内存缓冲区中
INCDI;
修改地址指针
LOOPREAD;
未传送完,继续传送
MOVCX,64
NEXTIN:
INAL,0FEE2H
TESTAL,01H
JZNEXTIN
INAL,0FEE0H
MOVBX,2000H
MOV[200H][BX],AL
INCBX
LOOPNEXTIN
8.6简述中断传送的特点。
中断传送的显著特点是:
能节省大量的CPU时间,实现CPU与外设并行工作,提高计算机的使用效率,并使I/O设备的服务请求得到及时处理。
I/O主动,CPU被动。
9.3设8259A应用在8086系统,采用电平触发方式,中断类型号为60H-67H,采用特殊全嵌套方式,中断非自动结束,非缓冲工作方式,端口地址为63H和64H,写出其初始化程序。
ICW1=00011011B=1BH,ICW2=01100000B=60H,ICW4=00010101B=15H
ICW1必须写入到偶端口地址
MOVAL,1BH
OUT64H,AL
MOVAL,60H
OUT63H,AL
MOVAL,15H
9.4设8259A级连应用于8086系统,从片的中断请求线接于主片的IR7输入端,主片端口地址为64H和66H,从片端口地址为84H和86H,主片IR0的中断向量号为50H,从片IR0的中断向量号为58H,主片工作方式同9.3,从片工作方式采用缺省工作方式,编写初始化程序,并画出硬件连接电路图。
64H=01100100B84H=10000100B
66H=01100110B86H=10000110B
主片:
ICW1=00011001B=19HICW2=01010000B=50HICW3=10000000B=80HICW4=00010101B=15H
从片:
ICW1=00011001B=19HICW2=01011000B=58HICW3=00000111B=07HICW4=00000001B=01H
10.3试按如下要求分别编写8253的初始化程序,已知8253的计数器0~2和控制字寄存器I/O地址依次为40H~43H。
(因为地址小于256,所以可以不用DX。
(1)使计数器1工作方式0,仅用8位二进制计数,计数初值为128。
计数器1的通道地址为:
41H;
128=80H
控制字:
01010000B=50H
MOVAL,50H
OUT43H,AL
MOVAL,80H
OUT41H,AL
(2)使计数器0工作方式1,按BCD码计数,计数值为3000。
计数器0的通道地址为:
40H;
3000的BCD码为3000H控制字:
00110011B=33H
MOVAL,33H
OUT43H,AL
MOVAL,00H
OUT40H,AL
MOVAL,30H
(3)使计数器2工作方式2,计数值为02F0H。
计数器2的通道地址为:
42H
10110100B=B4H
MOVAL,B4H
MOVAL,F0H
OUT42H,AL
MOVAL,02H
10.4设8253计数器0~2和控制字寄存器的I/O地址依次为F8H~FBH,说明如下程序的作用。
MOVAL,33H;
00110011B计数器0,先低位后高位,方式1,BCD码计数
OUT0FBH,AL;
写控制字
MOVAL,80H;
置计数初值低位字节80H
OUT0F8H,AL;
先写低位字节
MOVAL,50H;
置计数初值高位字节50H
OUT0F8H,AL;
写高位字节
程序的作用为:
使计数器0工作在方式1,用BCD码计数,计数初值为5080。
10.5设8253的通道0~2和控制端口的地址分别为300H、302H、304H和306H,又设由CLK0输入计数脉冲频率为2MHz。
要求通道0输出1.5kHz的方波,通道1用通道0的输出作计数脉冲,输出频率为300Hz的序列负脉冲,通道2每秒钟向CPU发50次中断请求。
试编写初始化程序,并画出硬件连线图。
通道0:
输出方波则工作在方式3;
计数初值为n0=2MHz/1.5kHz≈1334=536H(1.499kHz)
控制字为:
00110110B=36H
通道1:
输出序列负脉冲则工作在方式2;
计数初值为n1=1.5kHz/300Hz=5=05H
控制字为:
01010100B=54H
通道2:
每秒钟向CPU发50次中断请求则工作在方式2;
计数初值为n2=300/50=6=06H
10010100B=94H
初始化程序:
MOVDX,306H
MOVAL,36H
OUTDX,AL
MOVDX,300H
MOVAL,05H
OUTDX,AL
11.3编程使8255A的PC5端输出一个负跳变。
如果要求PC5端输出一个负脉冲,则程序又如何编写?
设端口地址分别为:
B0HB2HB4HB6H。
系统复位后8255A的所有端口都被置为输入。
10000000B=80H
输出负跳变:
MOVAL,80H
OUTB6H,AL
MOVAL,0BH
……
MOVAL,0AH
输出负脉冲:
11.5设一工业控制系统,有四个控制点,分别由四个开关K0~K3控制,控制点的状态用发光二极管L0~L3表示,开关打开则对应的发光二极管亮,表示该控制点运行正常;
开关闭合则对应发光二极管不亮,说明该控制点出现故障。
画出系统的结构框图并编写程序。
B0HB2HB4HB6H
A口、B口都工作在方式0,A口输入,B口输出,C口未用
10010000B=90H
MOVDX,0B6H;
控制字寄存器
MOVAL,10010000B;
控制字
OUTDX,AL;
写入控制字
TEST:
MOVDX,0B0H;
指向A口
INAL,DL;
从A口读入开关状态
MOVDX,0B2H;
指向B口
OUTDX,AL;
B
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 课后 答案