Removed_微机原理与接口技术习题答案4(1)11﹎.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《Removed_微机原理与接口技术习题答案4(1)11﹎.pdf》由会员分享,可在线阅读,更多相关《Removed_微机原理与接口技术习题答案4(1)11﹎.pdf(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 4 章 汇编语言程序设计 1.已知在 BUF 的起始处保存有N 个字符的ASCII 码,编写汇编语言程序实现,将这组 字符串传送到缓冲区BUFR 中,并且使字符串的顺序与原来的顺序相反。 解: BUF DB BONJOUR_BELLE BUFRDB 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 2.利用移位、传送和相加指令实现AX 的内容扩大10 倍。 解:将扩大后的结果放在DX :AX 中,注意到10 AX8AX 2
2、AX 。 XOR DX,DX SHL AX, 1 RCLDX, 1 MOV BX,AX MOVCX,DX SHL AX, 1 RCLDX, 1 SHL AX, 1 RCLDX, 1 ADD AX, BX ADCDX, CX 3.在缓冲区 VAR 中连续存放着3 个 16 位的无符号数,编写程序实现将其按递增关系排 列;如果 VAR 中保存的为有符号数,则再编写程序实现将其按递减关系排列。 解: VAR DW 1236 ,-432,3900 XOR SI,SI MOV AX,VARSI CMP AX, VARSI+2 JAE L1 XCHG AX, VARSI+2 L1: CMP AX, VAR
3、SI+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.编写程序段实现将AL 和 BL 中的每一位依次交叉,得到的16 位字保存在DX 中,例 如( AL ) 01100101B, (BL) 11011010B,则得到的( DX ) 10110110 10011001B。 解:利用移位指令完成。 XOR DX,DX MOV CX,8 L1: SHR AL,1 RCR DX,1 SHR BL,1 RCR D
4、X,1 LOOP L1 5.在变量 VAR1 和 VAR2 中分别保存有两个字节型的正整数,编写完整的汇编语言程序 实现: ( 1)当两数中有一个奇数时,将奇数存入VAR1 ,偶数存入VAR2 ; (2)当两数均为奇数时,两个变量的内容不变; (3)当两数均为偶数时,两数缩小一倍后存入原处。 解:当 VAR1 为奇数时,不论VAR2 的奇偶性,这两个单元的内容均不变;只有当 VAR1 为偶数时,如果VAR2 为奇数,则VAR1 与 VAR2 内容交换;如果VAR2 为偶数, 则两数缩小一倍后存入原处。 DATA SEGMENT VAR1 DB 28 VAR2 DB 36 DATA ENDS C
5、ODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:DATA START: MOV AX, DATA MOV DS,AX MOV ES, AX MOV AL,VAR1 MOV BL,VAR2 TESTAL,1 JZ EVEN1 JMP OVER EVEN1: TESTBL,1 JZEVEN2 MOV VAR1,BL MOVVAR2,AL JMPOVER EVEN2: SHRAL,1 MOVVAR1,AL SHRBL,1 MOVVAR2,BL OVER: MOV AH,4CH MOV AL,0 INT 21H CODEENDS END START 6.已知在字变量VA
6、R1 、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 MOV AX,BX LEA SI,VAR1 JMP OVER L1: MOV AX,VAR2 LEA SI,VAR2 JMP OVER L2: CMP BX,VAR3
7、JZ OVER MOV AX,VAR3 LEA SI,VAR3 OVER: 7.分析下列程序段的功能: MOV CL , 04 SHL DX ,CL MOV BL , AH SHL AX ,CL SHR BL ,CL OR DL , BL 解:程序段完成DX:AX 组成的 32 位无符号数左移4 位,低位补零(也即除以16) 。 8.下列程序段执行后,求BX 寄存器的内容: MOV CL , 3 MOV BX ,0B7H ROL BX ,1 ROR BX ,CL 解:实际上完成BX 内容循环右移2 位,因此, BX 寄存器的内容为C02DH 。 9.下列程序段执行后,求BX 寄存器的内容: M
8、OV CL , 5 MOV BX ,7D5CH SHR BX ,CL 解:完成 BX 内容逻辑右移5 位,因此, BX 寄存器的内容为03EAH 。 10.将 BUFFERS 中 N 个字按相反顺序传递到BUFFERT 中。 解: 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 DI,2 LOOP L1 11.数组 ARRAY中存放有一组字型数据,前两个字节存放数据长度(5 的倍数)。为给这 个数组中的数据进行加密保护,每5 个数据取出一
9、个数据进行加密处理:奇数位进行 取反,偶数位不变,例如对数据0110 1100 1011 0001B 加密后变成1100 0110 0001 1011B,编写加密程序encrpytion 和解密程序unencrpytion 。 解:约定从第一个数据开始,每5 个数据为一组,每组中的第一个数据采取加密/解密处 理。由于加密算法采用的是取反操作,解密算法也采用取反操作,因此解密和解密算法是 同一个程序。 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
10、 AX, SI XOR AX,0AAAAH MOV SI, AX ADD SI,10 LOOP L1 RET ENCRPYTION ENDP 13.设 BUF 中存放有 N 个无符号数(或有符号数),编程实现求它们的最小值(存入 AX )和最大值(存入DX ) 。 解: BUF 存放有 N 个无符号数的程序如下: MOV CX,N-1 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,
11、2 LOOP L1 如果 BUF 中存放的是有符号数,则只需要将程序中的两行内容修改: JBE NOCHG1改成: JLE NOCHG1 JAE NOCHG2改成: JGE NOCHG2 14.设 BUFFER 中存放有 N 个无符号(第1 个字节存放缓冲区的长度),编程实现将其中 的 0 元素抹去,并更新其长度。 解:设 BUFFER 中存放的是字节型数据。采用双指针方法:SI 为读指针, DI 为写指针, 从低地址开始,内存中读出一个字节,如果不为0,则写入内存;如果为0,则不进行写操 作。 LEA SI, BUFFER XOR CX,CX MOV CL, SI INC SI MOV DI
12、, 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 16.编写一个子程序实现统计AL 中 1 的个数,然后检测出字节型缓冲区BUF 中 0 和 1 个 数相等的元素个数。 解:统计AL 中 1 的个数,只需将AL 右移,移出的一位内容进行累加,子程序为: COUNTBYTE PROC NEAR PUSH AX PUSH CX MOV CX,8 XOR BL,BL COU1: SHR AL,1 ADC BL,0 LOOP CO
13、U1 POP CX POP AX RET COUNTBYTE ENDP 在此基础上,可以检测出字节型缓冲区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 19.在缓冲区 BUFFER 中,第 1 个字节存放数组的长度(256) ,从第 2 个字节开始存放 字符的 ASCII 码,编写子程序完成在最高位给字符加上
14、偶校验。 解: 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:DATA,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
15、 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,80H 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 MO
16、V 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 20. 编写程序完成求多位数(N 个字)的绝对值。 21. 已知斐波那契数列的定义为:,编写求 )3(, 1, 1 2121iFFFFFiii 该数列前 n 项的子程序。 解:设奖斐波那契数列存放在字变量RESULT 中。在数据段中定义 RESULT DW 100H DUP (?) 在代码段中编写子程序 FIBONACCIPROC NEAR XOR DI,DI MOV RESULTDI,1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- removed_ 微机 原理 接口 技术 习题 答案 谜底 11 十一
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内