ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:18.54KB ,
资源ID:29066608      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29066608.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第5章作业答案.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第5章作业答案.docx

1、第5章作业答案习题51试说明以下指令中各操作数的寻址方式,如果是存储器寻址,请给出其EA计算公式,并说明所使用的段寄存器。(1)MOV AL,08H源操作数:立即数寻址目的操作数:寄存器寻址(2)MOV 0120H,BL源操作数:寄存器寻址目的操作数:直接寻址,EA=0120H,使用DS段寄存器(3)ADD BX,AL源操作数:寄存器寻址目的操作数:寄存器间接寻址,EA=(BX),使用DS段寄存器(4)PUSH SI0200H源操作数:变址寻址,EA=(SI)+0200H,使用DS段寄存器目的操作数:隐含寻址(指令中未直接体现)(5)SUB AX,BP源操作数:寄存器间接寻址,EA=(BP),

2、使用SS段寄存器目的操作数:寄存器寻址(6)AND VAR1+4,DL源操作数:寄存器寻址目的操作数:直接寻址,EA=VAR1+4,使用DS段寄存器(7)PUSHF源操作数、目的操作数均为隐含寻址(8)MOV ES:BX0100H,AL源操作数:寄存器寻址目的操作数:基址寻址,EA=(BX)+0100H,使用ES段寄存器(9)ADC BYTE PTR BPSI0210H,45H源操作数:立即数寻址目的操作数:基址变址寻址,EA=(BP)+(SI)+0210H,使用SS段寄存器(10)OR ARRYBXDI,CL源操作数:寄存器寻址目的操作数:基址变址寻址,EA=(BX)+(DI)+ARRY,使

3、用DS段寄存器2试分析下列汇编指令是否存在语法错误,如果有语法错误存在,请说明是怎样的错误。(1)PUSH 8243H错误,单操作数指令不能使用立即数(2)POP AL错误,进栈、出栈指令的操作数应为16位(3)MOV AL,6543H错误,源、目的操作数类型不匹配(4)ADD 0100H,64H错误,目的操作数应使用PTR运算符指出类型,否则具有二义性正确的写法:ADD BYTE PTR 0100H,64H,(或使用WORD PTR)(5)ADC VAR1,VAR2错误,8086指令系统的双操作数指令中,必须有一个是寄存器,不能两个操作数同为内存单元(6)MOV DS,ES错误,段寄存器间不

4、能使用MOV指令直接传递数据,必须通过通用寄存器作为中转(7)MOV DS,0620H错误,使用MOV指令向段寄存器传递数据时,不能使用立即数(8)LEA BX,AX错误,LEA指令的源操作数必须为内存单元(9)DEC AL,AH错误,DEC指令为单操作数指令(10)SHR BL,3错误,当移位次数大于1时,在移位指令中特定使用CL寄存器给出移位次数正确的写法:MOV CL, 3 SHR BL, CL3试说明分别执行下列各组指令后,CF、OF、AF、ZF、SF、PF这六个状态标志分别是怎样的取值。(1)MOV AL,08H ADD AL,0F9HCF=1; OF=0; AF=1; ZF=0;

5、SF=0; PF=0(2)MOV AL,0E1H ADD AL,0F4HCF=1; OF=0; AF=0; ZF=0; SF=1; PF=0(3)MOV AL,01H SUB AL,02HCF=1; OF=0; AF=1; ZF=0; SF=1; PF=1(4)MOV AL,02H INC ALCF维持MOV指令前的取值 (INC指令不影响CF);OF=0; AF=0; ZF=0; SF=0; PF=1(5)MOV AL,01H AND AL,02HCF=OF=0; AF不确定; ZF=1; SF=0; PF=14按要求分析下面程序片段的执行结果。MOV AL,0C2HMOV AH,0E4HA

