微机原理与接口技术习题解答3_第1页
微机原理与接口技术习题解答3_第2页
微机原理与接口技术习题解答3_第3页
微机原理与接口技术习题解答3_第4页
微机原理与接口技术习题解答3_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、习题 33.1 简要分析 8086 的指令格式由哪些部分组成, 什么是 操作码?什么是操作数?寻址和寻址方式的含义是什么? 8086 指令系统有哪些寻址方式?【解答】 8086 的指令格式由操作码和操作数字段组成。 操作码:要完成的操作。操作数:参与操作的对象。 寻址:寻找操作数或操作数地址的过程。寻址方式:指令中给出的找到操作数或操作数地址采用的 方式。8086 指令系统的寻址方式主要有立即数寻址、寄存器寻 址、存储器寻址和 I/O 端口寻址。其中,存储器寻址可进一 步分为直接寻址、寄存器间接寻址、寄存器相对寻址、基址 变址寻址、相对基址变址寻址; I/O 端口指令 IN 和 OUT 使 用

2、的端口寻址方式有直接寻址和间接寻址。3.2 设(DS)=2000H , (ES)= 2100H , (SS)= 1500H , (Sl)= 00A0H , (BX)= 0100H , (BP)= 0010H ,数据变量 VAL 的偏 移地址为 0050H ,请指出下列指令的源操作数字段是什么寻 址方式?它的物理地址是多少?(1) MOVAX,21H(2) MOVAX,BX(3) MOVAX,1000H(4) MOVAX,VAL(5) MOV AX(6) MOV AX(7) MOV AX(8) MOV AX(9) MOV AX(10) MOV AX(11) MOV AX(12) MOV AX,B

3、X,ES:BX,BP,SI,BX+10, VALBX,BXSI, VALBXSI解答】(1) MOV AX , 21H立即寻址,源操作数直接放在指令中(2) MOV AX , BX寄存器寻址,源操作数放在寄存器 BX 中(3) MOV AX , 1000H直接寻址,EA = 1000H , PA = ( DS) X 10H + EA = 2000H X 10H + 1000H = 21000H(4) MOV AX , VAL直接寻址, EA = VAL = 0050H , PA =(DS)X 10HEA = 2000H X10H0050H = 20050H(5) MOV AX , BX寄存器间

4、接寻址, EA =(BX) = 0100H, PA =(DS)X10HEA = 2000H X10H0100H = 20100H(6) MOV AX , ES: BX寄存器间接寻址, EA =(BX) = 0100H, PA =(ES)X10HEA = 2100H X10H0100H = 21100H(7) MOV AX , BP寄存器间接寻址, EA =(BP) = 0010H, PA =(SS)X10HEA = 1500H X10H0010H = 15010H(8) MOV AX , SI寄存器间接寻址, EA =(SI) = 00A0H , PA =(DS)X10HEA = 2000H

5、X10H00A0H = 200A0H(9) MOV AX , BX+10相对寄存器寻址, EA =(BX ) 10D = 0100H 000AH= 010AH , PA = ( DS)X 10H + EA = 2000H X 10H + 010AH = 2010AH(10) MOV AX , VALBX相对寄存器寻址, EA = ( BX ) VAL= 0100H 0050H= 0150H, PA =(DS)X 10HEA = 2000HX10H0150H = 20150H(11) MOV AX , BXSI基址变址寻址, EA =(BX)(SI) = 0100H00A0H= 01A0H ,

6、PA =(DS)X10HEA = 2000H X10H01A0H= 201A0H(12) MOV AX , VALBXSI相对基址变址寻址, EA = (BX)(SI)VAL= 0100H 00A0H 0050H = 01F0H , PA =(DS)X10HEA = 2000H X 10H01F0H = 201F0H3.3 给定寄存器及存储单元的内容为: (DS) = 2000H , (BX) = 0100H , (SI) = 0002H , (20100) = 32H, (20101) = 51H , (20102) = 26H , (20103) = 83H , (21200) = 1AH

7、 , (21201) = B6H, (21202) = D1H , (21203) = 29H 。试说明下列各条指令 执行完后, AX 寄存器中保存的内容是什么。(1) MOV AX , 1200H(2) MOV AX , BX(3) MOV AX , 1200H(4) MOV AX , BX (5) MOV AX , 1100HBX(6) MOV AX , BXSI【解答】(1)MOV AX , 1200H;执行后,( AX ) =1200H(2)MOV AX , BX;执行后,( AX ) =(BX )0100H(3)MOV AX , 1200H直接寻址, EA = VAL = 1200H

8、 , PA =(DS)X 10HEA = 2000H X 10H + 1200H = 21200H,执行后,(AX )= B61AH(4) MOV AX , BXEA = ( BX) = 0100H , PA =( DS)X 10H EA = 2000H X 10H 0100H = 20100H ,执行后,( AX ) = 5132H(5) MOV AX , 1100HBXEA = ( BX ) 1100H = 0100H 1100H = 1200H , PA = ( DS)X 10H EA = 2000H X 10H 1200H = 21200H ,执行 后,( AX ) = B61AH(6

9、) MOV AX , BXSIEA = ( BX )( SI) = 0100H 0002H = 0102H , PA = ( DS)X 10H EA = 2000H X 10H 0102H = 20102H ,执行 后,( AX ) = 29D1H3.4 分析下列指令的正误, 对于错误的指令要说明原因 并加以改正。(1) MOV AH , BX(2) MOV BX , SI(3) MOV AX , SIDI(4) MOV MYDATBXSI , AX(5) MOV BYTEPTRBX, 1000(6) MOV BX, OFFSET MAYDATSI(7) MOV CS, AX(8) MOV D

10、S, BP解答】(1) MOV AH, BX错误,寄存器类型不匹配,可改为 MOV AX, BX(2) MOV BX, SI错误,两个操作数不能都为存储单元, 可改为 MOV BX ,SI 或 MOV BX , SI(3) MOV AX , SIDI 错误,寻址方式中只能出现一个变址寄存器,可改为MOV AX, BXDI 。(4) MOV MYDATBXSI, ES:AX错误, AX 签不能有段跨越前缀,去掉 ES: ,改为 MOV MYDATBXSI , AX(5) MOV BYTE PTRBX, 1000错误, 1000 超出字节空间存储范围(6) MOV BX ,OFFSET SI ;正

11、确(7) MOV CS , AX错误, MOV 指令 CS 不能做目的操作数,可改为 MOV DS,AX(8) MOV DS ,AX;正确 注:本题错误改正部分有的答案并不唯一,可参考原题 题意改成合法形式。3.5 设 VAR1 、VAR2 为字变量,LAB 为标号,分析下列指令的错误之处并加以改正。(1) ADD VAR1 , VAR2 MOV AL , VAR2(3) SUB ALJMP LABSI(5) JNZ VAR1JMP NEAR LAB解答】, VAR1(6)(2)(4),VAR2MOV(1) ADD VAR1 错误,两个操作数不能都为存储单元,可改为 BX,VAR2ADD VA

12、R1 , BX(2) MOV AL , VAR2 错误,数据类型不匹配,可改为(3) SUB AL , VAR1 错误,数据类型不匹配,可改为(4) JMP LABSIMOV AX ,SUB AX ,VAR2VAR1错误,寄存器相对寻址形式中不能用标号做位移量,可 改为 JMP VAR1SI(5) JNZ VAR1 错误,条件跳转指令只能进行段内短跳转,所以后面只 能跟短标号。可改为 JNZ LAB(6) JMP NEAR LAB错误,缺少运算符 PTR ,可改为 JMP NEAR PTR LAB 注:本题错误改正部分有的答案并不唯一,可参考原题 题意改成合法形式。3.6 写出能够完成下列操作

13、的 8086CPU 指令。(1) 把 4629H 传送给 AX 寄存器; MOV AX,4629H(2) 从 AX 寄存器中减去 3218H ;SUB AX,3218H(3) 把 BUF 的偏移地址送入 BX 中。 LEA BX,BUF【解答】(1) MOV AX,4629H(2) SUB AX,3218H(3) LEA BX,BUF3.7 根据以下要求写出相应的汇编语言指令。(1) 把 BX 和 DX 寄存器的内容相加,结果存入 DX 寄 存器中; ADD DX,BX(2) 用 BX 和 SI 的基址变址寻址方式,把存储器中的一 个字节与 AL 内容相加,并保存在 AL 寄存器中;ADD A

14、L,BXSI(3) 用寄存器 BX 和位移量 21B5H 的变址寻址方式把存 储器中的一个字和 (CX) 相加,并把结果送回存储器单元中;ADD BX+21B5H,CX(4) 用位移量 2158H 的直接寻址方式把存储器中的一个 字与数 3160H 相加,并把结果送回该存储器中;MOV AX,3160HADD AX,2158HMOV 2158H,AX(5) 把数 25H 与 (AL) 相加,结果送回寄存器 AL 中。ADD AL,25H【解答】(1) ADD DX,BX(2) ADD AL,BXSI(3) ADD 21B5HBX,CX(4) ADD WORD PTR 2158H,3160H(5

15、) ADD AL,25H3.8 写出将首地址为 BLOCK 的字数组的第 6 个字送到CX 寄存器的指令序列,要求分别使用以下几种寻址方式:(1) 以 BX 的寄存器间接寻址 LEA BX,BLOCKMOV CX,BX+10(2) 以 BX 的寄存器相对寻址(3) 以BX、SI的基址变址寻址LEA BX,BLOCKMOV SI,10MOV CX,BXSI【解答】(i) LEA BX,BLOCK+10MOV CX,BX LEA BX,BLOCKMOV CX,10BX LEA BX,BLOCKMOV SI,10MOV CX,BXSI3.9执行下列指令后,AX寄存器中的内容是什么?TABLE DB

