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

下载本文档

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

文档简介

1、,第 1 - 4 章 习 题 解 答,1.6 将下列十进制数转换成二进制数。 256D =100000000B 237.135D=11101101.0010001B 12.58D=1100.100101B 0.374D=0.0101B,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.7 写出下列二进制数对应的十进制数、八进制数、十六进制数。 1101110B=110D=156Q=6EH 111011000B=472D=730Q=1D8H 1101111.1001B=11

2、1.5625D=157.44Q=6F.9H,1.9 试写出下列用补码表示的二进制数的真值。 0011101000111010+58 10000000128 1000010111111011123 11111110100000102 0111111001111110+126,1.10 已知35,89,试用补码运算法则,求出:+? 补00100011 原11011001 补10100111 +补补+补00100011+1010011111001010 +1011011054,1.11 已知补10011011,+补10111001,试求: 补?(有溢出,结果出错。) 因为+补补+补10111001

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

4、这个存储器需要 ( M/p )( N/k )个这样的存储器芯片,3.7某RAM芯片的存储容量为40968位,则该芯片的引脚中有几条数据线和几条地址线?已知某RAM芯片引脚中有8条数据线,12条地址线,那么该芯片的存储容量是多少?,该芯片的外部引脚应有8条数据线,12条地址线。 RAM芯片引脚中有8条数据线,12条地址线,那么该芯片的存储容量是4K8位。,3.8 在8086存储器系统的最高地址区组成32KB的ROM,要求采用2764芯片(8K8的EPROM),以及利用74LS138译码器进行全译码,请画出这些芯片与系统总线连接的示意图。,4.1 试出指令MOV BX,3040H和MOV BX,3

5、040H有什么不同? 1、寻址方式不同:立即数寻址和直接寻址。 2、运行结果不同:MOV BX,3040H;BX=3040H MOV BX,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 5000

6、H,1000H;错,内存单元之间不能直 接进行数据传送,4.3 在8086中,堆栈操作是字操作还是字节操作?已知SS=1050H,SP=0006H,AX=1234H,若对AX执行压栈操作(即执行PUSH AX);试问AX的内容存放在何处?,4.4 假如要从200中减去AL中的内容,用SUB 200,AL对吗?如果不对,应采用什么方法?,堆栈操作是字操作。 入栈时“先减后压”(SP先减2,再压入操作数),执行压栈操作后AL的内容存放在10504H,AH的内容存放在10505H。,不对,立即数不能作为目的操作数。先把立即数传送到一个存储器或寄存器当中。 例如: MOV BL,200 SUB BL,

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

8、2000H LEA SI , 3000H MOV AX ,DI MOV DX , DI+2 ADD AX , SI ADC DX , SI+2 MOVDI, AX MOVDI+2 ,DX,方法二: MOV BX , 3000H MOV DI , 2000H MOV AX , BX MOV DX , BX+2 ADD DI , AX ADC DI+2 , DX,方法三: MOV AX , 3000H MOV DX , 3002H ADD 2000H , AX ADC 2002H , DX,4.6 若有两个4字节的无符号数相加,这两个数分别存放在2000H和3000H开始的存储单元,将所求的和存放

9、在2000H开始的内存单元中,试编制程序。,4.7 用两种方法写出从88H端口读入信息的指令,再用两种方法写出从44H端口输出数据56H的指令。,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,方法一:IN AL , 88H 方法二:MOV DX,0088H IN AX , DX,方法一:MOV AL , 56H OUT

10、 44H , AL 方法二:MOV AL , 56H MOV DX ,0044H OUT DX , AL,4.20 下面是变量定义伪指令 DATA SEGMENT BUF DW 3 DUP(5,2 DUP(8) CED DB Welcome to you, ODH , OAH ,$ ADDR DW BUF COUNT EQU $-CED DATA ENDS 问: 按内存单元存放的先后次序,按字节写出数据段中的数据。 说明 对BUF, CED, ADDR等变量施行TYPE, LENGTH SIZE运算符后,其结果分别为多少? COUNT的值为多少?, 按内存单元存放的先后次序,按字节写出数据段中

11、的数据。 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运算符后,其结果分别为多少? TYPE BUF = 2LENGTH BUF = 3SIZE BUF = 6 TYPE CED = 1LENGTH

12、 CED = 1SIZE CED = 1 TYPE ADDR = 2LENGTH ADDR = 1 SIZE ADDR = 2 COUNT的值为多少? 19,4.22 编写一个将16位二进制数转换成BCD码数的程序。,DATASEGMENT BINDB5C0EH ;待转换数为23567 ADECDB5 DUP(?) TABDW10000,1000,100,10,1 DATAENDS CODESEGMENT ASSUMECS:CODE,DS:DATA, BXEDCPROCFAR START:MOVAX,DATA MOVDS,AX LEASI,TAB LEADI,ADEC MOVAX,BIN,分析

13、:1个16位二进制数的范围是0000H-FFFFH(即0-65535),题目的要求就是要分离出这个数的万位、千位、百位、十位、个位。既可以用除法,也可以用减法来实现。,LOP0:XORCL,CL MOVBX,SI LOP1:SUBAX,BX JBNEXT INCCL JMPLOP1 NEXT:ADDAX,BX MOVDI,CL INCSI INCSI INCDI CMPBX,1 JNZLOP0 RET BXEDCENDP CODEENDS ENDSTART,4.23 编写一个将5位BCD码数(小于65536)转换成二进制数的程序。,DATA SEGMENT BCD DB 7,4,3,0,5 ;

14、BCD=50347 HEX DW 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS,AX LEA BX,BCD MOV AL,BX+4 ;万位数 MOV AH,0 MOV CX,10000 MUL CX ; AX*CXDX:AX,DX 必为0 ADD HEX,AX ;HEX+AX AX,CF必为0,分析:1个5位BCD码数如果小于65536,那么转换成二进制数后的最大值为FFFFH(即65535),用2个字节可以放下。可以用乘法来实现。,MOV AL,BX+3 ; 千位数 MOV AH,0 M

15、OV 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 ADD HEX,AX MOV AL,BX ; 个位数 ADD HEX,AX HLT CODE ENDS END START,4.26 从BUF单元开始有10个带符号数:-1,3,248,90,42,9042,-4539,0,-28792。试找出它们的最大值、最小值和平均值,并分别送MAX、MIN和AVG单元。试编写完整的汇编语言程序。,DATA SEGMENT BUF DW -1,3,248,90,42,9042,-4539,0,-28,792 MXA DW -32768 MIN DW 32767 AVG DW 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS,AX,MOV BX,OFFSET BUF MOV CX,10 MOV SI,0 MOV DI,0 NEXT

温馨提示

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

评论

0/150

提交评论