环境:我用的是visual studio 2019,跑在win10虚拟机里的,目前就环境无其他要求,后续有会另写。
配置:visual studio 2019安装时选择使用C++的桌面开发,安装好以后在解决方案资源管理器中选择源文件添加项目即可。
需要C语言的项目后缀写.c;需要汇编语言的项目需要后缀写.asm,并且在项目中选择依赖项,生成自定义,勾选masm,在扩展-管理扩展中搜索asmdude,添加此扩展,重启vs2019后选择modify安装扩展。
汇编语言需要在项目里选择属性-链接器-高级,在入口点处手动添加main(默认的入口函数),随后即可开始编写你的第一个汇编程序了。
机器语言,汇编语言,高级语言之间的关系:
机器语言:CPU执行用的,全是二进制,只有0和1,人看不懂,也写不了,知道就行;
汇编语言:用英文缩写代表机器指令,与机器语言是一对一的关系,比机器语言易懂,写完后被汇编器翻译成机器语言给硬件执行;
高级语言:易写易理解,常见的编程语言都是高级语言,从逻辑上看高级语言都会经过汇编或类汇编的转换,最终被翻译成机器语言被硬件执行。
打断点与反汇编:打断点是给CPU的指令指针(EIP/RIP)设路障,让程序在指定机器指令处冻结,以便更仔细检查此刻的完整硬件状态(寄存器、内存、栈),并能修改它们或改变执行流。

如图所示,我在int a = 1处打了断点,启动调试时就会在这里中断;这时就可以在调试-窗口进行反汇编,此时可以看到高级语言代码与汇编语言代码的对应关系。
