欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    汇编语言第三五章课后题答案-.pdf

    • 资源ID:76193427       资源大小:118.26KB        全文页数:41页
    • 资源格式: PDF        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    汇编语言第三五章课后题答案-.pdf

    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=1004FH;超过了段的边界,最高进位位丢失,因此 EA=004FH。3.2试根据以下要求写出相应的汇编语言指令(1)把 BX 寄存器和DX 寄存器的内容相加,结果存入DX 寄存器中。(2)用寄存器 BX 和 SI 的基址变址寻址方式把存储器中的一个字节与AL 寄存器的内容相加,并把结果送到AL 寄存器中。(3)用寄存器BX 和位移量0B2H 的寄存器相对寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器中。(4)用位移量为0524H 的直接寻址方式把存储器中的一个字与数2A59H 相加,并把结果送回存储单元中。(5)把数 0B5H 与(AL)相加,并把结果送回AL 中。答:(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)*2 也可MOV DX,BLOCKBX(3)MOV BX,OFFSET BLOCK MOV SI,(6 1)*2 MOV DX,BXSI 3.4现 有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(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)=65B7H 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 指令的下一条指令的首地址。(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在 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,试指出下列源操作数字段的寻址方式是什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 么?其物理地址值是多少?(1)MOV AX,0ABH(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=20100H(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,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 答:MOV 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 码串(包括空格符)依次存储在起始地址为CSTRING 的字节单元中:0AH 00H 14H 00H 1EH 00H 28H 00H 32H 00H TABLE TABLE+3 3.11题的 TABLE存储方式CSTRING DB,BASED ADDRESSING?请编写指令将字符串中的第1 个和第 7 个字符传送给DX 寄存器。答:MOV DH,CSTRING MOV DL,CSTRING+7-1 3.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、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)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 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 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;(AX)=1234H,标志位不变MOV CL,4;(AX)和标志位都不变ROL AX,CL;(AX)=2341H,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 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,DA TAY(4)DATAX 和 DATAY 两个字数据相乘(用 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 两个字数据之和加1,结果存入BX 寄存器。(4)RESULT1 DW 0 DW 0 RESULT2 DW 0 DW 0 MOV AX,DA TAX MUL DATAY MOV RESULT1,AX MOV RESULT1+2,DX MOV AX,DA TAX+2 MUL DATAY+2 MOV RESULT2,AX MOV RESULT2+2,DX(5)AADW 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,DA 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 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,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 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,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 开始的字节中。(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 个字节中。答:公共的程序段如下:MOV DI,DS MOV ES,DI(1)MOV CX,132 MOV AL.,?;空格的ASCII 码送 AL 寄存器CLD LEA DI,PRINT_LINE REP STOSB(2)MOV 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,*?;“*”的 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;否则顺序执行程序。答:程序段如下: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 的内容,则转去执行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(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(4)D023H 9FD0H(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)58BAH 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+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 后退出。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 转 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 SEGMENT 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 吗?二位为 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 程序结束3.39 考虑以下的调用序列:(1)MAIN调用 NEAR 的 SUBA 过程(返回的偏移地址为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);请画出每次调用及返回时的堆栈状态。答:每次调用及返回时的堆栈状态图如下所示:3.40 假设(EAX)=00001000H,(EBX)=00002000H,(DS)=0010H,试问下列指令访问内存的物理地址是什么?(1)MOV ECX,EAX+EBX(2)MOV EAX+2*EBX,CL(3)MOV DH,EBX+4*EAX+1000H 答:(1)PA=(DS)*10H+EA=00100H+00001000H+00002000H=00003100H(2)PA=(DS)*10H+EA=00100H+00001000H+2*00002000H=00005100H(3)PA=(DS)*10H+EA=00100H+00002000H+4*00001000H+1000H=00007100H 3.41 假设(EAX)=9823F456H,(ECX)=1F23491H,(BX)=348CH,(SI)=2000H,(DI)=4044H。在 DS 段中从偏移地址4044H 单元开始的4 个字节单元中,依次存放的内容为92H,6DH,0A2H 和 4CH,试问下列各条指令执行完后的目的地址及其中的内容是什么?00 04 原 SP位置新 SP位置(1)MAIN调用 SUBA 过程00 0A 00 原 SP位置新 SP位置(2)SUBA 调用 SUBB 过程00 01 00 B2 00 0A 原 SP 位置新 SP 位置(3)SUBB 调用 SUBC 过程00 01 00 B2 00 0A 原 SP位置新 SP位置(4)从 SUBC 返回 SUBB00 01 00 0C 00 0A 00 原 SP位置新 SP位置(5)SUBB 调用 SUBD 过程00 01 00 0C 00 0A 00 原 SP位置新 SP位置(6)从 SUBD 返回 SUBB00 01 00 0C 00 0A 00 原 SP位置新 SP位置(7)从 SUBB 返回 SUBA00 01 00 0C 00 0A 00 原 SP位置新 SP位置(8)从 SUBA 返回 MAIN00 01 00 0C 00 06 00 原 SP位置新 SP位置(9)从 MAIN 调用 SUBC(1)MOV SI,EAX(2)MOV BX,ECX(3)MOV EBX,DI 答:(1)目的地址为DS:2000H,内容依次为:56H,0F4H,23H 和 98H(2)目的地址为DS:348CH,内容依次为:91H,34H,0F2H 和 01H(3)目的操作数为EBX 寄存器,(EBX)=4CA26D92H 3.42 说明下列指令的操作(1)PUSH AX;将(AX)压入堆栈(2)POP ESI;将堆栈中的双字弹出到ESI 寄存器中(3)PUSH BX;将(BX)对应存储单元中的字压入堆栈(4)PUSHAD;32 位通用寄存器依次进栈(5)POP DS ;将堆栈中的字弹出到DS 寄存器中(6)PUSH 4;将立即数4 以字的方式压入堆栈答:见注释。3.43 请给出下列各指令序列执行完后目的寄存器的内容。(1)MOV EAX,299FF94H ADD EAX,34FFFFH;(EAX)=2CEFF93H(2)MOV EBX,40000000 SUB EBX,1500000;(EBX)=3EB00000H(3)MOV EAX,39393834H AND EAX,0F0F0F0FH;(EAX)=09090804H(4)MOV EDX,9FE35DH XOR EDX,0F0F0F0H;(EDX)=6F13ADH 答:见注释。3.44请给出下列各指令序列执行完后目的寄存器的内容。(1)MOV BX,-12 MOVSX EBX,BX;(EBX)=0FFFF FFF4H(2)MOV CL,-8 MOVSX EDX,CL;(EDX)=0FFFF FFF8H(3)MOV AH,7 MOVZX ECX,AH;(ECX)=0000 0007H(4)MOV AX,99H MOVZX EBX,AX;(EBX)=0000 0099H 答:见注释。3.45 请给出下列指令序列执行完后EAX 和 EBX 的内容。MOV ECX,307 F455H BSF EAX,ECX;(EAX)=0D BSR EBX,ECX;(EBX)=25D 答:见注释。3.46 请给出下列指令序列执行完后AX 和 DX 的内容。MOV BX,98H BSF AX,BX ;(AX)=3D BSR DX,BX ;(DX)=7D 答:见注释。3.47 请编写一程序段,要求把ECX、EDX 和 ESI 的内容相加,其和存入EDI 寄存器中(不考虑溢出)。答:MOV EDI,0 也可为:MOV EDI,ECX ADD EDI,ECX ADD EDI,EDX ADD EDI,EDX ADD EDI,ESI ADD EDI,ESI 3.48 请说明 IMUL BX,DX,100H 指令的操作。答:(BX)(DX)*100H 3.49 试编写一程序段,要求把BL 中的数除以CL 中的数,并把其商乘以2,最后的结果存入 DX 寄存器中。答:MOV AL,BL MOV AH,0;假定为无符号数,否则用CBW 指令即可DIV CL MOV AH,0 SHL AX,1 MOV DX,AX 3.50 请说明 JMP DI 和 JMP DI 指令的区别。答:JMP DI 是转移到以(DI)内容为偏移地址的单元去执行指令;JMP DI 是转移到以(DI)间接寻址的内存单元内容为偏移地址的单元去执行指令。3.51 试编写一程序段,要求在长度为100H 字节的数组中,找出大于42H 的无符号数的个数并存入字节单元UP 中;找出小于42H 的无符号数的个数并存入字节单元DOWN 中。答:JMP BEGIN UP DB 0 DOWN DB 0 TABLE DB 100H DUP(?);数组BEGIN:MOV CX,100H MOV BX,-1 MOV SI,0 MOV DI,0 L1:INC BX CMP

    注意事项

    本文(汇编语言第三五章课后题答案-.pdf)为本站会员(索****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开