6、DD AL,AH执行该程序片段后,(AL)=?,(AH)=?,如果将ADD指令的两个操作数解释为无符号数,运算有没有溢出?为什么?如果将ADD指令的两个操作数解释为补码,运算有没有溢出?为什么?答:执行该程序片段后,(AL)=0A6H,(AH)=0E4H,如果操作数解释为无符号数,运算溢出,因为加法运算后最高位产生了进位,CF=1,需使用9个二进制位才能表达完整运算结果;如果将操作数解释为补码,则运算没有溢出,因为从操作数与运算结果的符号位观察,两个操作数均为负数补码,相加后所得结果仍然为负数补码,符号位正确,表明加法结果未超出补码表示范围(这里是8位补码的表示范围),加法运算后OF=0。5按

7、要求分析下面程序片段的执行结果。MOV AL,98H MOV BL,42HXCHG AL,BLSUB AL,BL执行该程序片段后,(AL)=?,(BL)=?,如果将SUB指令的两个操作数解释为无符号数,运算有没有溢出?为什么?如果将SUB指令的两个操作数解释为补码,运算有没有溢出?为什么?如果将SUB指令的两个操作数解释为补码,其减法运算对应的十进制真值表达式应如何书写?答:执行该程序片段后,(AL)=0AAH,(BL)=98H,如果将操作数解释为无符号数,则运算溢出,从操作数判断,此运算属于被减数小于减数的情况,这在无符号数运算中是不允许的(如果当前操作数仅为长数据的一部分,则另当别论),减

8、法运算后最高位必然产生借位,CF=1;如果操作数解释为补码,运算也溢出,从操作数判断,此运算属于“正-负”类型,等价于“正+正”类型,正确的运算结果应为正数或零的补码,而运算结果的符号位却为“负”,表明运算结果超出补码表示范围(这里为8位补码表示范围),减法运算后OF=1。SUB指令所使用的被减数补码为42H=01000010B,减数补码为98H=10011000B,由于被减数为正数补码,它等于真值本身,而减数补码为负数补码,将其取反加1后,添上负号,得到其二进制真值为 -01101000B。将被减数、减数的二进制真值转换为十进制后,得到真值运算表达式:66 -(-104)=170,很明显运算

9、结果超出8位补码的最大值+127。6按要求分析下面程序片段的执行结果。STCMOV AL,03HAND AL,02HADC AL,00H执行该程序片段后,(AL)=?答:(AL)=02H,此题应注意AND指令会强置CF为0。7假设(DS)=1000H,(SS)=2000H,字内存单元(10200H)=0870H,(10202H)=2000H,(20870H)=0203H,(20872H)=0405H,括号内所给为内存单元物理地址,括号表示该地址所指示单元中保存的数据,分别执行下列程序片段后,按要求分析各程序片段的执行结果。(1)MOV AL,0200H执行该程序片段后,(AL)=?答:源操作数

10、地址为(DS)*16+0200H=10000H+0200H=10200H, 因此执行该程序片段后,(AL)=70H (逆序存放,低地址对应低数据位)(2)MOV BP,0871H MOV BL,BP执行该程序片段后,(BL)=?答:第二条指令的源操作数地址为(SS)*16+(BP)=20871H,执行该程序片段后,(BL)=02H (逆序存放,高地址对应高数据位)(3)LEA SI,0200H执行该程序片段后,(SI)=?答:LEA指令将源操作数的EA传送到目的操作数保存,(SI)=0200H(4)MOV SI,0200H LEA SI,SI执行该程序片段后,(SI)=?答:MOV指令中源操作

11、数地址为(DS)*16+0200H=10200H,执行后(SI)=0870H,第二条指令源操作数的EA直接为(SI)=0870H,执行后仍有(SI)=0870H。(5)LDS BX,0200H MOV AL,BX0002H执行该程序片段后,(AL)=?答:LDS指令中源操作数地址为(DS)*16+0200H=10200H,将(10200H)字单元内容传递到BX保存,将(10202H)字单元内容传递到DS保存,执行后(BX)=0870H,(DS)=2000H;MOV指令中源操作数地址为(DS)*16+(BX)+0002H=20872H,执行后(AL)=05H。8按要求分析下面程序片段的执行结果。

