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

下载本文档

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

文档简介

第1-4章

习题解答1.6将下列十进制数转换成二进制数。256D=100000000B 237.135D=11101101.0010001B12.58D=1100.100101B 0.374D=0.0101B1.8填空:

10101.001B=(21.125)D=(25.1)Q=(15.2)H2DE.6H=(1011011110.011)B=(1336.3)Q=(734.375)D1.7写出下列二进制数对应的十进制数、八进制数、十六进制数。1101110B=110D=156Q=6EH111011000B=472D=730Q=1D8H1101111.1001B=111.5625D=157.44Q=6F.9H1.9试写出下列用补码表示的二进制数的真值。00111010→00111010→+58

10000000→-12810000101→11111011→-12311111110→10000010→-201111110→01111110→+1261.10已知X=35,Y=-89,试用补码运算法则,求出:X+Y=?

[X]补=00100011[Y]原=11011001[Y]补=10100111[X+Y]补=[X]补+[Y]补=00100011+10100111=11001010X+Y=10110110B=-541.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的真值为303.5已知某个系统的ROM容量为6K字节,首地址为2800H,求其最后一个单元的地址。最后一个单元的地址=2800H+17FFH=3FFFH3.6采用Intel2114(1K×4位)RAM芯片,组成64K×8位的存储器,需要多少片2114?需要128块。扩展时需要的芯片数量可以这样计算:要构成一个容量为M×N位的存储器,若使用p×k位的芯片(p<M,k<N),则构成这个存储器需要(M/p)×(N/k)个这样的存储器芯片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译码器进行全译码,请画出这些芯片与系统总线连接的示意图。74LS138G1G2AG2B&OA19A18A17A16A15A14A13ABCA12~A0Y4Y5Y6Y7OM/IO其余线条参照P63页图3.1574LS138G1G2AG2B&OA19A18A17A0A16A15A14ABCA13~A1Y4Y5Y6Y7M/IO其余线条参照P64页图3.164.1试出指令MOVBX,3040H和MOVBX,[3040H]有什么不同?1、寻址方式不同:立即数寻址和直接寻址。2、运行结果不同:MOVBX,3040H ;BX=3040HMOVBX,[3040H] ;将DS段3040H和3041H的内容送BX4.2指出下列指令是否有错,并说明理由。(1)MOV[DI],[SI] ;错,内存单元之间不能直接进行数据传送(2)MOVCS,AX ;错,CS不能做目的操作数(3)MOV1200,AX ;错,立即数不能做目的操作数(4)MOVDS,CS ;错,段寄存器之间不能互相传送(5)POPCS ;错,CS不能做目的操作数(6)MOVCL,AX ;错,源、目的操作数长度不一致(7)MOV[5000H],[1000H];错,内存单元之间不能直接进行数据传送4.3在8086中,堆栈操作是字操作还是字节操作?已知SS=1050H,SP=0006H,AX=1234H,若对AX执行压栈操作(即执行PUSHAX);试问AX的内容存放在何处?4.4假如要从200中减去AL中的内容,用SUB200,AL对吗?如果不对,应采用什么方法?堆栈操作是字操作。入栈时“先减后压”(SP先减2,再压入操作数),执行压栈操作后AL的内容存放在10504H,AH的内容存放在10505H。不对,立即数不能作为目的操作数。先把立即数传送到一个存储器或寄存器当中。 例如:MOVBL,200 SUBBL,AL 或:NEGAL ADDAL,2004.5编程求AX累加器和BX寄存器中两个无符号数之差的绝对值,结果放内存(2800H)单元中。方法一:CMPAX,BXJAPT1XCHGAX,BXPT1:SUBAX,BXMOV[2800H],AXHLT方法二:SUBAX,BXJNCOKNEGAXOK:MOV[2800H],AXHLT方法三:CMPAX,BXJBPT1SUBAX,BXMOV[2800H],AX

HLTPT1:SUBBX,AXMOV[2800H],BX方法一:MOV DI, 2000HLEA SI, [3000H]MOV AX, [DI]MOV DX, [DI+2]ADD AX, [SI]ADC DX, [SI+2]MOV [DI],AXMOV [DI+2],DX方法二:

