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

加入VIP,省得不是一点点
 

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

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

下载须知

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

版权提示 | 免责声明

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

微机原理与接口技术楼顺天第二第四章习题解答.doc

1、微机原理与接口技术(楼顺天第二版)习题解答 第 4 章 汇编语言程序设计 4.1、已知在 BUF 的起始处保存有 N 个字符的 ASCII 码,编写汇编语言程序实现,将这组字符串传送到缓冲区 BUFR 中,并且使字符串的顺序与原来的顺序相反。 答 : BUF DB “BONJOUR_BELLE“ BUFR DB 100 DUP(?) MOV CX, N LEA SI, BUF LEA DI, BUFR ADD DI,CX DEC DI L1: MOV AL,SI MOV DI,AL INC SI DEC DI LOOP L1 4.2、利用移位、传送和相加指令实现 AX 的内容扩大 10 倍。

2、答:将扩大后的结果放在 DX: AX 中,注意到 10 AX 8 AX 2 AX。 XOR DX,DX SHL AX, 1 RCL DX, 1 MOV BX,AX MOV CX,DX SHL AX, 1 RCL DX, 1 SHL AX, 1 RCL DX, 1 ADD AX, BX ADC DX, CX 4.3、在缓冲区 VAR 中连续存放着 3 个 16 位的无符号数,编写程序实现将其按递增关系排列;如果 VAR 中保存的为有符号数,则 再编写程序实现将其按递减关系排列。 答 : VAR DW 1236, -432, 3900 XOR SI,SI MOV AX,VARSI CMP AX,

3、VARSI+2 JAE L1 XCHG AX, VARSI+2 L1: CMP AX, VARSI+4 JAE L2 XCHG AX, VARSI+4 L2: MOV VARSI, AX MOV AX,VARSI+2 CMP AX, VARSI+4 JAE L3 XCHG AX, VARSI+4 L3: MOV VARSI+2, AX 4.4、编写程序段实现将 AL 和 BL 中的每一位依次交叉 , 得到的 16 位字保存在 DX 中 , 例如 ( AL) 01100101B,( BL) 11011010B, 则得到的 ( DX) 10110110 10011001B。 答 : 利用移位指令完

4、成。 XOR DX,DX MOV CX,8 L1: SHR AL,1 RCR DX,1 SHR BL,1 RCR DX,1 LOOP L1 4.5、在变量 VAR1 和 VAR2 中分别保存有两个字节型的正整数,编写完整的汇 编语言程序实现: ( 1)当两数中有一个奇数时,将奇数存入 VAR1,偶数存入 VAR2; ( 2)当两数均为奇数时,两个变量的内容不变; ( 3)当两数均为偶数时,两数缩小一倍后存入原处。 答 : 当 VAR1 为奇数时,不论 VAR2 的奇偶性,这两个单元的内容均不变;只有当 VAR1为偶数时,如果 VAR2 为奇数,则 VAR1 与 VAR2 内容交换;如果 VAR

5、2 为偶数,则 两数缩小一倍后存入原处。 DATA SEGMENT VAR1 DB 28 VAR2 DB 36 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:DATA START: MOV AX, DATA MOV DS,AX MOV ES, AX MOV AL,VAR1 MOV BL,VAR2 TEST AL,1 JZ EVEN1 JMP OVER EVEN1: TEST BL,1 JZ EVEN2 MOV VAR1,BL MOV VAR2,AL JMP OVER EVEN2: SHR AL,1 MOV VAR1,AL SHR BL,1

6、 MOV VAR2,BL OVER: MOV AH,4CH MOV AL,0 INT 21H CODE ENDS END START 4.6、已知在字变量 VAR1、 VAR2 和 VAR3 中保存有 3 个相同的代码,但有一个错码,编写程序段找出这个错码,并将它送到 AX,其地址送 SI;如果 3 个代码都相同,则在 AX 中置 1 标志。 答 : 在数据段中定义: VAR1 DW 5A34H VAR2 DW 5A35H VAR3 DW 3A34H 在代码段中编写程序段 : MOV AX,-1 MOV BX,VAR1 CMP BX,VAR2 JZ L2 CMP BX,VAR3 JZ L1 M

7、OV AX,BX LEA SI,VAR1 JMP OVER L1: MOV AX,VAR2 LEA SI,VAR2 JMP OVER L2: CMP BX,VAR3 JZ OVER MOV AX,VAR3 LEA SI,VAR3 OVER: 4.7、分析下列程序段的功能 : MOV CL, 04 SHL DX, CL MOV BL, AH SHL AX, CL SHR BL, CL OR DL, BL 解:程序段完成 DX:AX 组成的 32 位无符号数左移 4 位,低位补零(也即除以 16)。 4.8、阅读下列程序段,指出它完成什么运算。 CMP AX, 0 JGE EXIT NEG AX