12、MOV AX,651CHSHL AL,1RCL AH,1执行该程序片段后,(AX)=?,该程序片段的功能是什么?如果将(AX)解释为无符号数,那么运算是否溢出?为什么?如果将(AX)解释为补码,运算是否溢出?为什么?SHL与SAL指令间有什么关联和区别?答:执行该程序片段后,(AX)=0CA38H,该程序片段的功能为将AX中的16位编码左移1位,等价于乘以2(也可理解为自加一次)。如果将(AX)解释为无符号数,那么运算没有溢出,因为最后一次移位操作后,最高移出位为0,即CF=0(自加完成后最高位无进位);如果将(AX)解释为补码,运算溢出,因为移位前后(AX)的最高位发生了变化(由0变为1),

13、符号位在运算中丢失,可以理解为自加运算结果超出了16位补码表示范围。SHL与SAL指令本质上对应同一条机器指令,在功能上并无区别,因为无符号数与补码的左移操作是完全相同的,但为了指令系统设计的规整性,在汇编指令中将它们区分开,SHL针对无符号数左移,SAL针对补码左移。9按要求分析下面程序片段的执行结果。MOV AL,35HAND AL,0FH执行该程序片段后,(AL)=?CF、OF、AF、ZF、SF、PF标志取值是什么?该程序片段的功能是什么?答:执行该程序片段后,(AL)=05H,CF=0;OF=0;AF不确定;ZF=0;SF=0;PF=1;该程序片段的功能是将(AL)中的低4位数据分离出

14、来,屏蔽高4位。10假设一个48位的补码按照由低位到高位的顺序保存在字类型的内存单元VA1、VA1+2、VA1+4中,试按下列要求完成程序片段设计。(红字部分请在教材中纠正)(1)设计程序片段,实现将该48位补码除以4的功能,运算结果仍然保存在原内存单元中。解:SAR VA1+4, 1RCR VA1+2, 1RCR VA1, 1SAR VA1+4, 1RCR VA1+2, 1RCR VA1, 1(2)设计程序片段,求该48位补码的相反数补码,运算结果仍然保存在原内存单元中。解:NOT VA1NOT VA1+2NOT VA1+4ADD VA1, 1ADC VA1+2, 0ADC VA1+4, 0

15、11试说明如何使用CMP指令提供的标志位判断两个补码操作数大小关系的原理。答:请参考本章关于比较指令(CMP)中的详细介绍加以说明。12假设(SP)=0060H,执行两次PUSH指令后,(SP)=?假设(SP)=0038H,执行三次POP指令后,(SP)=?答:执行两次PUSH指令后,(SP)= 005CH;执行三次POP指令后(SP)=0038H+0002H*3=0038H+0006H=003EH13按要求分析下面程序片段的执行结果。MOV AL,01HNEG ALINC AL执行该程序片段后(AL)=?,CF、OF标志的状态是什么?答:执行该程序片段后(AL)=0,CF=1,注意,这是受N

16、EG指令影响的结果,INC指令不影响CF标志;OF=0,加法运算并无溢出,因为0FFH为-1的补码,加1后等于0是正确的。14按要求分析下面程序片段的执行结果。MOV BL,51HAND BL,0FEHXOR BL,50HDEC BL执行该程序片段后(BL)=?,CF、OF标志的状态是什么?答:执行该程序片段后(BL)=0FFH,CF=0,注意,这是受XOR指令的影响,XOR指令将CF强置为0,而DEC指令不影响CF;OF=0,此标志是受DEC指令影响的结果。此题中应注意,逻辑运算指令会将CF、OF强置为0,而DEC指令不影响CF标志。15按照各小题的要求分别设计程序片段。(因存在多种设计方式,程序设计题目的答案仅作为参考)(1)将AL寄存器的高4位与低4位交换MOV CL, 4ROL AL, CL(2)将TF标志位置1PUSHFPOP AXOR AX, 0100HPUSH AXPOPF(3)将AL寄存器的第7位清0,但不影响其它数据位AND AL, 7FH(4)分离AL寄存器的最低两位,其它数据位清0。AND AL, 03H(5)分离AL寄存器的高4位与低4位,并分别保存在BL、BH的低4位PUSH AXAND AL, 0FHMOV BL, ALPOP AXAND AL, 0F0HMOV CL, 4ROL AL, CLMOV BH, AL

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1