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个字节中。 答:公共的程序段如下:
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库汇编课后题答案(清华大学出版社沈美明版)(1)(2)在线全文阅读。
相关推荐: