汇编课后题答案(清华大学出版社沈美明版)(1)(2)

2020-04-16 11:27

348213311.doc - 5 - 作者:张兆印

装入AX寄存器。 答:MOV BX, [2000H]

MOV AX, ES:[BX]

3.15 求出以下各十六进制数与十六进制数62A0H之和,并根据结果设置标志位SF、ZF、CF和OF

的值。 (1) 1234H (2) 4321H (3) CFA0H (4) 9D60H 答:(1) 和为74D4H;SF=0,ZF=0,CF=0,OF=0

(2) 和为A5C1H;SF=1,ZF=0,CF=0,OF=1 (3) 和为3240H;SF=0,ZF=0,CF=1,OF=0 (4) 和为0000H;SF=0,ZF=1,CF=1,OF=0 3.16 求出以下各十六进制数与十六进制数4AE0H的差值,并根据结果设置标志位SF、ZF、CF和OF

的值。 (1) 1234H (2) 5D90H (3) 9090H (4) EA04H 答:(1) 差为C754H;SF=1,ZF=0,CF=1,OF=0

(2) 差为12B0H;SF=0,ZF=0,CF=0,OF=0 (3) 差为45B0H;SF=0,ZF=0,CF=0,OF=1 (4) 差为9F24H;SF=1,ZF=0,CF=0,OF=0 3.17 写出执行以下计算的指令序列,其中X、Y、Z、R、W均为存放16位带符号数单元的地址。 (1) Z←W+(Z-X) (2) Z←W-(X+6)-(R+9) (3) Z←(W*X)/(Y+6),R←余数 (4) Z←((W-X)/5*Y)*2 答:(1) MOV AX, Z ;以下程序都未考虑带符号数的溢出

SUB AX, X ADD AX, W MOV Z, AX (2) MOV BX, X ADD BX, 6 MOV CX, R ADD CR, 9 MOV AX, W SUB AX, BX SUB AX, CX MOV Z, AX (3) ADD Y, 6 MOV AX, W IMUL X IDIV Y MOV Z, AX MOV R, DX (4) MOV AX, W SUB AX, X CWD

MOV BX, 5 IDIV BX IMUL Y

SHL AX, 1 ;((DX),(AX))*2 RCL DX, 1 3.18 已知程序段如下: MOV AX, 1234H MOV CL, 4 ROL AX, CL DEC AX MOV CX, 4 MUL CX INT 20H

;(AX)=1234H,标志位不变

;(AX)和标志位都不变

;(AX)=2341H,CF=1,SF和ZF不变 ;(AX)=2340H,CF=1不变,SF=0,ZF=0 ;(AX)和标志位都不变

;(AX)=8D00H,CF=OF=0,其它标志无定义

348213311.doc - 6 - 作者:张兆印

试问:

(1) 每条指令执行完后,AX寄存器的内容是什么?

(2) 每条指令执行完后,进位、符号和零标志的值是什么? (3) 程序结束时,AX和DX的内容是什么? 答:(1) 见注释;

(2) 见注释;

(3) (AX)=8D00H,(DX)=0

3.19 下列程序段中的每条指令执行完后,AX寄存器及CF、SF、ZF和OF的内容是什么? MOV AX, 0 ;(AX)=0, 标志位不变 DEC AX ;(AX)=0FFFFH, CF不变,SF=1,ZF=0,OF=0 ADD AX, 7FFFH ;(AX)=7FFEH, CF=1,SF=0,ZF=0,OF=0 ADD AX, 2 ;(AX)=8000H, CF=0,SF=1,ZF=0,OF=1 NOT AX ;(AX)=7FFFH, 标志位不变 SUB AX, 0FFFFH ;(AX)=8000H, CF=1,SF=1,ZF=0,OF=1 ADD AX, 8000H ;(AX)=0, CF=1,SF=0,ZF=1,OF=1 SUB AX, 1 ;(AX)=0FFFFH, CF=1,SF=1,ZF=0,OF=0 AND AX, 58D1H ;(AX)=58D1H, CF=0,SF=0,ZF=0,OF=0 SAL AX, 1 ;(AX)=0B1A2H, CF=0,SF=1,ZF=0,OF=1 SAR AX, 1 ;(AX)=0D8D1H, CF=0,SF=1,ZF=0,OF=0 NEG AX ;(AX)= 272FH, CF=1,SF=0,ZF=0,OF=0 ROR AX, 1 ;(AX)= 9397H, CF=1,SF和ZF不变,OF=1 答:见注释。 3.20 变量DATAX和变量DATAY的定义如下: DATAX DW 0148H

