5-30汇编测试答案及分析

本文提供了博主近期汇编语言测试的题目及详细解析,涵盖了ADD指令、符号位扩展、CMP操作、MOV指令等多个知识点,同时分享了在学习过程中的心得与反思。
摘要由CSDN通过智能技术生成

简介:本文是博主汇编测试的试题及答案分析,属个人理解,如有错误,欢迎指教

1:执行指令ADD %eax,%edx,其中%eax为0x0a517c44,%edx为0x0839317c,%edx结果为______(以十六进制小写格式表示例0xffffffff)。

正确答案:0x128aadc0

2:执行以下指令,最终%eax的结果为______(以十六进制格式小写表示例0xffffffff)。

movl $0xcc514c7d,%edx #1100(c)负数
movl $0x60fd5750,%eax  #0110(6)正数
cmpl %eax,%edx         #edx-eax<0
jge .L2                #有符号数
subl %edx,%eax         #执行eax-edx,FFFF FFFF 94AC 0AD3,取后面8位
jmp .L3
.L2:                   
subl %eax,%edx 
movl %edx,%eax
.L3: 

正确答案:0x94ac0ad3

3:假设寄存器%dh的值为0x0e,%eax的值为0xf923af9f,执行以下指令
movsbl %dh,%eax
%eax的值为______(以十六进制小写字符格式表示例0xffffffff该题请补齐八位)。

解析: 取dh做符号位扩展成8位,注意符号位为0而不是1
正确答案:0x0000000e

[有更改]4: 假设寄存器 %ebx的值为0x82b2544d,执行以下指令后

movl %ebx,%ecx
movw $0x5db2,%bx //ebx变为0x82b25db2
movb $0xeb,%bl//ebx变为0x82b25deb
 cmpl %ecx,%ebx 
jae .L1 //按无符号数解释,ebx>ecx,跳转到.L1
addl $0x1,%ebx
 jmp .L2 
.L1: 
subl $0x1,%ebx 
.L2:

%ebx的值为______(以十六进制格式小写表示例0xffffffff)。

*解析:
注意注意!
在这里插入图片描述cmp操作不是用前面的操作数减后面的,而是用后面的操作数减前面的,我之前没有发现这个错误,反而认为是mov指令的问题,在此改正(图来自http://c.biancheng.net/view/3529.html),也就是说64位字长的模式下并且把32位的操作数放进64位的寄存器,或者把较多位的操作数放进较少位的存储器,才会把存储器清0,由于这里是32位操作数以及32位的寄存器,所以把16位或者8位的操作数放进32位的寄存器前面的数是不变的。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值