微机原理1-4章习题答案_第1页
微机原理1-4章习题答案_第2页
微机原理1-4章习题答案_第3页
微机原理1-4章习题答案_第4页
微机原理1-4章习题答案_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第 1 - 4 1 - 4 章章 习 题 解 答 1.6 1.6 将下列十进制数转换成二进制数。将下列十进制数转换成二进制数。 256D =100000000B 256D =100000000B 237.135D=11101101.0010001B 237.135D=11101101.0010001B 12.58D=1100.100101B 12.58D=1100.100101B 0.374D=0.0101B 0.374D=0.0101B 1.8 1.8 填空:填空: 10101.001B10101.001B(21.12521.125)D D(25.125.1)Q Q(15.215.2)H

2、H 2DE.6H 2DE.6H(1011011110.0111011011110.011)B B(1336.31336.3)Q Q(734.375734.375)D D 1.7 1.7 写出下列二进制数对应的十进制数、八进制数、十六写出下列二进制数对应的十进制数、八进制数、十六进制数。进制数。 1101110B=110D=156Q=6EH 1101110B=110D=156Q=6EH 111011000B=472D=730Q=1D8H 111011000B=472D=730Q=1D8H 1101111.1001B=111.5625D=157.44Q=6F.9H 1101111.1001B=11

3、1.5625D=157.44Q=6F.9H 1.9 1.9 试写出下列用补码表示的二进制数的真值。试写出下列用补码表示的二进制数的真值。 0011101000111010+58 0011101000111010+58 1000000010000000128128 1000010111111011 1000010111111011123123 1111111010000010 11111110100000102 2 0111111001111110+126 0111111001111110+126 1.10 1.10 已知已知3535,8989,试用补码运算法则试用补码运算法则,求出:,求出:+

4、 +? 补补00100011 00100011 原原11011001 11011001 补补1010011110100111 + +补补补补+ +补补00100011+1010011100100011+101001111100101011001010 + +10110110101101105454 1.11 已知补已知补10011011,+补补10111001,试求:,试求: 补?补?(有溢出,结果出错。)(有溢出,结果出错。)因为因为+补补补补+补补10111001所以补所以补+补补补补00011110 补补11100010补补补补+补补10011011+11100010 01111101

5、(有溢出,结果出错。)(有溢出,结果出错。) 、的真值各为多少?、的真值各为多少?原原11100101,的真值为,的真值为101; 原原00011110,的真值为,的真值为30 3.5 已知某个系统的已知某个系统的ROM容量为容量为6K字节,首地址为字节,首地址为2800H,求其最后一个单元的地址。求其最后一个单元的地址。 最后一个单元的地址最后一个单元的地址2800H+17FFH3FFFH 3.6采用采用Intel 2114(1K4位)位)RAM芯片,组成芯片,组成64K8位位的存储器,需要多少片的存储器,需要多少片2114? 需要需要128块。块。 扩展时需要的芯片数量可以这样计算:要构成

6、一个容量为扩展时需要的芯片数量可以这样计算:要构成一个容量为 MN 位的存储器,若使用位的存储器,若使用 pk 位的芯片(位的芯片(pM,kN),则),则构成这个存储器需要构成这个存储器需要 ( M/p )( N/k )个这样的存储器芯片个这样的存储器芯片 3.7某某RAM芯片的存储容量为芯片的存储容量为40968位,则该芯片的引脚位,则该芯片的引脚中有几条数据线和几条地址线?已知某中有几条数据线和几条地址线?已知某RAM芯片引脚中有芯片引脚中有8条条数据线,数据线,12条地址线,那么该芯片的存储容量是多少?条地址线,那么该芯片的存储容量是多少? 该芯片的外部引脚应有该芯片的外部引脚应有8条数

7、据线条数据线,12条地址线。条地址线。 RAM芯片引脚中有芯片引脚中有8条数据线,条数据线,12条地址线,那么该芯片条地址线,那么该芯片的存储容量是的存储容量是4K8位。位。 3.8 在在8086存储器系统的存储器系统的最高地址区最高地址区组成组成32KB的的ROM,要求采用,要求采用2764芯片(芯片(8K8的的EPROM),以),以及利用及利用74LS138译码器进行全译码,请画出这些芯片与译码器进行全译码,请画出这些芯片与系统总线连接的示意图。系统总线连接的示意图。 74LS138G1G2AG2B&OA19A18A17A16A15A14A13ABCA12A0Y4Y5Y6Y7OM/IO其余

8、线条参照其余线条参照P63页图页图3.1574LS138G1G2AG2B&OA19A18A17A0A16A15A14ABCA13A1Y4Y5Y6Y7M/IO其余线条参照其余线条参照P64页图页图3.16 4.1 4.1 试出指令试出指令MOV BXMOV BX,3040H3040H和和MOV BXMOV BX,3040H3040H有什么不有什么不同?同? 1、寻址方式不同:立即数寻址和直接寻址。、寻址方式不同:立即数寻址和直接寻址。 2、运行结果不同:、运行结果不同:MOV BX,3040H;BX=3040H MOV BX,3040H;将;将DS段段3040H和和3041H的内容送的内容送BX

9、 4.2 4.2 指出下列指令是否有错,并说明理由。指出下列指令是否有错,并说明理由。(1 1)MOV DIMOV DI,SISI;错,内存单元之间不能直接进;错,内存单元之间不能直接进 行数据传送行数据传送(2 2)MOV CSMOV CS,AXAX;错,;错,CSCS不能做目的操作数不能做目的操作数(3 3)MOV 1200MOV 1200,AXAX;错,立即数不能做目的操作数;错,立即数不能做目的操作数(4 4)MOV DSMOV DS,CSCS ;错,段寄存器之间不能互相传送;错,段寄存器之间不能互相传送(5 5)POP CSPOP CS;错,;错,CSCS不能做目的操作数不能做目的操

10、作数(6 6)MOV CLMOV CL,AXAX ;错,源、目的操作数长度不一致;错,源、目的操作数长度不一致(7 7)MOV 5000HMOV 5000H,1000H1000H;错,内存单元之间不能直;错,内存单元之间不能直 接进行数据传送接进行数据传送 4.3 4.3 在在80868086中,堆栈操作是字操作还是字节操作?已知中,堆栈操作是字操作还是字节操作?已知SS=1050HSS=1050H,SP=0006HSP=0006H,AX=1234HAX=1234H,若对,若对AXAX执行压栈操作(即执执行压栈操作(即执行行PUSH AXPUSH AX);试问);试问AXAX的内容存放在何处?

11、的内容存放在何处? 4.4 4.4 假如要从假如要从200200中减去中减去ALAL中的内容,用中的内容,用SUB 200SUB 200,ALAL对吗?对吗?如果不对,应采用什么方法?如果不对,应采用什么方法? 堆栈操作是字操作。堆栈操作是字操作。 入栈时入栈时“先减后压先减后压”(SP先减先减2,再压入操作数),执行压,再压入操作数),执行压栈操作后栈操作后AL的内容存放在的内容存放在10504H,AH的内容存放在的内容存放在10505H。 不对,立即数不能作为目的操作数。先把立即数传送到一不对,立即数不能作为目的操作数。先把立即数传送到一个存储器或寄存器当中。个存储器或寄存器当中。例如:例

12、如: MOV BL,200 SUB BL,AL 或或: NEG AL ADD AL, 200 4.5 4.5 编程求编程求AXAX累加器和累加器和BXBX寄存器中两个无符号数之差的绝寄存器中两个无符号数之差的绝对值,结果放内存(对值,结果放内存(2800H2800H)单元中。)单元中。方法一:方法一: CMP AX , BX JA PT1 XCHG AX , BX PT1:SUB AX , BX MOV 2800H , AX HLT 方法二:方法二: SUB AX , BX JNC OK NEG AXOK :MOV 2800H , AX HLT 方法三:方法三: CMP AX , BX JB

13、PT1 SUB AX , BX MOV 2800H , AX HLTPT1:SUB BX , AX MOV 2800H , BX 方法一:方法一:MOV MOV DI , DI , 2000H2000HLEA LEA SI , SI , 3000H3000HMOV MOV AX ,AX ,DIDIMOV MOV DX , DX , DI+2DI+2ADD ADD AX , AX , SISIADC ADC DX , DX , SI+2SI+2MOVMOVDI, AXDI, AXMOVMOVDI+2 ,DXDI+2 ,DX方法二:方法二: MOV BX , 3000H MOV BX , 3000

14、H MOV DI , 2000H MOV DI , 2000H MOV AX , BX MOV AX , BX MOV DX , BX+2 MOV DX , BX+2 ADD DI , AXADD DI , AX ADC DI+2 , DX ADC DI+2 , DX方法三:方法三:MOV AX , 3000H MOV AX , 3000H MOV DX , 3002H MOV DX , 3002H ADD 2000H , AXADD 2000H , AXADC 2002H , DXADC 2002H , DX 4.6 4.6 若有两个若有两个4 4字节字节的无符号数相加,这两的无符号数相加,

15、这两个数分别存放在个数分别存放在2000H2000H和和3000H3000H开始的存储单元,开始的存储单元,将所求的和存放在将所求的和存放在2000H2000H开始的内存单元中,试开始的内存单元中,试编制程序。编制程序。 4.7 4.7 用两种方法写出从用两种方法写出从88H88H端口读入信息的指令,再用两种端口读入信息的指令,再用两种方法写出从方法写出从44H44H端口输出数据端口输出数据56H56H的指令。的指令。4.19 4.19 指出以下四条指令的作用(指出以下四条指令的作用(HEXHEX为数据段的一个变量名)为数据段的一个变量名) MOV BX, HEX MOV BX, HEX ;将

16、变量;将变量HEXHEX的内容传送到的内容传送到BXBX寄存器寄存器 LEA BX, HEX LEA BX, HEX ;取变量;取变量HEXHEX的偏移地址送的偏移地址送BXBX MOV BX, OFFSEG HEX MOV BX, OFFSEG HEX ;BXBX指向变量指向变量HEXHEX的偏移地址的偏移地址 MOV BX, SEG HEX MOV BX, SEG HEX ;将变量;将变量HEXHEX所在段的段地址所在段的段地址 传送到传送到BXBX方法一:方法一:IN AL , 88HIN AL , 88H方法二:方法二:MOV DXMOV DX,0088H0088H IN AX , D

17、X IN AX , DX 方法一:方法一:MOV AL , 56HMOV AL , 56H OUT 44H , AL OUT 44H , AL 方法二:方法二:MOV AL , 56H MOV AL , 56H MOV DX ,0044H MOV DX ,0044H OUT DX , AL OUT DX , AL4.20 4.20 下面是变量定义伪指令下面是变量定义伪指令DATA SEGMENT DATA SEGMENT BUF DW 3 DUP(5,2 DUP(8)BUF DW 3 DUP(5,2 DUP(8)CED DB Welcome to you, ODH , OAH ,CED DB

18、Welcome to you, ODH , OAH ,$ADDR DW BUFADDR DW BUFCOUNT EQU $-CEDCOUNT EQU $-CEDDATA ENDSDATA ENDS问问: : 按内存单元存放的先后次序按内存单元存放的先后次序, ,按字节写出数据按字节写出数据段中的数据。段中的数据。 说明说明 对对BUF, CED, ADDRBUF, CED, ADDR等变量施行等变量施行TYPE, TYPE, LENGTH SIZELENGTH SIZE运算符后,其结果分别为多少?运算符后,其结果分别为多少? COUNT COUNT的值为多少?的值为多少? 按内存单元存放的先后

19、次序按内存单元存放的先后次序,按字节写出数据段中的数据。按字节写出数据段中的数据。 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, LENGTH SIZE运运算符后,其结果分别为多少?算符后,其结果分别为多少

20、?TYPE BUF = 2LENGTH BUF = 3SIZE BUF = 6TYPE CED = 1LENGTH CED = 1SIZE CED = 1TYPE ADDR = 2LENGTH ADDR = 1 SIZE ADDR = 2 COUNT的值为多少?的值为多少? 194.22 4.22 编写一个将编写一个将1616位二进制数转换成位二进制数转换成BCDBCD码数的程序。码数的程序。DATASEGMENTBINDB5C0EH ;待转换数为待转换数为23567ADEC DB5 DUP(?)TABDW10000,1000,100,10,1DATAENDSCODE SEGMENTASSUM

21、ECS:CODE,DS:DATA,BXEDCPROC FARSTART:MOVAX,DATAMOVDS,AXLEASI,TABLEADI,ADECMOVAX,BIN分析:分析:1 1个个1616位二进制数的范围是位二进制数的范围是0000H-FFFFH0000H-FFFFH(即(即0-655350-65535),),题目的要求就是要分离出这个数的万位、千位、百位、十位、题目的要求就是要分离出这个数的万位、千位、百位、十位、个位。既可以用除法,也可以用减法来实现。个位。既可以用除法,也可以用减法来实现。 LOP0: XOR CL,CLMOV BX,SI LOP1: SUBAX,BXJBNEXTI

22、NCCLJMPLOP1 NEXT: ADDAX,BXMOV DI,CLINCSIINCSIINCDICMP BX,1JNZLOP0RET BXEDCENDP CODEENDSENDSTART4.23 编写一个将5位BCD码数(小于65536)转换成二进制数的程序。 DATA SEGMENT BCD DB 7,4,3,0,5 ;BCD=50347 HEX DW 0DATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATASTART: MOV AX, DATA MOV DS,AX LEA BX,BCD MOV AL,BX+4 ;万位数 MOV AH,0 MOV CX

23、,10000 MUL CX ; AX*CXDX:AX,DX 必为0 ADD HEX,AX ;HEX+AX AX,CF必为0分析:分析:1 1个个5 5位位BCDBCD码数如果小于码数如果小于6553665536,那么转换成二进制数后的最大,那么转换成二进制数后的最大值为值为FFFFHFFFFH(即(即6553565535),用),用2 2个字节可以放下。可以用乘法来实现。个字节可以放下。可以用乘法来实现。 MOV AL,BX+3 ; 千位数千位数 MOV AH,0 MOV CX,1000 MUL CX ADD HEX,AX MOV AL,BX+2 ; 百位数百位数 MOV CL,100 MUL CL ; AL*CLAX ADD HEX,AX MOV AL,BX+1 ; 十位数十位数 MOV CL,10 MUL CL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论