微机原理答案解析.docx
- 文档编号:28979700
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:38
- 大小:26.68KB
微机原理答案解析.docx
《微机原理答案解析.docx》由会员分享,可在线阅读,更多相关《微机原理答案解析.docx(38页珍藏版)》请在冰豆网上搜索。
微机原理答案解析
习题与思考题(参考答案)
第一章
1.6将下列十进制数转换成二进制数。
256D=10000000B 237.135D=11101101.0010001B
12.58D=1100.100101B 0.374D=0.0101B
1.7写出下列二进制数对应的十进制数、八进制数、十六进制数。
1101110B=110D=156Q=6EH 111011000B=472D=730Q=1D8H
1101111.1001B=111.5625D=157.44Q=6F.9H
1.8填空:
10101.001B=(21.125)D=(25.1)Q=(15.2)H
2DE.6H=(1011011110.011)B=(1336.3)Q=(734.375)D
1.9试写出下列用补码表示的二进制数的真值。
00111010→00111010→+58 10000000→-128
10000101→11111011→-123 11111110→10000010→-2
01111110→01111110→+126
1.10已知X=35,Y=-89,试用补码运算法则,求出:
X+Y=?
[X]补=00100011 [Y]原=11011001 [Y]补=10100111
[X+Y]补=[X]补+[Y]补=00100011+10100111=11001010
X+Y=10110110B=-54
1.11已知[X]补=10011011,[X+Y]补=10111001,试求:
①[X-Y]补=?
(有溢出,结果出错。
)
因为[X+Y]补=[X]补+[Y]补=10111001
所以[Y]补=[X+Y]补-[X]补=00011110
[-Y]补=11100010
[X-Y]补=[X]补+[-Y]补=10011011+11100010=01111101
②X、Y的真值各为多少?
[X]原=11100101,X的真值为-101;[Y]原=00011110,Y的真值为30
第二章
2.38086CPU的ALE信号的功能是什么?
答:
ALE(AddressLatchEnable)是8086CPU提供给地址锁存器的控制信号,在任何一个总线周期的T1状态,ALE输出有效电平(正脉冲),以表示当前地址/数据、地址/状态复用总线上输出的是地址信息,锁存器可利用它的下降沿将地址锁存起来。
ALE信号不能浮空。
2.48086CPU内部的寄存器由哪几种类型组成?
各自的作用是什么?
答:
8086CPU内部有14个16位寄存器,可以分为以下三组:
分别是通用寄存器组,段寄存器组,控制寄存器。
通用寄存器组可以分为两组:
数据寄存器和地址指针与变址寄存器。
数据寄存器主要用来保存算术、逻辑运算的操作数、中间结果和地址。
地址指针与变址寄存器主要用于存放或指示操作数的偏移地址。
段寄存器组:
8086/8088CPU内部设置了4个16位段寄存器,它们分别是代码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS、附加段寄存器ES,由它们给出相应逻辑段的首地址,称为“段基址”。
控制寄存器:
含指令指针IP及标志位寄存器FR。
IP用来存放将要执行的下一条指令在现行代码段中的偏移地址。
标志寄存器FR用来存放运算结果的特征。
2.68086的存储器采用什么结构?
答:
8086的存储器采用分体结构。
1M的存储空间分成两个存储体:
偶地址存储体和奇地址存储体,各为512K字节。
2.78086CPU访问存储器时物理地址是如何形成的?
答:
8086CPU访问存储器时根据所执行的操作,自动选择某个段寄存器,将其中的内容(16位)自动左移4位形成20位地址的高16位,而20位地址的低4位自动添0,然后通过20位地址加法器再与16位偏移量相加,形成对应的物理地址。
2.10 名词解释
(1) 时钟周期:
一个时钟脉冲的时间长度,CPU的时钟频率的倒数,也称T状态。
(2) 总线周期:
CPU中,BIU完成一次访问存储器或I/O端口操作所需要的时间,称作一个总线周期,也称机器周期(MachineCycle)。
(3) 指令周期:
执行一条指令所需的时间称为指令周期。
(4)等待周期:
在T3和T4之间插入的周期。
(4) 空闲状态:
CPU不执行总线周期时的状态。
(5) 时序:
计算机操作运行的时间顺序。
2.12如果8086的CLK引脚输入的时钟脉冲频率为4MHz,那么一个基本的总线周期是多少?
答:
T=1/4μs,那么一个基本的总线周期是4T=1μs。
第三章
3.5已知某个系统的ROM容量为6K字节,首地址为2800H,求其最后一个单元的地址。
答:
最后一个单元的地址=2800H+17FFH=3FFFH
3.6采用Intel2114(1K×4位)RAM芯片,组成64K×8位的存储器,需要多少片2114?
答:
需要128块。
注:
扩展时需要的芯片数量可以这样计算:
要构成一个容量为M×N位的存储器,若使用p×k位的芯片(p 3.7某RAM芯片的存储容量为4096×8位,则该芯片的引脚中有几条数据线和几条地址线? 已知某RAM芯片引脚中有8条数据线,12条地址线,那么该芯片的存储容量是多少? 答: 该芯片的外部引脚应有8条数据线,12条地址线。 RAM芯片引脚中有8条数据线,12条地址线,那么该芯片的存储容量是4K×8位。 3.8在8086存储器系统的最高地址区组成32KB的ROM,要求采用2764芯片(8K×8的EPROM),以及利用74LS138译码器进行全译码,请画出这些芯片与系统总线连接的示意图。 74LS138 G1 G2A G2B & O A19 A18 A17 A16 A15 A14 A13 A B C 2764 (1) 2764 (2) 2764 (3) 2764 (4) A12~A0 CE CE CE CE Y4 Y5 Y6 Y7 O 第四章 4.1试出指令MOVBX,3040H和MOVBX,[3040H]有什么不同? 1、寻址方式不同: 立即数寻址和直接寻址。 2、运行结果不同: MOVBX,3040H ;BX=3040H MOVBX,[3040H] ;将DS段3040H和3041H的内容送BX 4.2指出下列指令是否有错,并说明理由。 (1)MOV [DI],[SI] ;错,内存单元之间不能直接进行数据传送 (2)MOV CS,AX ;错,CS不能做目的操作数 (3)MOV 1200,AX ;错,立即数不能做目的操作数 (4)MOV DS,CS ;错,段寄存器之间不能互相传送 (5)POP CS ;错,CS不能做目的操作数 (6)MOV CL,AX ;错,源、目的操作数长度不一致 (7)MOV[5000H],[1000H];错,内存单元之间不能直接进行数据传送 4.3在8086中,堆栈操作是字操作还是字节操作? 已知SS=1050H,SP=0006H,AX=1234H,若对AX执行压栈操作(即执行PUSHAX);试问AX的内容存放在何处? 答: 堆栈操作是字操作。 入栈时“先减后压”(SP先减2,再压入操作数),执行压栈操作后AL的内容存放在10504H,AH的内容存放在10505H。 4.4假如要从200中减去AL中的内容,用SUB200,AL对吗? 如果不对,应采用什么方法? 答: 不对,立即数不能作为目的操作数。 先把立即数传送到一个存储器或寄存器当中。 例如: MOV BL,200 SUB BL,AL 或: NEG AL ADD AL,200 4.5编程求AX累加器和BX寄存器中两个无符号数之差的绝对值,结果放内存(2800H)单元中。 解: CMPAX,BX CMPAX,BX CLC JA PT1 JAPT1 SUBAX,BX SUBBX,AX XCHGAX,BX JCPT1 MOVDX,2800H PT1: SUBAX,BX MOVDI,2800H MOVDX,BX MOV[2800H],AX MOV[DI],AX HLT HLT HLT PT1: SUBAX,BX PT1: SUBBX,AX MOVDX,2800H MOVDI,2800H MOVDX,AX MOV[DI],BX HLT HLT 4.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 4.7用两种方法写出从88H端口读入信息的指令,再用两种方法写出从44H端口输出数据56H的指令。 方法一: INAL,88H 方法二: MOVDX,0088H INAX,DX MOVAL,56H MOVAL,56H OUT44H,AL MOVDX,0044H OUTDX,AL 4.19指出以下四条指令的作用(HEX为数据段的一个变量名) ⑴ MOV BX,HEX ;将变量HEX的内容传送到BX寄存器 ⑵ LEA BX,HEX ;取变量HEX的偏移地址送BX ⑶ MOV BX,OFFSEG HEX;BX指向变量HEX的偏移地址 ⑷ MOV BX,SEG HEX ;将变量HEX所在段的段地址传送到BX 4.20下面是变量定义伪指令, DATA SEGMENT BUF DW 3DUP(5,2DUP(8)) CED DB ‘Welcometoyou’,ODH,OAH,‘$’ ADDR DW BUF COUNT EQU $-CED DATA ENDS 问: ⑴ 按内存单元存放的先后次序,按字节写出数据段中的数据。 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=2 LENGTHBUF=3 SIZEBUF=6 TYPECED=1 LENGTHCED=1 SIZECED=1 TYPEADDR=2LENGTHADDR=1 SIZEADDR=2 ⑶COUNT的值为多少? 19 4.22编写一个将16位二进制数转换成BCD码数的程序。 DATA SEGMENT BIN DB5C0EH ;待转换数为23567 ADEC DB5DUP(? ) TAB DW10000,1000,100,10,1 DATA ENDS CODE SEGMENT ASSUME CS: CODE,DS: DATA, BXEDCPROC FAR START: MOV AX, DATA MOV DS, AX LEA SI, TAB LEA DI, ADEC MOV AX, BIN LOP0: XOR CL, CL MOV BX, [SI] LOP1: SUB AX, BX JB NEXT INC CL JMP LOP1 NEXT: ADD AX, BX MOV [DI],CL INC SI INC SI INC DI CMP BX, 1 JNZ LOP0 RET BXEDC ENDP CODE ENDS END START 4.24编写一个将16位二进制数转化为四位十六进制数的程序,并将十六进制数的各位显示出来。 注: 答案中给了一个假定的16位二进制数。 DATA SEGMENT BIN DW 1001110101111011B HEXASC DB 4DUP(20H) DB ‘$’ DATA ENDS STACK1 SEGMENTPARA STACK DW 20H DUP(0) STACKl ENDS CODE SEGMENT ASSUME CS: CODE,DS: DATA,SS: STACKl BINHEX: MOV CH, 4 ;十六进制数的位数 MOV BX,BIN ;取待转移数据 MOV DI,OFFSETHEXASC ;取存放ASCII码首地址 CONV1: MOVCL,4 ROL BX,CL ;取4位二进制数 MOV AL,BL AND AL,0FH CMP AL,09H ;是0-9吗? JBE ASCI ;是,转移 ADD AL,07H ;是A-F,先加07H ASCI: ADD AL,30H ;加30H MOV [DI],AL ;存结果 INC DI ;修改指针 DEC CH JNE CONVI ;计数未完,继续 LEA DX, HEXASC MOV AH,09H INT 21H CODEENDS END BINHEX 很多同学的答案: DATA SEGMENT A DW4 X DW(16位二进制数) Y DB4DUP(? ) DATAENDS …… START: MOV CX,A LEA DI,Y AGAIN: MOV BX,X PUSH CX DEC CX MOVING: SHRBX,4 LOOP MOVING POP CX AND BL,0FH CMP BL,09H JG DAYU ADD BL,30H JMP XIAOYU DAYU: ADD BL,37H XIAOYU: MOV[DI],BL INC DI LOOPAGAIN LEA DX,Y MOV AH,09H INT 21H CODEENDS END START 4.26从BUF单元开始有10个带符号数: -1,3,248,90,42,9042,-4539,0,-28792。 试找出它们的最大值、最小值和平均值,并分别送MAX、MIN和AVG单元。 试编写完整的汇编语言程序。 DATA SEGMENT BUFER DW -1,3,248,90,42,9042,-4539,0,-28792 MAX DW 0 MIN DW 0 AVG DW 0 DATA ENDS STACK SEGMENT PARA STACK‘STACK’ DW 100 DUP(? ) STACK ENDS CODE SEGMENT ASSUME CS: CODE,DS: DATA,SS: STACK START PROC FAR BEGIN: PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX LEA SI,BUFFER MOV AX,SI ;和清0 MOV BX,AX ;最大值 MOV DX,AX ;最小值 INC SI INC SI MOV CX,9 LOP1: ADD AX,[SI] CMP DX,[SI] ;与最小值单元中的值相比较 JE NEXT1 ;相等转至NEXT1 JG NEXT2 ;若大于转至NEXT2 MOV DX,[SI] ;把小的值送至DX NEXT1: CMP BL,[DI]; JB NEXT2 ;若低于转移 MOV BL,[DI];小值®BL (2分) NEXT2: MOV DL,[DI];取一字节数据 ADD AX,DX; 累加和 INC DI LOOP LOP1 MOV MAX,BH;送大值 MOV MIN,BL;送小值 MOV DL, 6 DIV DL, ;求平均值 MOV AVI,AL;送平均值 RET START ENDP CODE ENDS END BEGIN 5.18086CPU对其I/O端口的寻址采用哪种方式? 它的四条输入指令: INAL,PORT;INAL,DX;INAX,PORT;INAX,DX的作用有何区别? 答: 8086CPU对其I/O端口的寻址采用I/O端口单独寻址方式。 INAL,PORT;直接寻址,从PORT端口读入(输入)一个字节到AL。 INAL,DX;间接寻址,从DX所指端口读入(输入)一个字节到AL。 INAX,PORT;直接寻址,从PORT和PORT+1两个端口读入(输入)一个字到AX。 INAX,DX;间接寻址,从DX和DX+1两个端口读入(输入)一个字到AX。 5.5某输入设备的接口电路中,其数据端口的地址为3F8H;状态端口地址为3FEH,当其D7位为1时,表示输入数据已准备好。 试编写采用查询方式的数据传送程序段,要求从该设备读取100个字节,并存放到自2000H: 2000H开始的内存单元之中。 MOV AX, 2000H MOV DS,AX ;设定段基址 MOV DI,2000H ;目的地址送DI MOV CX,100 ;字节数 READ: MOV DX, 3FEH ;指向状态口 IN AL,DX ;读入状态位 TESTAL,80H ;数据准备好否? JZ READ ;否,循环检测 MOV DX, 3F8H ;指向数据口 IN AL,DX ;已准备好,读入数据 MOV [DI],AL ;存到内存缓冲区中 INC DI ;修改地址指针 LOOPREAD ;未传送完,继续传送 5.6设计一个采用74LS138的I/O端口地址译码器,要求能寻址的端口地址范围分别是: ①340H~347H;②348H~34FH;③350H~357H;④378H~37FH。 答案不唯一。 ①340H~347H 74LS138 G1 G2A G2B & A9 A8 A7 A2 A1 A0 A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 答案 解析