MOVBX,3000HMOVDI,2000HMOVAX,[BX]MOVDX,[BX+2]

ADD[DI],AXADC[DI+2],DX方法三:MOVAX,[3000H]MOVDX,[3002H]ADD[2000H],AXADC[2002H],DX4.6若有两个4字节的无符号数相加,这两个数分别存放在2000H和3000H开始的存储单元,将所求的和存放在2000H开始的内存单元中,试编制程序。4.7用两种方法写出从88H端口读入信息的指令,再用两种方法写出从44H端口输出数据56H的指令。4.19指出以下四条指令的作用(HEX为数据段的一个变量名)⑴MOVBX,HEX ;将变量HEX的内容传送到BX寄存器⑵LEABX,HEX ;取变量HEX的偏移地址送BX⑶MOVBX,OFFSEGHEX;BX指向变量HEX的偏移地址⑷MOVBX,SEGHEX ;将变量HEX所在段的段地址传送到BX方法一:INAL,88H方法二:MOVDX,0088H INAX,DX方法一:MOVAL,56HOUT44H,AL方法二:MOVAL,56H MOVDX,0044H OUTDX,AL4.20下面是变量定义伪指令DATASEGMENTBUFDW3DUP(5,2DUP(8))CEDDB‘Welcometoyou’,ODH,OAH,‘$’ADDRDWBUFCOUNTEQU$-CEDDATAENDS问:⑴按内存单元存放的先后次序,按字节写出数据段中的数据。

⑵说明对BUF,CED,ADDR等变量施行TYPE,LENGTHSIZE运算符后,其结果分别为多少?

⑶COUNT的值为多少?

⑴按内存单元存放的先后次序,按字节写出数据段中的数据。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=6TYPECED=1 LENGTHCED=1 SIZECED=1TYPEADDR=2 LENGTHADDR=1 SIZEADDR=2⑶COUNT的值为多少?194.22编写一个将16位二进制数转换成BCD码数的程序。DATA SEGMENT BIN DB 5C0EH;待转换数为23567 ADEC DB 5DUP(?) TAB DW 10000,1000,100,10,1DATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA,BXEDC PROC FARSTART: MOV AX, DATA MOV DS, AX LEA SI, TAB LEA DI, ADEC MOV AX, BIN分析:1个16位二进制数的范围是0000H-FFFFH(即0-65535),题目的要求就是要分离出这个数的万位、千位、百位、十位、个位。既可以用除法,也可以用减法来实现。LOP0: XOR CL, CL MOV BX, [SI]LOP1: SUB AX, BX JB NEXT INC CL JMP LOP1NEXT: ADD AX, BX MOV [DI], CL INC SI INC SI INC DI CMP BX, 1 JNZ LOP0 RETBXEDC ENDPCODE ENDS END START4.23编写一个将5位BCD码数(小于65536)转换成二进制数的程序。DATASEGMENTBCDDB7,4,3,0,5;BCD=50347HEXDW0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX LEABX,BCDMOVAL,[BX+4];万位数MOVAH,0MOVCX,10000MULCX;AX*CX→DX:AX,DX必为0ADDHEX,AX;HEX+AX→AX,CF必为0分析:1个5位BCD码数如果小于65536,那么转换成二进制数后的最大值为FFFFH(即65535),用2个字节可以放下。可以用乘法来实现。MOVAL,[BX+3];千位数 MOVAH,0 MOVCX,1000

MULCX ADDHEX,AX MOVAL,[BX+2];百位数 MOVCL,100

MULCL;AL*CL→AX ADDHEX,AX MOVAL,[BX+1];十位数 MOVCL,10

MULCL ADDHEX,AXMOVAL,[BX];个位数 ADDHEX,AX HLTCODEENDSENDSTART4.26从BUF单元开始有10个带符号数:-1,3,248,90,42,9042,-4539,0,-28792。试找出它们的最大值、最小值和平均值,并分别送MAX、MIN和AVG单元。试编写完整的汇编语言程序。DATASEGMENTBUFDW-1,3,248,90,42,9042,-4539,0,-28,792MXADW-32768MINDW

温馨提示

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

评论

0/150

提交评论