《2022年汇编语言第三五章课后题答案 .pdf》由会员分享,可在线阅读,更多相关《2022年汇编语言第三五章课后题答案 .pdf(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、3.1给定 (BX)=637DH ,(SI)=2A9BH ,位移量D=7237H ,试确定在以下各种寻址方式下的有效地址是什么?(1) 立即寻址(2) 直接寻址(3) 使用 BX 的寄存器寻址(4) 使用 BX 的简接寻址(5) 使用 BX 的寄存器相对寻址(6) 基址变址寻址(7) 相对基址变址寻址答: (1) 操作数在指令中,即立即数;(2) EA=D=7237H ;(3) 无 EA,操作数为 (BX)=637DH ;(4) EA=(BX)=637DH ;(5) EA=(BX)+D=0D5B4H;(6) EA=(BX)+(SI)=8E18H;(7) EA=(BX)+(SI)+D=1004F
2、H; 超过了段的边界, 最高进位位丢失, 因此 EA=004FH 。3.2试根据以下要求写出相应的汇编语言指令(1) 把 BX 寄存器和DX 寄存器的内容相加,结果存入DX 寄存器中。(2) 用寄存器 BX 和 SI 的基址变址寻址方式把存储器中的一个字节与AL 寄存器的内容相加,并把结果送到AL 寄存器中。(3) 用寄存器BX 和位移量0B2H 的寄存器相对寻址方式把存储器中的一个字和(CX) 相加,并把结果送回存储器中。(4) 用位移量为0524H 的直接寻址方式把存储器中的一个字与数2A59H 相加,并把结果送回存储单元中。(5) 把数 0B5H 与(AL) 相加,并把结果送回AL 中。
3、答: (1) ADD DX, BX (2) ADD AL, BXSI (3) ADD BX+0B2H, CX (4) ADD WORD PTR 0524H, 2A59H (5) ADD AL, 0B5H 3.3写出把首地址为BLOCK 的字数组的第6 个字送到DX 寄存器的指令。 要求使用以下几种寻址方式:(1) 寄存器间接寻址(2) 寄存器相对寻址(3) 基址变址寻址答: (1) MOV BX, OFFSET BLOCK ADD BX, (6 1)*2 MOV DX, BX (2) MOV BX, OFFSET BLOCK 改为:MOV BX, (6-1)*2 MOV DX, BX+(6 1
4、)*2 也可MOV DX, BLOCKBX (3) MOV BX, OFFSET BLOCK MOV SI, (6 1)*2 MOV DX, BXSI 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 41 页 - - - - - - - - - 3.4现 有 (DS)=2000H , (BX)=0100H , (SI)=0002H , (20100H)=12H , (20101H)=34H ,(20102H)=56H , (20103H)=78H , (21200H)=2
5、AH , (21201H)=4CH , (21202H)=B7H ,(21203H)=65H , 试说明下列各条指令执行完后AX 寄存器的内容。(1) MOV AX, 1200H (2) MOV AX, BX (3) MOV AX, 1200H (4) MOV AX, BX (5) MOV AX, 1100BX (6) MOV AX, BXSI (7) MOV AX, 1100BXSI 答: (1) (AX)=1200H (2) (AX)=0100H (3) (AX)=4C2AH (4) (AX)=3412H (5) (AX)=4C2AH (6) (AX)=7856H (7) (AX)=65B
6、7H 3.5给 定 (IP)=2BC0H , (CS)=0200H , 位 移 量 D=5119H , (BX)=1200H , (DS)=212AH ,(224A0H)=0600H ,(275B9H)=098AH ,试为以下的转移指令找出转移的偏移地址。(1) 段内直接寻址(2) 使用 BX 及寄存器间接寻址方式的段内间接寻址(3) 使用 BX 及寄存器相对寻址方式的段内间接寻址答: (1) JMP NEAR PTR 5119H ; (IP)=5119H+(IP)+03H)=7CDCH, 物 理 地 址PA=09CDCH (IP)+03H 是 JMP NEAR PTR 5119H 指令的下一
7、条指令的首地址。(2) JMP WORD PTR BX ;(IP)=(DS)*10H+(BX)=0600H,PA=02600H (3) JMP DBX ;(IP)=(DS)*10H+(BX)+D)=098AH,PA=0298AH 3.6设当前数据段寄存器的内容为1B00H,在数据段的偏移地址2000H 单元内,含有一个内容为 0FF10H 和 8000H 的指针,它们是一个16 位变量的偏移地址和段地址,试写出把该变量装入AX 的指令序列,并画图表示出来。答: MOV BX, 2000H ;图示如上所示。MOV AX, 2000H+2 MOV ES, AX MOV AX, ES:BX 3.7在
8、 0624H 单元内有一条二字节JMP SHORT OBJ 指令,如其中位移量为(1) 27H,(2) 6BH,(3) 0C6H ,试问转向地址OBJ 的值是多少?答: (1) OBJ=0624H+02H+27H=064DH (2) OBJ=0624H+02H+6BH=0691H (3) OBJ=0624H+02H+0C6H=05ECH ;C6H 对应的负数为-3AH (向上转移,负位移量)3.8假定 (DS)=2000H ,(ES)=2100H ,(SS)=1500H,(SI)=00A0H ,(BX)=0100H ,(BP)=0010H ,数据段中变量名VAL 的偏移地址为0050H,试指出
9、下列源操作数字段的寻址方式是什FFH 00H 80H 3.6 题的作图表示10H 1B00:2000H 1B00:2001H 1B00:2002H 1B00:2003H 8000:FF10H 8000:FF11H ? (AL) ? (AH) MOV BX, 2000H LES BX, BX MOV AX, ES :BX 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 41 页 - - - - - - - - - 么?其物理地址值是多少?(1) MOV AX, 0ABH (
10、2) MOV AX, BX (3) MOV AX, 100H (4) MOV AX, V AL (5) MOV AX, BX (6) MOV AX, ES:BX (7) MOV AX, BP (8) MOV AX, SI (9) MOV AX, BX+10 (10) MOV AX, V ALBX (11) MOV AX, BXSI (12) MOV AX, V ALBXSI 答: (1) 立即方式;操作数在本条指令中(2) 寄存器寻址方式;操作数为(BX)=0100H (3) 直接寻址方式;PA=20100H (4) 直接寻址方式;PA=20050H (5) BX 寄存器间接寻址方式;PA=2
11、0100H (6) 附加段 BX 寄存器间接寻址方式;PA=21100H (7) BP 寄存器间接寻址方式;PA=15010H (8) SI 寄存器间接寻址方式;PA=200A0H (9) BX 寄存器相对寻址方式;PA=20110H (10) BX 寄存器相对寻址方式;PA=20150H (11) BX 和 SI 寄存器基址变址寻址方式;PA=201A0H (12) BX 和 SI 寄存器相对基址变址寻址方式; PA=201F0H 3.9在 ARRAY 数组中依次存储了七个字数据,紧接着是名为ZERO 的字单元,表示如下:ARRAY DW 23, 36, 2, 100, 32000, 54,
12、 0 ZERO DW ? (1) 如果 BX 包含数组ARRAY 的初始地址,请编写指令将数据0 传送给 ZERO 单元。(2) 如果 BX 包含数据0 在数组中的位移量,请编写指令将数据0 传送给 ZERO 单元。答: (1) MOV AX, BX+(7-1)*2 MOV BX+(7)*2, AX (2) MOV AX, ARRAY BX MOV ARRAY BX+2, AX 3.10 如 TABLE 为数据段中0032 单元的符号名,其中存放的内容为1234H,试问以下两条指令有什么区别?指令执行完后AX 寄存器的内容是什么?MOV AX, TABLE LEA AX, TABLE 答: M
13、OV AX, TABLE 是将 TABLE 单元的内容送到AX,(AX)=1234H LEA AX,TABLE是将 TABLE 单元的有效地址送到AX ,(AX)=0032H 3.11 执行下列指令后AX 寄存器中的内容是什么?TABLE DW 10, 20, 30, 40, 50 ;000AH, 0014H, 001EH, 0028H, 0032H ENTRY DW 3 MOV BX, OFFSET TABLE ADD BX, ENTRY MOV AX, BX 答: (AX)=1E00H (TABLE 的存储方式如右图所示) 3.12 下列 ASCII 码串 (包括空格符 )依次存储在起始地
14、址为CSTRING 的字节单元中:0AH 00H 14H 00H 1EH 00H 28H 00H 32H 00H TABLE TABLE+3 3.11题的 TABLE存储方式名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 41 页 - - - - - - - - - CSTRING DB ,BASED ADDRESSING ?请编写指令将字符串中的第1 个和第 7 个字符传送给DX 寄存器。答: MOV DH, CSTRING MOV DL, CSTRING+7-1 3.
15、13 已知堆栈段寄存器SS 的内容是 0FFA0H,堆栈指针寄存器SP 的内容是00B0H,先执行两条把8057H 和 0F79H 分别进栈的PUSH 指令,再执行一条POP 指令。试画出堆栈区和 SP 的内容变化过程示意图(标出存储单元的物理地址)。答:堆栈区和SP 的内容变化过程示意图如下左图所示。3.14 设(DS)=1B00H ,(ES)=2B00H ,有关存储单元的内容如上右图所示。请写出两条指令把字变量 X 装入 AX 寄存器。答: MOV BX, 2000H MOV AX, ES:BX 3.15 求出以下各十六进制数与十六进制数62A0H 之和,并根据结果设置标志位SF、ZF、C
16、F 和 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) 差为 C754
17、H;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) ZW-(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 79H
18、0FH 57H 80H FFAACH FFAB0H 3.13 题的堆栈区和SP 的内容变化过程示意图FFAAEH 首次进栈 (SP)(SP)-2 再次进栈 (SP)(SP)-2 出栈时 (SP)(SP)+2 8000H 1B00:2000 3.14 题的存储区情况2B00H X 1B00:2002 2B00:8000 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 41 页 - - - - - - - - - MOV Z, AX (2) MOV BX, X ADD BX,
19、 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 ;(AX)=1234H ,标志位不变MOV CL, 4 ;(AX) 和标志位都不变ROL AX, CL ; (AX)=2341H
20、,CF=1,SF 和 ZF 不变DEC AX ; (AX)=2340H ,CF=1 不变, SF=0,ZF=0 MOV CX, 4 ;(AX) 和标志位都不变MUL CX ;(AX)=8D00H ,CF=OF=0 ,其它标志无定义INT 20H 试问:(1) 每条指令执行完后,AX 寄存器的内容是什么?(2) 每条指令执行完后,进位、符号和零标志的值是什么?(3) 程序结束时, AX 和 DX 的内容是什么?答: (1) 见注释;(2) 见注释;(3) (AX)=8D00H ,(DX)=0 3.19 下列程序段中的每条指令执行完后,AX 寄存器及CF、SF、ZF 和 OF 的内容是什么?MOV
21、 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, 标志位不变名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 41 页 - - - - - - - - - SUB AX,
22、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,Z
23、F=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, DA TAY (4) DATAX 和 DATA
24、Y 两个字数据相乘(用 MUL) 。(5) DATAX 和 DATAY 两个双字数据相乘(用 MUL) 。(6) DATAX 除以 23(用 DIV) 。(7) DATAX 双字除以字DATAY (用 DIV) 。答: (1) MOV AX, DA TAX ADD DATAY, AX MOV AX, DA TAX+2 ADD DATAY+2, AX (2) MOV AX, DA TAX ADD DATAY, AX MOV AX, DA TAX+2 ADC DATAY+2, AX MOV DATAY+4, 0 ;用于存放进位位ADC DATAY+4, 0 (3) DATAX 和 DATAY 两个
25、字数据之和加1,结果存入BX 寄存器。(4) RESULT1 DW 0 DW 0 RESULT2 DW 0 DW 0 MOV AX, DA TAX MUL DATAY MOV RESULT1 , AX 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 41 页 - - - - - - - - - MOV RESULT1+2, DX MOV AX, DA TAX+2 MUL DATAY+2 MOV RESULT2 , AX MOV RESULT2+2, DX (5) AADW
26、 0 BB DW 0 CC DW 0 DD DW 0 MOV AX, DA TAX MUL DATAY MOV AA , AX MOV BB, DX MOV AX, DA TAX MUL DATAY+2 ADD BB, AX ADC CC, DX MOV AX, DA TAX+2 MUL DATAY ADD BB, AX ADC CC, DX ADC DD, 0 MOV AX, DA TAX+2 MUL DATAY+2 ADD CC, AX ADC DD, DX (6) MOV AX, DA TAX MOV BL, 23 DIV BL (7) MOV DX, DATAX+2 MOV AX, D
27、A TAX 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 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 41 页
28、- - - - - - - - - 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, V ALUE ; (BX)=9AH ,CF、OF 都为 0,AF 无定义, SF=1, ZF=0,PF=1 (2) AND BX, V ALUE ; (BX)=61H , CF、OF 都为 0,AF 无定义, SF=0,ZF=0,PF=0 (3) OR BX,
29、V ALUE ;(BX)=0FBH ,CF、OF 都为 0,AF 无定义, SF=1,ZF=0,PF=0 (4) XOR BX, 0FFH ; (BX)=1CH , CF、OF 都为 0,AF 无定义, SF=0, ZF=0,PF=0 (5) AND BX, 0 ; (BX)=00H , CF、OF 都为 0,AF 无定义, SF=0,ZF=1,PF=1 (6) TEST BX, 01H ;(BX)=0E3H ,CF、OF 都为 0,AF 无定义, SF=1,ZF=0,PF=0 答:见注释。3.24 试写出执行下列指令序列后BX 寄存器的内容。执行前(BX)=6D16H 。MOV CL, 7
30、SHR BX, CL 答: (BX)=00DAH 。3.25 试用移位指令把十进制数+53 和 -49 分别乘以2。它们应该用什么指令?得到的结果是什么?如果要除以2 呢?答: MOV AL, 53 SAL AL, 1 ;(AL)=(+53*2)=6AH MOV AL, -49 SAL AL, 1 ;(AL)=(-49*2)=9EH MOV AL, 53 SAR AL, 1 ;(AL)=(53/2)= 1AH MOV AL, -49 SAR AL, 1 ;(AL)=(-49/2)=0E7H 3.26 试分析下面的程序段完成什么功能?MOV CL, 04 SHL DX, CL MOV BL, A
31、H SHL AX, CL SHR BL, CL OR DL, BL 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 41 页 - - - - - - - - - 答:本程序段将(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
32、 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 EXP
33、LORERS INC. ?PRLINE DB 20 DUP (,?) 用串指令编写程序段分别完成以下功能:(1) 从左到右把CONAME 中的字符串传送到PRLINE 。(2) 从右到左把CONAME 中的字符串传送到PRLINE 。(3) 把 CONAME 中的第 3 和第 4 个字节装入AX 。(4) 把 AX 寄存器的内容存入从PRLINE+5 开始的字节中。(5) 检查 CONAME 字符串中有无空格字符,如有则把第一个空格字符的地址传送给BX寄存器。答: (1) MOV CX, 20 CLD MOV SI, SEG CONAME MOV DS, SI MOV ES, SI LEA S
34、I, 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 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 41 页 - - - - - - - - - LEA DI, PRLINE ADD DI, 20-1 REP MOVSB (3) MOV AX, WORD PTR CONAME+3-
35、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
36、, 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) 把
37、STUDENT_NAME移到 PRINT_LINE的前 30 个字节中,把STUDENT_ ADDR移到 PRINT_LINE的后 9 个字节中。答:公共的程序段如下:MOV DI, DS MOV ES, DI (1) MOV CX, 132 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 41 页 - - - - - - - - - MOV AL., ,?;空格的ASCII 码送 AL 寄存器CLD LEA DI, PRINT_LINE REP STOSB (2) M
38、OV CX, 9 MOV AL., ,-?CLD LEA DI, STUDENT_ ADDR REPNE SCASB JNE NO_DASH DEC DI NO_DASH: (3) MOV CX, 9 MOV AL., ,-?STD LEA DI, STUDENT_ ADDR ADD DI, 9-1 REPNE SCASB JNE NO_DASH INC DI NO_DASH: (4) MOV CX, 30 MOV AL, ,?;空格的ASCII 码送 AL 寄存器CLD LEA DI, STUDENT_NAME REPE SCASB JNE NEXT MOV CX, 30 MOV AL, ,
39、* ?;“ *” 的 ASCII 码送 AL 寄存器LEA DI, STUDENT_NAME REP STOSB NEXT: (5) MOV CX, 30 CLD LEA SI, STUDENT_NAME LEA DI, PRINT_LINE REP MOVSB MOV CX, 9 STD LEA SI, STUDENT_ADDR+9-1 LEA DI, PRINT_LINE+132-1 REP MOVSB 3.32 编写一程序段:比较两个5 字节的字符串OLDS 和 NEWS ,如果 OLDS 字符串不同于NEWS 字符串则执行NEW_LESS ;否则顺序执行程序。名师资料总结 - - -精
40、品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 41 页 - - - - - - - - - 答:程序段如下:MOV CX, 5 CLD MOV DI, SEG OLDS MOV DS, DI MOV ES, DI LEA SI, OLDS LEA DI, NEWS REPE CMPSB JNE NEW_LESS NEW_LESS: 3.33 假定 AX 和 BX 中的内容为带符号数,CX 和 DX 中的内容为无符号数,请用比较指令和条件转移指令实现以下判断:(1) 若 DX 的内容超过CX 的
41、内容,则转去执行EXCEED。(2) 若 BX 的内容大于AX 的内容,则转去执行EXCEED 。(3) 若 CX 的内容等于0,则转去执行ZERO。(4) BX 与 AX 的内容相比较是否产生溢出?若溢出则转OVERFLOW 。(5) 若 BX 的内容小于等于AX 的内容,则转EQ_SMA 。(6) 若 DX 的内容低于等于CX 的内容,则转EQ_SMA 。答: (1) CMP DX, CX JA EXCEED (2) CMP BX, AX JG EXCEED (3) JCXZ ZERO (4) CMP BX, AX JO OVERFLOW (5) CMP BX, AX JLE EQ_SMA
42、 (6) CMP DX, CX JBE EQ_SMA 3.34 试分析下列程序段:ADD AX, BX JNO L1 JNC L2 SUB AX, BX JNC L3 JNO L4 JMP SHORT L5 如果 AX 和 BX 的内容给定如下:AX BX (1) 147BH 80DCH (2) B568H 42C8H (3) 42C8H 608DH 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 41 页 - - - - - - - - - (4) D023H 9FD
43、0H (5) 94B7H B568H 问该程序分别在上面5 种情况下执行后,程序转向哪里?答: (1) 转向 L1 (2) 转向 L1 (3) 转向 L2 (4) 转向 L5 ;因为加法指令后AX 中已经是6FF3H (5) 转向 L5 ;因为加法指令后AX 中已经是4A14H 3.35 指令 CMP AX, BX 后面跟着一条格式为J,L1 的条件转移指令,其中, 可以是B、NB、 BE、NBE 、 L、NL 、LE、NLE 中的任意一个。如果AX 和 BX 的内容给定如下:AX BX (1) 1F52H 1F52H (2) 88C9H 88C9H (3) FF82H 007EH (4) 5
44、8BAH 020EH (5) FFC5H FF8BH (6) 09A0H 1E97H (7) 8AEAH FC29H (8) D367H 32A6H 问以上 8 条转移指令中的哪几条将引起转移到L1?答: (1) JNB、JBE、 JNL、JLE (2) JNB、JBE、 JNL、JLE (3) JNB、JNBE、JL、JLE (4) JNB、JNBE、JNL、 JNLE (5) JNB、JNBE、JL、JLE (6) JB、JBE、JL、JLE (7) JB、JBE、JNL 、JNLE (8) JNB、JNBE、JL、JLE 3.36 假设 X 和 X+2 单元的内容为双精度数p,Y 和 Y
45、+2 单元的内容为双精度数q,(X 和 Y为低位字 )试说明下列程序段做什么工作?MOV DX, X+2 MOV AX, X ADD AX, X ADC DX, X+2 CMP DX, Y+2 JL L2 JG L1 CMP AX, Y JBE L2 L1:MOV AX, 1 JMP SHORT EXIT L2:MOV AX, 2 EXIT :INT 20H 答:此程序段判断p*2 q,则使 (AX)=1 后退出; p*2q,则使 (AX)=2 后退出。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - -
46、 - - - 第 13 页,共 41 页 - - - - - - - - - 3.37 要求测试在STATUS 中的一个字节,如果第1、3、5 位均为 1 则转移到ROUTINE_1 ;如果此三位中有两位为1 则转移到 ROUTINE_2 ;如果此三位中只有一位为1 则转移到ROUTINE_3 ;如果此三位全为0 则转移到ROUTINE_4 。试画出流程图, 并编制相应的程序段。答:程序段如下:MOV AL, STA TUS AND AL, 00010101B ;只保留第1、3、5 位JZ ROUTINE_4 ;3 位全为 0 转 ROUTINE_4 JPE ROUTINE_2 ;两位为 1
47、转 ROUTINE_2 CMP AL, 00010101B JZ ROUTINE_1 ;3 位全为 1 转 ROUTINE_1 ROUTINE_3:;仅一位为1 执行 ROUTINE_3 JMP EXITROUTINE_1:JMP EXIT ROUTINE_2:JMP EXIT ROUTINE_4:EXIT: INT 20H 3.38 在下列程序的括号中分别填入如下指令:(1) LOOP L20 (2) LOOPE L20 (3) LOOPNE L20 试说明在三种情况下,当程序执行完后,AX、BX 、CX、DX 四个寄存器的内容分别是什么?TITLE EXLOOP.COM CODESG SE
48、GMENT ASSUME CS:CODESG, DS: CODSEG , SS: CODSEG ORG 100H BEGIN: MOV AX, 01 MOV BX, 02 MOV DX, 03 MOV CX, 04 L20: INC AX ADD BX, AX SHR DX, 1 ( ) RET CODESG ENDS END BEGIN 答: (1) (AX)=5H ,(BX)=10H ,(CX)=0H , (DX)=0H (2) (AX)=2H ,(BX)=4H , (CX)=3H ,(DX)=1H (3) (AX)=3H ,(BX)=7H , (CX)=2H ,(DX)=0H 全为 0
49、吗? 二位为 1吗? 仅一位为 1 执行ROUTINE_3转去执行ROUTINE_4 N N Y Y 3.44 题的程序流程图程序开始(AL) (STATUS) 只保留第1,3,5转去执行ROUTINE_2 全为 1 吗? N Y 转去执行ROUTINE_1执行 EXIT 程序结束名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 41 页 - - - - - - - - - 3.39 考虑以下的调用序列:(1) MAIN调用 NEAR 的 SUBA 过程 (返回的偏移地址
50、为0400);(2) SUBA 调用 NEAR 的 SUBB 过程 (返回的偏移地址为0A00) ;(3) SUBB 调用 FAR 的 SUBC 过程 (返回的段地址为B200,返回的偏移地址为0100);(4) 从 SUBC 返回 SUBB ;(5) SUBB 调用 NEAR 的 SUBD 过程 (返回的偏移地址为0C00);(6) 从 SUBD 返回 SUBB;(7) 从 SUBB 返回 SUBA ;(8) 从 SUBA 返回 MAIN ;(9) 从 MAIN 调用 SUBC(返回的段地址为1000,返回的偏移地址为0600);请画出每次调用及返回时的堆栈状态。答:每次调用及返回时的堆栈状