8、EXIT: 答:取 AX 的绝对值。 4.9、答:将 DX 中的值转换为相应的 ASCII 码字符存入 DISP 对应的 4 字节存储单元中。例如 DX=3F0BH,则在 DISP 中存放 3, F, 0, B。 4.10、答:将 FIRST 和 SECOND 数据相加,结果存入 FIRST 中, FIRST 中的结果为: 10H,61H, 01H。 4.11、答:将从 390H 端口读入的数据的低 4 位转换为对应 16 进制数的 ASCII 码,然后往390H 端口输出。例如读入的数据为 29H,则输出 9, 读入的数据 为 1BH,则输出 B。 4.12、答: 实际上完成 BX 内容循环

9、右移 2 位,因此, BX 寄存器的内容为 C02DH。 4.13、答: 完成 BX 内容逻辑右移 5 位,因此, BX 寄存器的内容为 03EAH。 4.14、答:( 1) AX=FFF3H, DX=FFFAH;( 2) AX=1FF2H, DX=0002H 4.15、答: AX=FFFCH, BX=200AH, CX=0008H, DX=2010H, SI=2000H 4.16、答: LEA SI,BUFFERS LEA DI,BUFFERT MOV CX,N ADD DI,N ADD DI,N SUB DI,2 L1: MOV AX,SI MOV DI,AX ADD SI,2 SUB D

10、I,2 LOOP L1 4.17、答: ENCRPYTION PROC NEAR LEA SI,ARRAY XOR DX,DX MOV AX,SI MOV BX,5 DIV BX MOV CX, AX ADD SI, 2 L1: MOV AX, SI XOR AX,0AAAAH MOV SI, AX ADD SI,10 LOOP L1 RET ENCRPYTION ENDP 4.18、 答: DATA SEGMENT ARRAY DB 12,28,128,35,46,69,120,89,93,100,112,125,200 DATA ENDS CODE SEGMENT ASSUME CS:CO

11、DE,DS:DATA START: MOV AX,DATA MOV DS,AX XOR CX,CX MOV CL,ARRAY ;数据个数存入 AX MOV SI,OFFSET ARRAY+1 ;SI 存放第一个数的偏移地址 XOR DX,DX XOR AX,AX ;AX 用来存放和,首先清零 XH: XOR BX,BX MOV BL,SI ADD AX,BX JNC BUYICHU ADD DX,1 BUYICHU:INC SI LOOP XH CMP DX,0 JZ OVER MOV DX,-1 OVER: HLT CODE ENDS END START 4.19、答 : 程序如下 : MO

12、V CX,N LEA SI,BUF MOV AX,SI MOV DX,AX ADD SI,2 L1: CMP AX,SI JBE NOCHG1 XCHG AX,SI NOCHG1: CMP DX,SI JAE NOCHG2 XCHG DX,SI NOCHG2: ADD SI,2 LOOP L1 如果 BUF 中存放的是有符号数,则只需要将程序中的两行内容修改: JBE NOCHG1 改成 : JLE NOCHG1 JAE NOCHG2 改成 : JGE NOCHG2 4.20、 答 :设 BUFFER 中存放的是字节型数据。采用双指针方法: SI 为读指针, DI 为写指针,从低地址开始,内存

13、中读出一个字节,如果不为 0,则写入内存;如果为 0,则不进行写操作。 LEA SI, BUFFER XOR CX,CX MOV CL, SI INC SI MOV DI, SI XOR BH,BH XOR AL,AL L1: CMP SI,AL JZ L2 MOV BL,SI MOV DI,BL INC DI INC BH L2: INC SI LOOP L1 MOV BUFFER,BH 4.21、答: MOV CX,N MOV BX,BUF1 MOV SI,0 MOV DI,OFFSET PRODUCT XH: MOV AX,BUFNSI PUSH AX MUL BX MOV DI,AX

14、;乘积低位字 ADD DI,2 MOV DI,DX ;乘积高位字 POP AX XOR DX,DX DIV BX MOV QUOTIENTSI,AX ;商 MOV REMAINDERSI,DX ;余数 ADD SI,2 LOOP XH 4.22、答: 统计 AL 中 1 的个数,只需将 AL 右移,移出的一位内容进行累加,子程序为: COUNTBYTE PROC NEAR PUSH AX PUSH CX MOV CX,8 XOR BL,BL COU1: SHR AL,1 ADC BL,0 LOOP COU1 POP CX POP AX RET COUNTBYTE ENDP 在此基础上,可以检测

15、出字节型缓冲区 BUF 中 0 和 1 个数相等的元素个数,即一个字节中有 4 个 1。设 BUF 中有 N 个字节型数据,结果保持在 BH 中。 MOV CX,N LEA SI, BUF XOR BH,BH L1: MOV AL,SI CALL COUNTBYTE CMP BL,4 JNZ L2 INC BH L2: INC SI LOOP L1 4.23、答: 4.24、答: 4.25、答 : ;产生 N 个 伪随机数 MOV CX,N MOV SI,OFFSET NUM XOR AH,AH MOV AL,23 XH: MOV SI,AL PUSH AX ADD AX,0 JNP FEIJ

16、ISHU INC CNT ADD SUMODD,AX FEIJISHU: POP AX ADD AL,17 INC SI LOOP XH 4.26、答: 4.27、答: 4.28、答: 4.29、答: 4.30、答: 4.31、答: 4.32、答: 4.33、答: STACK SEGMENT STACK STACK DW 100H DUP( ?) TOP LABEL BYTE STACK ENDS DATA SEGMENT BUFFER DB 3 ;首字节为字符串长度 DB ABC ;字符串 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DA

17、TA,SS:STACK START: MOV AX,STACK MOV SS,AX LEA SP,TOP MOV AX,DATA MOV DS,AX MOV ES,AX LEA DI,BUFFER XOR CX,CX MOV CL,DI INC DI CALL SETEVEN MOV AH,4CH ;返回 DOS MOV AL,0 INT 21H SETEVEN PROC NEAR ;加偶校验子程序 PUSH AX PUSH BX PUSH CX PUSH DI SETEVEN1: MOV AL,DI CALL COUNTBYTE AND BL,01H JZ SETEVEN2 OR AL,80

18、H MOV DI,AL SETEVEN2: INC DI LOOP SETEVEN1 POP DI POP CX POP BX POP AX RET SETEVEN ENDP COUNTBYTE PROC NEAR PUSH AX PUSH CX MOV CX,8 XOR BL,BL COU1: SHR AL,1 ADC BL,0 LOOP COU1 POP CX POP AX RET COUNTBYTE ENDP CODE ENDS END START 4.34、答: MOV AX,SI2*N TEST AX,8000H JZ OVER MOV CX,N XH: MOV AX,SI NEG

19、AX MOV SI,AX ADD SI,2 LOOP XH OVER:NOP 4.35、答: 设奖斐波那契数列存放在字变量 RESULT 中。在数据段中定义 RESULT DW 100H DUP( ?) 在代码段中编写子程序 FIBONACCI PROC NEAR XOR DI,DI MOV RESULTDI,1 ;前两个数为 1 MOV RESULTDI+2,1 ADD DI,4 MOV CX,N L1: MOV AX, RESULTDI-4 ADD AX, RESULTDI-2 MOV RESULTDI,AX ADD DI,2 LOOP L1 RET FIBONACCI ENDP 4.36

20、、答 :在数据段中定义变量 : TABLE DW INFORM1, INFORM2, INFORM3, INFORM4, INFORM5 DW INFORM6, INFORM7, INFORM8, INFORM9, INFORM10 在代码段中编写程序段: MOV CX,10 XOR SI,SI L1: MOV DX,TABLESI MOV AH,9 INT 21H ADD SI,2 CALL WAIT LOOP L1 这里, WAIT 为延时子程序,用于在显示信息之间的停顿。 4.37、答: 先编写一个子程序 DISPALD,完成以 3 位十进制数形式显示出 AL 的内容。 DISPALD

21、PROC NEAR PUSH AX PUSH CX PUSH DX XOR AH,AH MOV CL, 100 DIV CL PUSH AX MOV DL,30H ADD DL,AL MOV AH,2 INT 21H POP AX MOV AL,AH XOR AH,AH MOV CL,10 DIV CL PUSH AX MOV DL,30H ADD DL,AL MOV AH,2 INT 21H POP AX MOV DL,30H ADD DL,AH MOV AH,2 INT 21H POP DX POP CX POP AX RET DISPALD ENDP 在此基础上,根据题目要求, 需要用到

22、 3 个指针: SI 指向源数组 ARRAY, DI 指向 正数数组 ARRAYP, BX 指向 负数数组 ARRAYN。 MOV CX,20 XOR DX,DX LEA SI,ARRAY LEA DI,ARRAYP LEA BX,ARRAYN L1: MOV AL,SI AND AL,AL JS L2 MOV DI,AL INC DI INC DL JMP L3 L2: MOV BX,AL INC BX INC DH L3: INC SI LOOP L1 MOV AL,DL CALL DISPALD MOV AL,DH CALL DISPALD 4.38、答 :设 BUFFER 中存放的是有

23、符号数。 MOV CX,100 LEA SI,BUFFER MOV AX, 7FFFH L1: AND WORD PTR SI,1 JNZ L2 CMP SI,AX JGE L2 MOV AX,SI L2: ADD SI,2 LOOP L1 4.39、 答 : BL 用于存放项数。 STACK SEGMENT STACK STACK DW 100H DUP( ?) TOP LABEL WORD STACK ENDS DATA SEGMENT DB 100H DUP( ?) DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:DATA, SS:STACK

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。