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 内存信息,存着要打印出来的字符串:c语言求三个整数的积,反汇编学习-C语言实例解析精粹-实例3求整数之积_第1张图片

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

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

m表示内存

imm表示立即数

结语

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

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

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

你可能感兴趣的:(c语言求三个整数的积)