c语言求三个整数的积,反汇编学习-C语言实例解析精粹-实例3求整数之积

序言

为了提高可读性,我添加了这一段,另外由于我用的是VS2017,会出现一些奇怪的错误,也一并在这里解决。

例如本次出现了这个错误(安全检查错误):错误 C4996 ‘scanf’: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. Project1 e:\projects\c\project1\project1\no.3.c 17

解决办法:#define _CRT_SECURE_NO_WARNINGS 在代码中加上这个宏定义,最好是在最上方加。其他方法自行问度娘。

C代码

这个实例很简单,就是计算两个整数的乘积,下面看代码:

我对书中的代码稍稍添加了一些,getchar() 函数防止运行的时候一闪而过。

汇编代码

我在 int main 处下的断点,直接调试查看反汇编代码,如下:

就截取这些代码,main函数后的检查esp是否正常的代码就没截取。

0177B30h 内存信息,存着要打印出来的字符串:90f929e76e23471fedd78b96be43aa44.png

新接触了一个指令:imul 指令意思是有符号数乘法运算,拓展一下, mul 是无符号数的乘法运算,指令格式如下:

r表示寄存器,32,16表示位数

m表示内存

imm表示立即数

结语

又学习了一部分,之前还没在反汇编代码中遇到imul,见得太少了,要多加练习。

PS:今天早上接到通知,要出差,很懵逼,第一次出差哎~,还好有同事一块,希望一切顺利!

如有错误,敬请指出,感谢指正!    —2019-05-15 22:00:51    于苏州

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值