DW 2316H

DATAY DW 0237H

DW 4052H

请按下列要求写出指令序列:

(1) DATAX和DATAY两个字数据相加,和存放在DATAY中。

(2) DATAX和DATAY两个双字数据相加,和存放在从DATAY开始的双字单元中。 (3) 解释下列指令的作用:

STC MOV BX, DATAX ADC BX, DATAY

(4) DATAX和DATAY两个字数据相乘(用MUL)。 (5) DATAX和DATAY两个双字数据相乘(用MUL)。 (6) DATAX除以23(用DIV)。

(7) DATAX双字除以字DATAY (用DIV)。 答:(1) MOV AX, DATAX

ADD DATAY, AX MOV AX, DATAX+2 ADD DATAY+2, AX (2) MOV AX, DATAX

ADD DATAY, AX MOV AX, DATAX+2 ADC DATAY+2, AX MOV DATAY+4, 0 ;用于存放进位位 ADC DATAY+4, 0

(3) DATAX和DATAY两个字数据之和加1,结果存入BX寄存器。 (4) RESULT1 DW 0

DW 0

RESULT2 DW 0

DW 0 ┇

348213311.doc - 7 - 作者:张兆印

MOV AX, DATAX MUL DATAY

MOV RESULT1 , AX MOV RESULT1+2, DX MOV AX, DATAX+2 MUL DATAY+2

MOV RESULT2 , AX MOV RESULT2+2, DX (5) AA DW 0

BB DW 0 CC DW 0 DD DW 0

MOV AX, DATAX MUL DATAY MOV AA , AX MOV BB, DX

MOV AX, DATAX MUL DATAY+2 ADD BB, AX ADC CC, DX MOV AX, DATAX+2 MUL DATAY ADD BB, AX ADC CC, DX ADC DD, 0 MOV AX, DATAX+2 MUL DATAY+2 ADD CC, AX ADC DD, DX (6) MOV AX, DATAX

MOV BL, 23 DIV BL

(7) MOV DX, DATAX+2

MOV AX, DATAX DIV DATAY

3.21 写出对存放在DX和AX中的双字长数求补的指令序列。 答:NEG DX 也可为: NOT DX

NEG AX NOT AX SBB DX, 0 ADD AX, 1

ADC DX, 0

3.22 试编写一程序求出双字长数的绝对值。双字长数在A和A+2单元中,结果存放在B和B+2单元

中。

答:程序段如下:

MOV AX, A MOV DX, A+2 CMP DX, 0 JNS ZHENSHU ;不是负数则转走 NEG DX NEG AX SBB DX, 0

ZHENSHU: MOV B, AX

MOV B+2, DX INT 20H 3.23 假设(BX)=0E3H,变量VALUE中存放的内容为79H,确定下列各条指令单独执行后的结果。

(1) XOR BX, VALUE ;(BX)=9AH,CF、OF都为0,AF无定义,SF=1,ZF=0,PF=1 (2) AND BX, VALUE ;(BX)=61H,CF、OF都为0,AF无定义,SF=0,ZF=0,PF=0

348213311.doc - 8 - 作者:张兆印

(3) OR BX, VALUE (4) XOR BX, 0FFH (5) AND BX, 0 (6) TEST BX, 01H 答:见注释。

;(BX)=0FBH,CF、OF都为0,AF无定义,SF=1,ZF=0,PF=0 ;(BX)=1CH,CF、OF都为0,AF无定义,SF=0,ZF=0,PF=0 ;(BX)=00H,CF、OF都为0,AF无定义,SF=0,ZF=1,PF=1 ;(BX)=0E3H,CF、OF都为0,AF无定义,SF=1,ZF=0,PF=0

3.24 试写出执行下列指令序列后BX寄存器的内容。执行前(BX)=6D16H。 MOV CL, 7 SHR BX, CL 答:(BX)=00DAH。 3.25 试用移位指令把十进制数+53

