ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:32.58KB ,
资源ID:6395482      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6395482.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机原理及接口技术习题答案.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微机原理及接口技术习题答案.docx

1、微机原理及接口技术习题答案第3章 8086CPU指令系统1.写出完成以下要求的变量定义语句:1在变量var1中保存6个字变量:4512H,4512,1,100/3,10H,65530;2在变量var2中保存字符串:BYTE, word, WORD;3在缓冲区buf1中留出100个字节的存储空间; 4在缓冲区buf2中,保存5个字节的55H,再保存10个字节的240,并将这一过程重复7次;5在变量var3中保存缓冲区buf1的长度;6在变量pointer中保存变量var1和缓冲区buf1的偏移地址。解:var1 DW 4512H,4512,-1,100/3,10H,65530 var2 DB B

2、YTE,word,WORD buf1 DB 100 DUP? buf2 DB 7 DUP5 DUP55H,10 DUP240 var3 DB LENGTH buf1 pointer DW var1,buf1 或者pointer DW OFFSET var1,OFFSET buf12.设变量var1的逻辑地址为0100:0000,画出以下语句定义的变量的存储分配图: var1 DB 12,12,20/6,4 DUP0,55Hvar2 DB Assemble var3 DW AB, cd, E var4 DW var2 var5 DD var2解:3.指令正误判断,对正确指令写出源和目的操作数的寻

3、址方式,对错误指令指出原因设VAR1, VAR2为字变量, L1为标号:1MOV SI,100 2MOV BX,VAR1SI 3MOV AX, BX 4MOV AL, DX 5MOV BP, AL 6MOV VAR1, VAR2 7MOV CS, AX 8MOV DS, 0100H 9MOV BXSI, 1 10MOV AX, VAR1+VAR211ADD AX, LENGTH VAR1 12OR BL, TYPE VAR213SUB DI, 78H 14MOVS VAR1, VAR2 15PUSH 100H 16POP CS 17XCHG AX, ES 18MOV DS, CS 19JMP

4、L1+5 20DIV AX, 10 21SHL BL, 2 22MOV AL, 15+23 23MUL CX 24XCHG CL, SI 25ADC CS:0100, AH 26SBB VAR15,154解:1MOV SI,100 正确。源:立即数寻址, 目的:存放器寻址2MOV BX,VAR1SI 正确。源:存放器相对寻址, 目的:存放器寻址3MOV AX,BX 正确。源:存放器间接寻址,目的:存放器寻址4MOV AL,DX 错误。存放器间接寻址时,DX, AX, CX不能作地址存放器5MOV BP,AL 错误。操作数类型不一致6MOV VAR1,VAR2 错误。两存储单元之间不能用MOV指

5、令传送数据7MOV CS,AX 错误。CS不能为目的操作数8MOV DS,0100H 错误。目的操作数为段存放器时,源操作数不能为立即数9MOV BXSI,1 错误。指令类型不定。10MOV AX,VAR1+VAR2 错误。MOV指令中不能完成加法运算11ADD AX,LENGTH VAR1 正确。源:立即数寻址。目的:存放器寻址12OR BL,TYPE VAR2 正确。源:立即数寻址。目的:存放器寻址13SUB DI,78H 错误。指令类型不定14MOVS VAR1,VAR2 正确。目的、源均为隐含寻址。操作数仅指出操作数类型15PUSH 100H 错误。将常数压入堆栈,要通过存放器来实现1

6、6POP CS 错误。目的操作数不能为CS17XCHG AX,ES 错误。XCHG指令的操作数不能是段存放器18MOV DS,CS 错误。MOV指令不能从段存放器到段存放器19JMP L1+5 正确。段直接转移20DIV AX,10 错误。指令格式错误。21SHL BL,2 错误。移位指令的移位数为1或者CL22MOV AL,15+23 正确。源:立即数寻址,目的:存放器。编译时就处理为3823MUL CX 正确。源:存放器寻址,目的:存放器寻址24XCHG CL,SI 正确。源:存放器间接寻址,目的:存放器寻址25ADC CS:0100,AH 正确。源:存放器寻址,目的: 直接寻址数据在代码

7、段中26SBB VAR1-5,154 正确。源:立即数寻址,目的:直接寻址。4.说明以下指令对的区别:(1)MOV AX,VAR1 与 MOV AX,OFFSET VAR1(2)MOV AX,VAR2 与 LEA AX,VAR2(3)MOV AL,LENGTH VAR1 与 MOV AL,SIZE VAR1(4)MOV AL,ES: DI CMP AL, SI 与 CMPSB(5)SHR AL,1 与 SAR AL,1(6)SHR AL,1 与 ROR AL,1(7)ROL BX,1 与 RCL BX,1解:1MOV AX,VAR1 把变量VAR1对应地址单元中的一个字送入AX MOV AX,

8、OFFSET VAR1 把VAR1的有效地址的偏移地址送入AX2MOV AX,VAR2 把变量VAR2对应地址单元中的一个字送入AX LEA AX,VAR2 把VAR2的有效地址的偏移地址送入AX3MOV AL,LENGTH VAR1 把变量VAR1的长度送入AL MOV AL,SIZE VAR1 把变量VAR1的大小送入AL4MOV AL,ES:DI CMP AL,SI 把以ES为段地址,DI为偏移地址的一个字节送入AL,并与以SI容为偏移地址的一个字节作比拟,改变标志寄存器容。相当于作ES:DI与DS: SI容比拟 CMPSB 对字符串中的一字节比拟。寻址方式隐含。源串的地址由DS:SI指

9、定,目的串的地址由ES:DI指定。相当于作DS: SI与ES:DI容比拟5SHR AL,1 AL逻辑右移1位,最高位移入0, 最低位移入CF。 SAR AL,1 AL算术右移1位,以最高位容移入,最低位移入CF, 其余各位右移一位。6SHR AL,1 AL逻辑右移1位,最高位移入0, 最低位移入CF。 ROR AL,1 AL的各位构成环形移位,右移一位,最低位容同时移入到CF和最高位。7ROL BX,1 BX各位构成环形移位,左移一位,最高位容同时移入到CF和最低位。RCL BX,1 BX和CF构成环形移位,左移一位,CF容移入到最低位,最 高位移入CF。5.写出以下转移指令的寻址方式设L1为

10、标号,VAR1为字型变量,DVAR1为双字型变量: 1JMP L1 2JMP NEAR L1 3JNZ L1 4JMP BX5JG L1 6JMP VAR1SI7JMP FAR PTR L1 8JMP DVAR1解:1JMP L1 段直接寻址 2JMP NEAR PTR L1 段直接寻址3JNZ L1 段直接寻址 4JMP BX 段间接寻址5JG L1 段直接寻址 6JMP VAR1SI 段间接寻址7JMP FAR PTR L1 段间直接寻址 8JMP DVAR1 段间间接寻址6.设DS2000H,BX0100H,SI0002H,201003412H,201027856H,212004C2AH

11、,2120265B7H,求以下指令执行后AX存放器的容: 1MOV AX,1200H; 2MOV AX,BX; 3MOV AX, 1200H; 4MOV AX, BX; 5MOV AX,1100BX;6MOV AX, BXSI;7MOV AX,1100BXSI解:11200H 2 0100H 34C2AH 43412H 54C2AH 67856H 765B7H7.执行以下指令后,DX存放器中的容是多少?TABLE DW 25,36,1,16,10000,13PYL DW 7MOV BX,OFFSET TABLEADD BX,PYLMOV DX,BX解:DX = 10FFH 由-16FFF0H的

12、高8位和100002710H的低8位构成8.如果堆栈的起始地址为2200:0000,栈底为0100H,SP00A8H,求1栈顶地址;2SS的容; 3再存入数据5678H,3AF2H后,SP的容。解:栈顶地址 00A8H, SS = 2200H, 再存入2个字后,SP = 00A4H9.设已用伪指令EQU定义了4个标识符:N1 EQU 2100N2 EQU 10N3 EQU 20000N4 EQU 25000以下指令是否正确?并说明原因。 1ADD AL,N1N2; 2MOV AX,N3N4; 3SUB BX,N4N3; 4SUB AH,N4N3N1; 5ADD AL,N2; 6MOV AH,N

13、2*N2解:1错误。N1-N2=2090255 2正确 3正确4错误。N4-N3-N1=2900255 5正确 6正确10.按以下要求写出指令:1将AX存放器的低4位清零,其余位不变;2将BX存放器的低4位置1,其余位不变;3将AL存放器的低4位保持不变,高4位取反;4测试BX中的位1和位2,当这两位同时为0时将AL置0FFH,否那么AL清零;5测试BX中的位1和位2,当这两位有一位为0时将AL置0FFH,否那么AL清零;6将AL中保存的字母ASCII码变换成相应的大写字母的ASCII码;7将AL中保存的字母ASCII码变换成相应的小写字母的ASCII码;8将AX中的各位取反;9将DX中的低7

14、位取反,高9位不变; 10将CX中的低8位与高8位互换。解:1AND AX,0FFF0H 2OR BX,000FH 3XOR AL,0F0H4 TEST BX,06H 5 MOV AX,BXJZ ZERO AND AX,06H MOV AL,00H XOR AX,06H JMP OVER JZ OVERZERO: MOV AL,0FFH MOV AL,0FFH OVER: OVER: 6AND AL,5FH或者:CMP AL,61H JL OVER 无需变换或不是字母 CMP AL,7AH JG OVER 不是字母AND AL,5FH 或 SUB AL,20HOVER:7OR AL,20H 或

15、者:CMP AL,41H JL OVER 不是字母 CMP AL,5AH JG OVER 无需变换或不是字母OR AL,20H 或 ADD AL,20HOVER:8XOR AX,0FFFFH 或者 NOT AX9XOR DX,007FH 10XCHG CH,CL11.写出完成下述功能的程序段:1传送40H到AL存放器;2将AL的容乘以2;3传送16H到AH存放器;4AL的容加上AH的容。计算最后结果AL?解:1MOV AL,40H 2SHL AL,1 3MOV AH,16H 4ADD AL,AH AL=96H12.写出完成下述功能的程序段:1从缓冲区BUF的0004偏移地址处传送一个字到AX存

16、放器;2将AX存放器的容右移2位;3将AX容与BUF的0006偏移地址处的一个字相乘;4相乘结果存入BUF的0020H偏移地址处低位在前。解: 1 LEA SI, BUFMOV AX, SI+4(2) SHR AX,1SHR AX,1 (3) MUL WORD PTR 6SI(4) MOV 20HSI,AXMOV 22HSI,DX13.设BX11001011B,变量VAR的容为00110010B,求以下指令单独执行后BX的容:1XOR BX,VAR; 2AND BX,VAR;3OR BX,VAR; 4XOR BX,11110000B;5AND BX,00001111B; 6TEST BX,1解

17、:100F9H 20002H 300FBH 4003BH 5000BH600CBH14.设DX10111011B,CL3,CF1,求以下指令单独执行后DX的容:1SHR DX,1; 2SAR DX,CL; 3SHL DX,CL;4SHL DX,1; 5ROR DX,CL; 6ROL DL,CL;7SAL DH,1; 8RCL DX,CL; 9RCR DL,1解:DX= 0000 0000 1011 1011B CF=1 CL=31SHR DX,1 DX逻辑右移1 0000 0000 0101 1101B = 005DH2SAR DX,CL DX算术右移3 0000 0000 0001 0111

18、B = 0017H3SHL DX,CL DX逻辑左移3 0000 0101 1101 1000B = 05D8H4SHL DX,1 DX逻辑左移1 0000 0001 0111 0110B = 0176H5ROR DX,CL DX循环右移3 0110 0000 0001 0111B = 6017H6ROL DL,CL DL循环左移3 0000 0000 1101 1101B = 00DDH7SAL DH,1 DH算术左移1 0000 0000 1011 1011B = 00BBH8RCL DX,CL DX带进位循环左移3 0000 0101 1101 1100B = 05DCH9RCR DL,

19、1 DL带进位循环右移1 0000 0000 1101 1101B = 00DDH15.选择题各小题只有一个正确答案1执行以下三条指令后: MOV SP,1000H PUSH AX CALL BX a. SP1000H; b. SP0FFEH; c. SP1004H; d. SP0FFCH; 2要检查存放器AL中的容是否与AH一样,应使用的指令为: a. AND AL, AH b. OR AL, AH c. XOR AL, AH d. SBB AL, AH 3指令JMP NEAR PTR L1与CALL L1L1为标号的区别在于: a. 寻址方式不同; b. 是否保存IP的容; c. 目的地址

20、不同; d. 对标志位的影响不同。解:1D PUSHU AX那么AX入栈,SP=0FFEH;CALL BX那么IP入栈,SP=0FFCH2C 异或,假设一样,那么AL=0,ZF1。3B 16.存放器DX:AX组成32位数,DX为高位,编写程序段实现:1DX:AX右移3位,并将移出的低3位保存在CL中;2DX:AX左移3位,并将移出的高3位保存在CL中;解:1移出的3位应该按时序移入CL中。 XOR CL,CL MOV BL,3L1: SHR DX,1RCR AX,1RCL CL,1DEC BLJNZ L12移出的3位应该按时序移入CL中。 XOR CL,CL MOV BL,3L1: SHL A