16、10,20,30,40,50ENTRY DW 3MOV BX,OFFSET TABLEADD BX ,ENTRYMOV AX,BXAX=【解答】AX= 3228H3.10下面是将内存一字节数据高 4位和低4位互换并放 回原位置的程序,找出错误并改正。DATA SEGMENTDD1 DB 23HDATA ENDSCODE SEGMENTASSUME CS :CODE,DS: DATASTART: MOV AX , DATAMOV DS ,AXLEA SI , OFFSET DD1MOV AL , SIMOV CL , 4RCR AL , CLMOV SI , ALMOV AH ,4CHINT 2

17、1HCODE ENDSEND START【解答】 程序第 8行错误: LEA SI,OFFSET DD1 ,应 去掉 OFFSET ;程序第10行错误:RCR AL ,CL ,应使用ROR或ROL , 改为 ROR AL ,CL3.11 已知用寄存器 BX 作地址指针, 自 BUF 所指的内存单元开始连续存放着 3 个无符号数字数 据,编程序求它们的和,并将结果存放在这 3个数之后。【解答】 参考程序如下:LEA BX,BUFMOV AX,BXADD AX,BX+2ADD AX,BX+4MOV BX+6,AX3.12 分析汇编语言源程序应该由哪些逻辑段组成?各段 的作用是什么?语句标号和变量应

18、具备哪 3 种属性?【解答】 汇编语言源程序应该由若干个逻辑段组成,可以有若干个数据段、代码段、堆栈段和附加数据段,至少要有一个代码段。各段的作用如下:(1) 代码段用来存放程序和常数。(2) 数据段用于数据的保存。(3) 堆栈段用于保护数据,尤其在子程序调用、中断过 程中进行现场信息保护。(4) 附加数据段用于数据的保存。语句标号和变量应具备的3种属性:段属性、偏移属性和类型属性。3.13执行完下列程序后,回答指定的问题。MOV AX,0MOV BX,2MOV CX,50LP: ADD AX,BXADD BX , 2LOOP LP: 该 程 序 的 功 能。(2) 程序执行完成后,(AX)

19、= 。【解答】(1) 完成0到100间所有偶数求和的功能。(2) 25503.14编写程序,计算下面函数的值。2x(x 0)s 3x (0 x 10)4xx 10【解答】DATA SEGMENT X DW 34S DW ? DATA ENDS CODE SEGMENTASSUME START:MOV MOV MOVAXC,S:DCAOTDAE ,DS, AXDS:DATAAX# X送到AXCMPAX(AX ) 0OUBdoubJL;是,1100 吗?CMPA;否,ax)JLE;是,SAAX , 1JMPEXITDOUB:ASAL1JMPEXITTRIB:SALADDAX, XEXIT:MOVA

20、XMOV4CHINT21HCODEEDSENDSTARTSAL1AX;否,乘以AX;乘以AX;乘以 3S ;保存结果AH结束注意,在比较的过程中使用的是针对带符号数的跳转指令,X应该看作带符号数。程序中还用了移位指令代替了乘 法指令3.15 从键盘输入一系列字符,以回车符结束,编程统 计其中非数字字符的个数。【解答】DATA SEGMENTBLOCK DB 100 DUP (?)COUNT DB ?DATA ENDSCODE SEGMENTASSUME DS:DATA , CS:CODESTART:MOVAX , DATAMOV DS, AXMOV DL , 0LEA SI, BLOCKLP:

21、 MOV AH , 1INT 21HCMP AL,0DHJZ EXITMOV SI , ALCMP AL , 30HJAE NEXTCMP AL,39HJBE NEXTINC DLNEXT: INC SIJMP LPEXIT: MOV COUNT , DLMOV AH , 4CHINT 21HCODE ENDSEND START3.16 已知在内存中从 BLOCK 单元起存放有 20 个带符号字节数据,统计其中负数的个数并放入 COUNT 单元解答】DATA SEGMENTBLOCK DB -7,1,12,-90,-70, 34,-1, 56,45,-12DB -3,-4,23,0,12,11

22、,-9,-8,67,-56CN EQU $-BLOCKCOUNT DB ?DATA ENDS CODE SEGMENTASSUME DS:DATA , CS:CODE START:MOVMOV MOV LEAAX , DATA DS,AX DL , 0 SI , BLOCKMOV CX MOV AL TEST AL , JZ NEXT INC DL NEXT: INC SILOOP LPMOV COUNT , MOV AH , 4CH INT 21HCODE ENDSEND STARTLP:DL3.17 从键盘输入一个大写英文字母, 将其转换为小写字 母并显示出来, 要求输入其它字符时, 能够有出错提示信息。【解答】DATA SEGMENTMESS DB INPUP ERROR! ,0AH ,0DH , $D$A TA ENDSCODE SEGMENTASSUME DS:DATA , CS:CODESTART:MOVAX , DATAMOV DS, AXMOV AH , 01HINT 21HCMP AL , AJB ERRCMP AL , ZJA ERRADD A

温馨提示

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

评论

0/150

提交评论