微机原理课后作业答案第五版.docx
《微机原理课后作业答案第五版.docx》由会员分享,可在线阅读,更多相关《微机原理课后作业答案第五版.docx(21页珍藏版)》请在冰豆网上搜索。
微机原理课后作业答案第五版
第一章
6、[+42]原=00101010B=[+42]反=[+42]补
[-42]原
[-42]反
[-42]补
[+85]原=01010101B=[+85]反=[+85]补
[-85]原
[-85]反
[-85]补
10、微型计算机基本结构框图
微处理器通过一组总线(Bus)与存储器和I/O接口相连,根据指令的控制,选中并控制它们。
微处理器的工作:
控制它与存储器或I/O设备间的数据交换;进行算术和逻辑运算等操作;判定和控制程序流向。
存储器用来存放数据和指令,其内容以二进制表示。
每个单元可存8位(1字节)二进制信息。
输入——将原始数据和程序传送到计算机。
输出——将计算机处理好的数据以各种形式(数字、字母、文字、图形、图像和声音等)送到外部。
接口电路是主机和外设间的桥梁,提供数据缓冲驱动、信号电平转换、信息转换、地址译码、定时控制等各种功能。
总线:
从CPU和各I/O接口芯片的内部各功能电路的连接,到计算机系统内部的各部件间的数据传送和通信,乃至计算机主板与适配器卡的连接,以及计算机与外部设备间的连接,都要通过总线(Bus)来实现。
13、8086有20根地址线A19~A0,最大可寻址220=1048576字节单元,即1MB;80386有32根地址线,可寻址232=4GB。
8086有16根数据线,80386有32根数据线。
第二章
1、8086外部有16根数据总线,可并行传送16位数据;
具有20根地址总线,能直接寻址220=1MB的内存空间;
用低16位地址线访问I/O端口,可访问216=64K个I/O端口。
另外,8088只有8根数据总线
2、8086CPU由两部分组成:
总线接口单元(BusInterfaceUnit,BIU)
BIU负责CPU与内存和I/O端口间的数据交换:
BIU先从指定内存单元中取出指令,送到指令队列中排队,等待执行。
执行指令时所需的操作数,也可由BIU从指定的内存单元或I/O端口中获取,再送到EU去执行。
执行完指令后,可通过BIU将数据传送到内存或I/O端口中。
指令执行单元(ExecutionUnit,EU)
EU负责执行指令:
它先从BIU的指令队列中取出指令,送到EU控制器,经译码分析后执行指令。
EU的算术逻辑单元(ArithmeticLogicUnit,ALU)完成各种运算。
6、见书P28-29。
7.
(1)1200:
3500H=1200H×16+3500H=15500H
(2)FF00:
0458H=FF00H×16+0458H=FF458H
(3)3A60:
0100H=3A80H×16+0100H=3A700H
8、
(1)段起始地址1200H×16=12000H,结束地址1200H×16+FFFFH=21FFFH
(2)段起始地址3F05H×16=3F050H,结束地址3F05H×16+FFFFH=4F04FH
(3)段起始地址0FFEH×16=0FFE0H,结束地址0FFEH×16+FFFFH=1FFD0H
9、3456H×16+0210H=34770H
11、堆栈地址范围:
2000:
0000H~2000H(0300H-1),即20000H~202FFH。
执行两条PUSH指令后,SS:
SP=2000:
02FCH,再执行1条PUSH指令后,SS:
SP=2000:
02FAH。
12、(2000H)=3AH,(2001H)=28H,(2002H)=56H,(2003H)=4FH
从2000H单元取出一个字数据需要1次操作,数据是283AH;
从2001H单元取出一个字数据需要2次操作,数据是5628H;
17、CPU读写一次存储器或I/O端口的时间叫总线周期。
1个总线周期需要4个系统时钟周期(T1~T4)。
8086-2的时钟频率为8MHz,则一个T周期为125ns,一个总线周期为500ns,则CPU每秒最多可以执行200万条指令。
第三章
1、源操作数的寻址方式:
(1)
(2)(6)立即寻址(3)寄存器间接寻址(4)(5)(8)(10)寄存器寻址
(7)基址变址寻址(9)直接寻址
2、DS=1000H,BX=0200H,SI=0002H
(10200H~10205H)依次存有10H,2AH,3CH,46H,59H,6BH
(1)MOVAX,0200H;AX=0200
(2)MOVAX,[200H]
物理地址=1000H×10H+0200H=10200H,AX=2A10H
(3)MOVAX,BX;AX=0200H
(4)MOVAX,3[BX]
物理地址=1000H×10H+0200H+3H=10203H,AX=5946H
(5)MOVAX,[BX+SI]
物理地址=1000H×10H+0200H+2H=10202H,AX=463CH
(6)MOVAX,2[BX+SI]
物理地址=1000H×10H+200H+2H+2H=10204H,AX=6B59H
3、DS=1000H,ES=2000H,SS=3500H,
SI=00A0H,DI=0024H,BX=0100H,BP=0200H,VAL=0030H
(1)MOVAX,[100H]直接寻址方式,10100H
物理地址=DS×10H+100H=10000H+0100H=10100H
(2)MOVAX,VAL直接寻址方式,10030H
物理地址=DS×10H+VAL=10000H+0030H=10030H
(3)MOVAX,[BX]寄存器间接寻址,10100H
物理地址=DS×10H+BX=10000H+0100H=10100H
(4)MOVAX,ES:
[BX]寄存器间接寻址,20100H
物理地址=ES×10H+BX=20000H+0100H=20100H
(5)MOVAX,[SI]寄存器间接寻址,100A0H
物理地址=DS×10H+SI=10000H+00A0H=100A0H
(6)MOVAX,[BX+10H]寄存器相对寻址,10110H
物理地址=DS×10H+BX+10H=10000H+0100H+10H=10110H
(7)MOVAX,[BP]寄存器间接寻址,35200H
物理地址=SS×10H+BP=35000H+0200H=35200H
(8)MOVAX,VAL[BP][SI]相对基址变址寻址,352D0H
物理地址=SS×10H+BP+SI+VAL
=35000H+0200H+00A0H+0030H=352D0H
(9)MOVAX,VAL[BX][DI]相对基址变址寻址,10154H
物理地址=DS×10H+BX+DI+VAL
=10000H+0100H+0024H+0030H=10154H
(10)MOVAX,[BP][DI]基址变址寻址,35224H
物理地址=SS×10H+BP+DI=35000H+0200H+0024H=35224H
5、
6、
(1)MOVDL,AX
错,寄存器寻址方式中,目的操作数与源操作数长度必须一致
(2)MOV8650H,AX
错,目的操作数不可以是立即数
(3)MOVDS,0200H
错,MOV指令不允许将立即数传入段寄存器
(4)MOV[BX],[1200H]
错,MOV指令的两个操作数不能同时为存储器
(5)MOVIP,0FFH
错,IP不能作为MOV指令的目的操作数
(6)MOV[BX+SI+3],IP
错,IP不能作为MOV指令的源操作数
(7)MOVAX,[BX][BP]
错,BX与BP不可以同时出现在源操作数当中
(8)MOVAL,ES:
[BP]对
(9)MOVDL,[SI][DI]
错,SI与DI是两个变址寄存器,不可以同时出现在源操作数中。
(10)MOVAX,OFFSET0A20H
错,OFFSET后面跟的应该是符号地址,再把符号地址的值作为操作数。
(11)MOVAL,OFFSETTABLE
错,TABLE的偏移地址是16位,目的与源长度不一致
(12)XCHGAL,50H
错,交换指令可以在寄存器之间,寄存器和存储器之间进行,不可以是立即数。
(13)INBL,05H
错,BL不能作为IN指令的目的操作数,只能用AL或AX
(14)OUTAL,0FFEH
错,端口地址0FFEH>FFH,应用DX间接寻址,同时源操作数和目标操作数的位置颠倒了,应改为OUTDX,AL。
8、
10、AX=2508H,BX=0F36H,CX=0004H,DX=1864H
(1)ANDAH,CL
AH=04H,CF=0;(00100101B与00000100B)
(2)ORBL,30H
BL=36H,CF=0;(00110110B或00110000B)
(3)NOTAX
AX=DAF7H,CF无影响;(0010010100001000B取反后1101101011110111B)
(4)XORCX,0FFF0H
CX=FFF4H,CF=0;(0000000000000100B和1111111111110000B异或后1111111111110100B)
(5)TESTDH,0FH
TEST操作并不修改结果,CF=0;
(6)CMPCX,00H
CMP操作并不修改结果,CF=0;
(7)SHRDX,CL
DX=0186H,CF=0;
(8)SARAL,1
AH=04H,CF=0;
(9)SHLBH,CL
BH=F0H,CF=0;
(10)SALAX,1
AX=4A10H,CF=0;(0010010100001000B左移)
(11)RCLBX,1
若程序执行之前CF=0,BX=1E6CH,CF=0;若程序执行之前CF=1,BX=1E6DH,CF=0。
(12)RORDX,CL
DX=4186H,CF=0。
12、
14、
(1)LOOPNEXT
(2)LOOPENEXT
(3)LOOPNENEXT
START:
MOVAX,01H
MOVBX,02H
MOVDX,03H
MOVCX,04H
NEXT:
INCAX
ADDBX,AX
SHRDX,1
()
程序运行前DX=00000011B
(1)AX=0005HBX=0010HCX=0000HDX=0000H
(2)AX=0002HBX=0004HCX=0003HDX=0001H
(3)AX=0003HBX=0007HCX=0002HDX=0000H
15、ARRAYDB78H,67H,75H,69H,70H,74H,71H
NEWDB7DUP(?
)
MOVCX,0007H
MOVBX,0000H
NEXT:
MOVAL,ARRAY[BX]
ADDAL,5
DAA
MOVNEW[BX],AL
INCBX
LOOPNEXT
HLT
第四章(请主动识别程序中的标点符号为英文输入模式下的)
2.、指令语句由4部分组成,格式:
标号:
指令助记符操作数;注释
其中,指令助记符不可缺少。
伪指令语句由4部分组成,格式:
名字伪指令指示符操作数;注释
其中,伪指令指示符不可缺少。
3、伪指令语句在汇编过程中完成某些特定的功能,没有它们,汇编程序将无法完成汇编过程。
和指令语句的主要区别是它没有对应的机器码,不能让CPU执行。
5、每条语句执行后的结果依次为:
AL=1BL=2CL=4AH=0FFHBH=4CH=1
6、
13、程序流程图如下:
汇编程序如下:
CODESEGMENT
ASSUMECS:
CODE
START:
CMPBL,60;与60分比较
JBFAIL;<60,转FAIL
CMPBL,85;≥60,与85分比较
JAEGOOD;≥85,转GOOD
MOVDL,‘P’;其它,将DL←‘P’
JMPDISPLAY;转显示程序
FAIL:
MOVDL,‘F’;DL←‘F’
JMPDISPLAY;转显示程序
GOOD:
MOVDL,‘G’;AL←‘G’
DISPLAY:
MOVAH,02H;显示存在DL中的字符
INT21H
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
14、
DATASEGMENT
TABLEDB01H,80H,0F5H,32H,86H,90H
DB74H,49H,0AFH,25H,40H,88H
PLUSDB0;存正数个数
NEGTDB0;存负数个数
ZERODB0;存0的个数
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,12;数据总数
MOVBX,0;BX清0
AGAIN:
CMPTABLE[BX],0;取一个数与0比
JGEGRET_EQ;≥0,转GRET_EQ
INCNEGT;<0,负数个数加1
JMPNEXT;往下执行
GRET-EQ:
JGP-INC;>0,转P-INC
INCZERO;=0,零个数加1
JMPNEXT;往下执行
P-INC:
INCPLUS;正数个数加1
NEXT:
INCBX;数据地址指针加1
DECCX;数据计数器减1
JNZAGAIN;未完,继续统计
CODEENDS
ENDSTART
21、为便于理解,假设存放在BX(需要注意的是要先将BX中的数据送给AX)中的16位二进制数的实际值为9346,转换后应使CX=9346H(压缩BCD数)。
BIN_BCDPROCNEAR
MOVAX,BX
CMPAX,9999;AX>9999?
JBETRAN;小于,转
JMPEXIT;大于,转退出
TRAN:
SUBDX,DX;DX初值清0
MOVCX,1000;CX?
1000
DIVCX;(DX,AX)/1000=9…346(AX=9,DX=346)
XCHGAX,DX;交换,使DX=9,AX=346(下次除法被除数)
MOVCL,4;第一个商9左移4次
SHLDX,CL;DX=0090H
MOVCL,100;CL?
100
DIVCL;346/100=3…46,AL=3,AH=46
ADDDL,AL;将第2次的商加到DL中,使DX=0093H
MOVCL,4;DX左移4次
SHLDX,CL;左移后DX=0930H
XCHGAL,AH;交换,AX=0346H
SUBAH,AH;AX=0046H,第2次余数做被除数
MOVCL,10;CL?
10
DIVCL;AX/10=4…6,结果AL=4,AH=6
ADDDL,AL;4加到DL上,使DX=0934H
MOVCL,4
SHLDX,CL;DX左移4次,DX=9340H
ADDDL,AH;最后一次余数加到DX上,DX=9346H
MOVCX,DX;最后结果:
AX=9346H
EXIT:
RET
BIN_BCDENDP
第五章
1、内存分为随机存取存储器RAM和只读存储器ROM。
RAM的特点:
可随机写入和读出,访问速度快,但断电后内容会全部丢失,即具有易失性。
存放在ROM中的内容不会因断电而丢失,它属于非易失性存储器,计算机只能对ROM读出不能进行写入,改写要用专门的编程器。
3、静态RAM电路结构复杂,集成度较低,功耗也大,但存取速度很快,访问时间可小于10ns。
不适合做容量很大的内存,主要用作高速缓存(Cache),并用于网络服务器、路由器和交换机等高速网络设施上。
动态RAM电路简单,但存取速度慢,电容上存储的信息会丢失,需要刷新。
容量大,价格便宜,PC机上的内存都采用DRAM,而且做成内存条,便于扩充内存容量。
还被用在其它需要大量存储的场合,如激光打印机、高清晰数字电视等。
4、动态RAM存储单元由1个MOS管和1个小电容C构成。
C充满电荷便保存了信息1,无电荷为0。
电容C上保存的电荷会逐渐泄漏,使信息丢失。
为此,要在DRAM使用过程中及时向保存1的那些存储单元补充电荷,也就是对C进行预充电,这一过程称为DRAM的刷新(refresh)。
读操作是读出电容C上的电荷转换成的0或1的逻辑电平,并非对电容C进行充电。
15、8,A10~A0,A19~A11,4
16、
芯片
A19~A16
A15~A13
A12~A0
一个可用的芯片地址范围
1
XX10
000
全0~全1
20000H~21FFFH
2
XX10
001
全0~全1
22000H~23FFFH
3
XX10
010
全0~全1
24000H~25FFFH
4
XX10
011
全0~全1
26000H~27FFFH
18、
芯片
A19~A16
A15~A13
A12~A0
一个可用的芯片地址范围
1
X001
100
全0~全1
18000H~19FFFH
2
X001
101
全0~全1
1A000H~1BFFFH
3
X001
110
全0~全1
1C000H~1DFFFH
4
X001
111
全0~全1
1E000H~1FFFFH
第六章
1、答:
CPU和外设之间的信息交换存在以下一些问题:
速度不匹配;信号电平不匹配;信号格式不匹配;时序不匹配。
I/O接口电路是专门为解决CPU与外设之间的不匹配、不能协调工作而设置的,处于总线和外设之间,一般应具有以下基本功能:
⑴设置数据缓冲以解决两者速度差异所带来的不协调问题;⑵设置信号电平转换电路,如可采用MC1488、MC1489、MAX232、MZX233芯片来实现电平转换。
⑶设置信息转换逻辑,如模拟量必须经A/D变换成数字量后,才能送到计算机去处理,而计算机送出的数字信号也必须经D/A变成模拟信号后,才能驱动某些外设工作。
⑷设置时序控制电路;⑸提供地址译码电路。
2、CPU与外设通信时,传送的信息主要包括数据信息、状态信息和控制信息。
在接口电路中,这些信息分别进入不同的寄存器,通常将这些寄存器和它们的控制逻辑统称为I/O端口,CPU可对端口中的信息直接进行读写。
在一般的接口电路中都要设置以下几种端口:
⑴数据端口:
用来存放外设送往CPU的数据以及CPU要输出到外设去的数据。
数据端口主要起数据缓冲的作用。
⑵状态端口:
主要用来指示外设的当前状态。
每种状态用1位表示,每个外设可以有几个状态位,它们可由CPU读取,以测试或检查外设的状态,决定程序的流程。
⑶命令端口:
也称为控制端口,它用来存放CPU向接口发出的各种命令和控制字,以便控制接口或设备的动作。
I/O端口的编址方式有两种:
分别称为存储器映象寻址方式和I/O指令寻址方式。
存储器映象寻址方式:
把系统中的每个I/O端口都看作一个存储单元,并与存储单元一样统一编址,这样访问存储器的所有指令均可用来访问I/O端口,不用设置专门的I/O指令。
I/O指令寻址方式:
对系统中的输入输出端口地址单独编址,构成一个I/O空间,它们不占用存储空间,而是用专门的IN指令和OUT指令来访问这种具有独立地址空间的端口。
8086/8088CPU采用I/O指令寻址方式,用地址总线的低16位(A15~A0)来寻址I/O端口,最多可以访问216=65536个输入或输出端口。
7、端口A:
包含1个8位的数据输出锁存器/缓冲器,1个8位的数据输入锁存器。
A口作输入或输出时数据均能锁存。
端口B:
包含1个8位的数据输入/输出锁存器/缓冲器,1个8位的数据输入缓冲器。
端口C:
包含1个8位的数据输出锁存器/缓冲器,1个8位的数据输入缓冲器,无输入锁存功能,
分成两个4位端口时,每个端口有1个4位的输出锁存器。
C口还可配合A口和B口工作,用来产生A口和B口的输出控制信号、输入到A口和B口的端口状态信号。
A组:
管理A口和C口高,通过PA7~PA0以及PC7~PC4引脚与外部联络。
B组:
管理B口和C口低,通过PB7~PB0以及PC3~PC0引脚与外部联络。
8、8255A具有3种基本的工作方式,在对8255A进行初始化编程时,应向控制字寄存器写入方式选择控制字,用来规定8255A各端口的工作方式。
这3种基本工作方式是:
方式0——基本输入输出方式:
适用于不需要用应答信号的简单输入输出场合。
这种方式A口和B口可作为8位的端口,C口的高4位和低4位可作为两个4位的端口。
方式1——选通输入输出方式:
A口和B口作为数据口,均可工作于输入或输出方式。
端口C的6根线用来产生或接受联络信号。
方式2——双向总线I/O方式:
只有A口可以工作于这种方式。
端口A工作于方式2时,端口C的5位(PC3~PC7)作A口的联络控制信号。
9、控制字寄存器。
方式选择控制字的D7位总为1,而置位/复位控制字的D7位总为0。
10、0F8H,0FAH,0FCH,0FEH
MOVAL
OUT86H,AL
15、
MOVDX,83H;控制字寄存器
OUTDX,AL;写入控制字
TEST_IT:
MOVDX,80H;指向A口
INAL,DX;读入开关状态
NOTAL
MOVDX,81H;指向B口
OUTDX,AL;B口控制LED
CALLDELAY_20S;调延时20s子程序
JMPTEST_IT;延时20s再检测
DELAY_20S:
…;延时20s子程序
第七章
1、8253内部包含3个完全相同的计数器/定时器通道,即0~2计数通道,对3个通道的操作完全是独立的。
8253的每个通道都有6种不同的工作方式。
方式0:
计数结束中断,输出一个正跳变
方式1:
可编程单稳输出,输出一个宽度可
调的负脉冲
方式2:
比率发生器,输出序列负脉冲
方式3:
方波发生器。
方式2,3均可n分频
方式4:
软件触发选通,写入n开始计数
方式5:
硬件(GATE上升沿)触发选通
4、通道0:
方式3,初值N0=2M/1K=2000=(2000H)BCD控制字:
00110111B
通道1:
方式2,初值N1=2M/500=4000=(4000H)BCD控制字:
0111010