21、X,1RCR DX,1RCR CL,1DEC BLJNZ L117.编写程序段实现将BL中的每一位重复4次,构成32位的双字DX:AX,例如当BL01011101B时,那么得到的DX0F0FH,AX0FF0FH。解:算术右移时,移入的值就是最高位本身,这样可以使位容重复,利用这一点可以实现题目的要求。XOR DX,DX XOR AX,AX MOV CX,4L1: SHR BL,1RCR AX,1 SAR AX,1 SAR AX,1SAR AX,1 LOOP L1 MOV CX,4L2: SHR BL,1RCR DX,1 SAR DX,1 SAR DX,1SAR DX,1 LOOP L218.字

22、变量VAR1中保存有小于38250的16位无符号数,编写程序段实现VAR1150,并进展四舍五入操作,将商保存在字节变量VAR2中。解:根据题意,38250150255,因此商不会超过255,可以用一个字节表示。ab的四舍五入操作可以通过判断除后余数实现:余数大于等于除数的一半,那么商加1;否那么不用加1。但这种方法用汇编语言编程实现时比拟复杂,这里介绍另外一种方法:设ab的四舍五入后的结果为c,用表示取整数操作,那么这种方法是在除法操作之前,在被除数上加上除数的一半,这样除法操作后得到的值就是考虑了四舍五入的商。VAR1 DW 12345VAR2 DB ?DATAA DB 150MOV AX

23、,VAR1XOR BX,BXMOV BL,DATAASHR BX,1ADD AX,BXDIV DATAA MOV VAR2,AL19.有一组无符号的16位数据保存在BUFFER中,前两个字节存放数据的个数,编程实现按下式进展滤波处理:解:滤波结果保存在FILT中。BUFFER DW 0CHDW 33H, 18H, 1BH, 06H, 33H, 08HDW 3H, 6H, 0FH, 51H, 05H, 0CH FILT DW 100H DUP?LEA SI,BUFFERLEA DI,FILTMOV CX,SIMOV DI,CXADD SI,2ADD DI,2XOR DX,DXMOV AX,SIM

24、OV DI,AXMOV BX,2SIMOV 2DI,BXADD SI,4ADD DI,4DEC CXDEC CXADD AX,BXADC DX,0MOV BX,3L1:ADD AX,SIADC DX,0PUSH DXPUSH AXDIV BXMOV DI,AXPOP AXPOP DXSUB AX, SI-4SUBB DX,0ADD DI,2ADD SI,2LOOP L120.在由字符串构成的缓冲区BUFFER中,前2个字节存放字符个数,后续每个字节存放一个字符的ASCII码。编写程序实现将字符串2004替换成2006。解:在数据段中定义:BUFFERDW 74DB This year is 2

25、004. In 2004, we have a plan for reducing annual expensive 10% DEST DB 2004在代码段中编写程序段:CLDLEA SI,BUFFERMOV CX,SIADD SI,2LEA DI,DESTL1: PUSH SI PUSH DI PUSH CX MOV CX,4 REPZ SCASB JNZ L2 MOV BYTE PTR SI-1,6L2: POP CX POP DI POP SI INC SI INC DI LOOP L121.定义有以下宏指令:WAGS MACRO S1,S2,S3 SUB AX,AX MOV DX,A

26、X ADD AX,S1 ADD AX,S2 ADC DX,0 ADD AX,S3 ADC DX,0 ENDM当采用宏调用指令“WAGS 60000,25000,3000”时,执行后DX AX。解:宏指令WAGS完成的功能为S1+S2+S3,结果放在DX:AX中。所以,调用“WAGS 60000,25000,3000”时,其结果为 DX=0001H ,AX=57C0H22.对上题定义的宏指令,如果采用宏调用指令“WAGS BX,CX,SI时,写出宏展开形式。解:调用“WAGS BX,CX,SI时,宏展开形式:SUB AX,AXMOV DX,AXADD AX,BXADD AX,CXADC DX,0ADD AX,SIADC DX,023.写出宏指令SUMMING,实现将字节缓冲区array中的容求校验和保存低8位,并保存在VALUE中。解:设array前两个字节保存缓冲区字节数,在宏指令SUMMING,将array和VALUE作为形式参数。SUMMING MACRO array,VALUELEA SI,array MOV CX,SI ADD SI,2 XOR AL,ALL1: ADD AL,SI INC SI LOOP L1 MOV VALUE,ALENDM

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1