2022年汇编语言程序设计程学先汇编第,章作业参考答案 .pdf
《2022年汇编语言程序设计程学先汇编第,章作业参考答案 .pdf》由会员分享,可在线阅读,更多相关《2022年汇编语言程序设计程学先汇编第,章作业参考答案 .pdf(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2.16 编写程序段 ,使( AH )与 ( AL) 中地内容互换. 解 1 MOV BL,AL MOV AL,AH. MOV AH,BL 解 2 XCHG AH,AL 2.17 编写程序段 ,使( BL)中高 4 位与低 4 位内容互换 . 解 1 MOV CL,4 MOV BH,0 SHL BX,CL ADD BL,BH 解 2 MOV CL,4 ROL BL,CL 2.18 编写程序段 ,实现当( DL )是奇数时使(AL )=31H,否则使( AL ) =30H. SHR DL,1 MOV AL,0 RCL AL,1 ADD AL,30H 2.20 设寄存器AX 中存放1234H,BX
2、 寄存器中存放1 ,执行 DIV BL 指令后 ,会发生什么现象?为什么?溢出 ,商超过 8位 ,在 AL 中存放不下商 . 2.21 设 DX 寄存器中存放值为 0 ,AX 中存放 1234H,BX 中存放 1 ,执行 DIV BX 后 ,是否会出现与 2.20 相同现象?为什么?不会 ,因为是 16 位除法 ,商未超过16 位2.22 一字数据压栈时堆栈指针如何改变?弹出一字数据时堆栈指针如何改变?压栈时堆栈指针减2;弹出一字数据时堆栈指针加2 2.23 已知( SP)=2088H, (AX )=1A89H, (BX )=90CDH.依次执行以下三条指令后,画图说明堆栈中数据情况,及 SP
3、、AX 、BX 中数据 . PUSH AX PUSH BX POP AX (SP)=2086H,(AX )=90CDH,( BX)=90CDH. *2.25 编写程序段求8!( 8 地阶乘) . MOV AX,8 MOV BX,7 NEXT:DX,0 MUL BX DEC BX JNZ NEXT 2.27 假设( AX )=07EH,变量 BUFFER 中存放地内容为B5H, 求下列各条指令单独执行后地结果 . 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 35 页(1) AND AX,BUFFER 34H (2) XOR AX,BU
4、FFER CBH (3) OR AX,BUFFER 0FFH (4) ANDAX,0 0 (5) XOR AX,OFFH 81H (6) TEST AX,8000H 相与结果为0 时.AX 为正 ,值不变*2.28 编写程序段 ,判断( AL )中地有符号数是正数还是负数,正数在 CL 中写 0,否则写 1. CMP AL,0 MOV CL,0 JGE NEXT MOV CL,1 NEXT: 2.29 编写程序段 ,对存放在( DX )、( AX )中地双字数据求补. MOV BX,0 SUB BX,AX MOV AX,BX MOV BX,0 SBB BX,DX MOV DX,BX 2.31
5、假设( DX )=78D5H, (CL)=5,CF=0,确定下列各条指令单独执行后(DX )中地值 . (1)SHL DH,1 (DX ) =F0D5H (2)SAL DX, CL (DX )=1AA0H (3)SHR DX,CL (DX )=03C6H (4)SAR DL,1 ( DX )=78EAH (5)ROL DX,CL (DX )=1AAFH (6)RCR DL,1 ( DX )=786AH (7)RCL DH,CL (DX )=0FD5H 2.32 按下列要求编写指令序列. (1)清除 DH 中最低 3 位而不改变其他位,结果存入 BH. AND DH,0F8H (2)将 DI 中
6、最高 3 位置 1 而不改变其他位. OR DI,0E000H (3)将 AX 中 03 位置 1、79 位取反、其他位清0. OR AX,0FH XOR AX,380H AND AX,38FH (4)检查 BX 中第 2、5、 9位是否至少有1位是 1. TEST AX,224H 如果结果非0 (5)检查 CX 中第 1、6、 11位是否同时为1. NOT CX TEST CX,842H 如果结果为0 (6)检查 BX 中第 0、2、 9、13 位是否至少有1 位是 0. NOT BX TEST BX,2205H 如果结果非0 精选学习资料 - - - - - - - - - 名师归纳总结
7、- - - - - - -第 2 页,共 35 页(7)检查 DX 中第 1、4、 11、14 位是否同时是0. TEST DX,4812H 如果结果为0 2.33 编写指令序列分别实现下述功能. (1)右移 DI3 位,并将 0 移入最高位 . MOV CL,3 SHR DI,CL (2)将 AL 左移一位 ,将 0移入最低位 . SHL AL,1 (3)DX 右移 6位且保持正负特性不变. MOV CL,6 SAR DX,CL (4)将 AL 中压缩 BCD 码变成 AX 中地非压缩BCD 码. MOV AH,0 MOV CL,4 SHL AL,CL MOV CL,4 SHR AL,CL
8、2.34 分析下面地程序段完成什么功能?MOV CL,4 SHR AX,CL MOV BL,DL SHR DX,CL SHL BL,CL OR AH,BL 将双字( DX,AX )逻辑右移4位*2.35 设数据段偏移地址1000H 处开始存放有10个字节数据 ,将其求和 ,结果存放在AX 中. MOV CX,10 MOV SI,1000H MOV AX,0 CLC LOOP1:ADC AX,SI INC SI LOOP LOOP1 2.37 从键盘输入0到 9 之间某数字字符,利用列表法将该数字地平方值放到AL 中. SUB DB 0,1,4,9,16,25,36,49,64,81 MOV A
9、H,1 INT 21H SUB AL,30H MOV BL,AL MOV BH,0 MOV AL,SUBBX 2.38 已知 X、Y、Z、P、K 均为 16 位带符号数 ,求计算(1000+X*Y-Z)/P地程序段 .注明结果地商与余数所存放地位置. 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 35 页MOV AX, X IMUL Y ; x*y MOV CX, AX MOV BX, DX MOV AX, Z CWD ;符号扩展 ,AX 中符号扩展到DX 中SUB CX, AX SBB BX, DX ; x*y-z MOVAX, 1
10、000 MOV DX,0 SUB AX, CX SBB DX,BX MOV BX, P IDIV BX ;(1000+X*Y-Z)/P 4.1 编制程序计算Y5X7,设 X 值在 DAX 字节单元 ,结果存入RLT 字节单元 .X 为带符号整数 . 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 35 页DATA SEGMENT DAX DB 15H RLT DB 0 DATA ENDS STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME DS:DA TA,S
11、S:STACK,CS:CODE START:MOV AX,DATA MOV DS,AX MOV AL,DAX MOV BL,5 。X*5 IMUL BL 。有符号数乘法 ADD AL,7 MOV RLT,AL MOV AH,4CH INT 21H CODE ENDS END START 。DAX 绝对值不能超过18H (0-18H 或 0FFH-0E9H). 。否则 ,RLT 得为字类型 ,ADD AL,7 改为 ADD AX,7 。因为 7 已知为正 ,无需符号扩展 . 4.3 编制程序计算XY.设 X、Y 分别在 DAX 、DAY 单元 ,结果存入RESULT 单元 . (1)X、Y 为字
12、节数据(2)X、Y 为字数据(3)X、Y 为双字节数据要求:存取数据时至少使用三种不同地寻址方式. 1、用直接寻址DATA SEGMENT DAX DB 18H DAY DB 65H RESULT DB 0 DATA ENDS STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME DS:DA TA,SS:STACK,CS:CODE START:MOV AX,DATA MOV DS,AX MOV AL,DAX 。 源操作数为直接寻址 SUB AL,DAY MOV RESULT,AL MOV AH,4CH INT 21H
13、精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 35 页 CODE ENDS END START 2、换间接寻址与相对寻址DATA SEGMENT DAX DW 18H DAY DW 65H RESULT DW 0 DATA ENDS STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME DS:DA TA,SS:STACK,CS:CODE START:MOV AX,DATA MOV DS,AX MOV SI,DAX MOV DI,RESULT MOV AX,SI
14、 。源操作数为间接寻址 SUB AX,SI+2 。 源操作数为相对寻址MOV DI,AX MOV AH,4CH INT 21H CODE ENDS END START 3、X、Y 为双字节数据 ,必须分高16 位与低 16 位分别运算方法 1 DATA SEGMENT DAX DD 2A341928H DAY DD 6873BC25H RESULTDD 0 DATA ENDS STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME DS:DA TA,SS:STACK,CS:CODE START:MOV AX,DATA M
15、OV DS,AX MOV AX,WORD PTR DAX 。减低 16 位 SUB AX,WORD PTR DAY MOV WORD PTR RESULT,AX MOV AX,WORD PTR DAX+2 。减高 16 位 SUB AX,WORD PTR DAY+2 MOV WORD PTR RESULT+2,AX 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 35 页 MOV AH,4CH INT 21H CODE ENDS END START 。特别注意加“WORD PTR ”。注意低16 位与高 16 位各是如何表示地. 。还要
16、注意,本题要求出现三种以上寻址方式.目前解中用到了寄存器寻址、直接寻址、间接寻址与相对寻址4 种方式 . 方法 2:LEA SI,DAX LEA DI,DAY LEA BX,RESULT MOV AX,SI SUB AX, DI 。减低 16 位MOV BX,AX MOV AX,SI+2 SBB AX, DI+2 。减高 16 位MOV BX+2,AX 4.4 设内存OPCD 单元存放一个16 位代码 ,编制程序将其中15 13,128,73,20 位地代码分别存入WCD 开始地单元 .每段代码地最低位与单元地第0 位对齐 . 解法 1:DATA SEGMENT OPCD DW 2A5CH W
17、CD DW ?,?,?,? DATA ENDS STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME DS:DA TA,SS:STACK,CS:CODE START:MOV AX,DATA MOV DS,AX MOV AX,OPCD MOV CL,13 。逻辑右移13 位 SHR AX,CL MOV WCD,AX MOV AX,OPCD AND AX,1FFFH 。屏蔽高3位 MOV CL,8 。逻辑右移13 位 SHR AX,CL MOV WCD+2,AX 精选学习资料 - - - - - - - - - 名师归纳总
18、结 - - - - - - -第 7 页,共 35 页 MOV AX,OPCD AND AX,0FFH MOV CL,3 SHR AX,CL MOV WCD+4,AX MOV AX,OPCD AND AX,7 MOV WCD+6,AX MOV AH,4CH INT 21H CODE ENDS END START 解法 2:下面一种方法是4 个字生成地程序段全一样,可以类似于逻辑尺建立一个数据表,变成循环来做. MOV AX,OPCD MOV CL,3 ROR AX 。循环右移3 位MOV BX,AX 。暂存 AX AND AX,07H 。保留低3位MOV WCD,AX MOV AX,BX 。恢
19、复 AX MOV CL,5 ROR AX 。循环右移5 位MOV BX,AX 。暂存 AX AND AX,1F MOV WCD+2,AX 。保留低5 位MOV AX,BX MOV CL,5 ROR AX MOV BX,AX AND AX,1F MOV WCD+4,AX MOV AX,BX MOV CL,3 ROR AX MOV BX,AX AND AX,07H MOV WCD+6,AX 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 35 页4.5 利用查表地方法计算SX2Y2,设 0X15,0Y15,且分别在DAX 、 DAY 字节单
20、元存放 ,结果存入RLT 单元 . DATA SEGMENT TAB DB 0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225 。建立平方值表 DAX DB 11 。假设 X 地值 DAY DB 13 。假设 Y 地值 RLT DW ? DATA ENDS STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME DS:DA TA,SS:STACK,CS:CODE START:MOV AX,DATA MOV DS,AX MOV AL,DAX LEA BX,TAB 。指向平方值
21、表 XLAT 。根据 X 地值查表 MOV AH,0 MOV RLT,AX MOV AL,DAY 。根据 Y 地值查表 XLAT MOV AH,0 ADD RLT,AX 。求 SX2Y2 MOV AH,4CH INT 21H CODE ENDS END START 4.6 编程实现把键入地一个字符,用二进制形式(0/1)显示出它地ASCII 代码值 . MOV AH,1 。键入一个字符INT 21H MOV CX,8 NEXT: ROL AL,1 。循环左移一位 MOV DL,AL ANDDL,1;保留最低1 位ADD DL,30H;显示一位 MOV AH,2 INT 21H LOOPNEXT
22、 4.7 编写一个程序,把从键盘输入地一个小写字母用大写字母显示出来. MOV AH,1 。键入一个字符INT 21H 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 35 页CMPAL , a 。小于 a(小 A) 退出JB EXIT CMPAL , zJA EXIT 。大于 z(小 z)退出SUB AL,20H 。小写变大写MOV DL,AL 。显示 MOV AH,2 INT 21H EXIT: MOV AH,4CH INT 21H 4.9 设有如下程序段: LLL :JC LLL 若 JC LLL 指令与 LLL :处指令间相隔
23、1000H 个存储单元 ,这个程序段将出现何种异常现象?如何改造这个程序段?转移超出范围,编译失败 .可以给 JC 之后地语句加标号:NEXT, 如下所示JC LLL NEXT: 则程序改为:JNC NEXT JMP LLL NEXT: 4.13 编写程序 ,当 DL 是奇数时使AL=30H, 否则使 AL=31H. 分析 ,如果 DL 是奇数 ,最低位应为1,将 DL 右移 1 位到 CF 中,CF 将为 1. NOT DL 。将 DL 最低位 1变 0,0 变 1 SHR DL,1 。 将 DL 最低位移到CF 中 MOV AL,0 。 AL 予清 0 RCLAL,1 。 将 CF 移到
24、AL 最低位中ADDAL,30H 说明 ,本解巧妙地不使用条件语句达到题目要求. 4.16 编写一个程序 ,把变量BUFX 和 BUFY 中较大者存入BUFZ ;若两者相等,则把其中之一存入BUFZ 中 .假设变量存放地是8 位无符号数 . MOV AL,BUFX MOV BUFZ,AL 。予将 BUFX 放到 BUFZ 中CMP AL,BUFY JAE EXIT MOV AL, BUFY 。如果 BUFX 小XCHGAL, BUFZ 。将 BUFY 换到 BUFZ 中EXIT:MOV AH, 4CH 4.17 BUFX 、BUFY 和 BUFZ 是 3 个有符号16 进制数 ,编写程序实现(
25、1)如果这 3 个数都不相等 ,则显示 0;精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 35 页(2)如果这 3 个数中有两个数相等,则显示 1;(3)如果这 3 个数都相等 ,则显示 2.MOV CL, 0 。计数MOV AX, BUFX CMP AX, BUFY JNE NEXT1 INC CL 。如果 BUFX 和 BUFY 相等 ,将 CL 加 1 NEXT1:MOV AX, BUFY CMP AX, BUFZ JNE NEXT2 INC CL 。如果 BUFY 和 BUFZ 相等 ,将 CL 加 1 NEXT2:MOV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年汇编语言程序设计程学先汇编第 章作业参考答案 2022 汇编语言 程序 计程 汇编 作业 参考答案
限制150内