果要除以2呢? 答:MOV AL, 53

SAL AL, 1 MOV AL, -49 SAL AL, 1 MOV AL, 53 SAR AL, 1 MOV AL, -49 SAR AL, 1

和-49分别乘以2。它们应该用什么指令?得到的结果是什么?如

;(AL)=(+53*2)=6AH ;(AL)=(-49*2)=9EH ;(AL)=(53/2)= 1AH ;(AL)=(-49/2)=0E7H

3.26 试分析下面的程序段完成什么功能? MOV CL, 04 SHL DX, CL MOV BL, AH SHL AX, CL SHR BL, CL OR DL, BL

答:本程序段将 ((DX),(AX)) 的双字同时左移4位,即将此双字乘以10H (16)。 3.27 假定(DX)=0B9H,(CL)=3,(CF)=1,确定下列各条指令单独执行后DX中的值。 (1) SHR DX, 1 ;(DX)=05CH (2) SAR DX, CL ;(DX)=17H (3) SHL DX, CL ;(DX)=5C8H (4) SHL DL, 1 ;(DX)=72H (5) ROR DX, CL ;(DX)=2017H (6) ROL DL, CL ;(DX)=0CDH (7) SAL DH, 1 ;(DX)=0B9H (8) RCL DX, CL ;(DX)=2CCH (4) RCR DL, 1 ;(DX)=0DCH 答:见注释。 3.28 下列程序段执行完后,BX寄存器的内容是什么? MOV CL, 3 MOV BX, 0B7H ROL BX,1 ROR BX, CL

答:(BX)=0C02DH。 3.29 假设数据段定义如下:

CONAME DB ?SPACE EXPLORERS INC.? PRLINE DB 20 DUP (??)

用串指令编写程序段分别完成以下功能:

(1) 从左到右把CONAME中的字符串传送到PRLINE。 (2) 从右到左把CONAME中的字符串传送到PRLINE。 (3) 把CONAME中的第3和第4个字节装入AX。

(4) 把AX寄存器的内容存入从PRLINE+5开始的字节中。

348213311.doc - 9 - 作者:张兆印

(5) 检查CONAME字符串中有无空格字符,如有则把第一个空格字符的地址传送给BX寄存器。 答:(1) MOV CX, 20

CLD MOV SI, SEG CONAME MOV DS, SI MOV ES, SI LEA SI, CONAME LEA DI, PRLINE REP MOVSB (2) MOV CX, 20 STD MOV SI, SEG CONAME MOV DS, SI MOV ES, SI LEA SI, CONAME ADD SI, 20-1 LEA DI, PRLINE ADD DI, 20-1 REP MOVSB (3) MOV AX, WORD PTR CONAME+3-1 (4) MOV WORD PTR PRLINE +5, AX (5) MOV AL, ? ? ;空格的ASCII码送AL寄存器 CLD MOV DI, SEG CONAME MOV ES, DI LEA DI, CONAME REPNE SCASB JNE NEXT DEC DI MOV BX, DI NEXT: ┇ 3.30 编写程序段,把字符串STRING中的‘&’字符用空格符代替。 STRING DB ‘The date is FEB&03’ 答:程序段如下:

MOV CX, 18 MOV AL, ‘&’ CLD

MOV DI, SEG STRING MOV ES, DI LEA DI, STRING REPNE SCASB JNE NEXT DEC DI

MOV ES:BYTE PTR [DI], ‘ ’ ;送空格符 NEXT: ┇

3.31 假设数据段中数据定义如下: STUDENT_NAME DB 30 DUP (?) STUDENT_ADDR DB 9 DUP (?) PRINT_LINE DB 132 DUP (?) 分别编写下列程序段:

(1) 用空格符清除PRINT_LINE域。

(2) 在STUDENT_ADDR中查找第一个?-?。 (3) 在STUDENT_ADDR中查找最后一个?-?。

(4) 如果STUDENT_NAME域中全是空格符时,填入?*?。

(5) 把STUDENT_NAME移到PRINT_LINE的前30个字节中,把STUDENT_ ADDR移到

PRINT_LINE的后9个字节中。 答:公共的程序段如下:


汇编课后题答案(清华大学出版社沈美明版)(1)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《白鹅》说课稿

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: