首先介绍下我使用的汇编IDE(估计很多人汇编都是用记事本写,手动滑稽)。
SASM汇编IDE,可以在windows上使用,也可以在linux上使用,我的win10物理机和ubuntu22.04虚拟机都使用的这个IDE,可以自己选择汇编器,linux下支持nasm,gas,fasm三种,而windows下的版本还增加了masm。我使用的是nasm汇编器。

从图上可以看出来,像其他IDE一样,支持断点调试,而且还可以显示寄存器的信息和内存的信息,不过有一点和正常的nasm汇编不同,那就是入口函数是main,而不是_start,这点在使用IDE时要注意,如果是命令行直接使用nasm编译,则是 _start作为入口函数,如果要在IDE和命令行之间切换,记得自己修改入口函数。
下面是hello world
section .data ; data段,数据段,用于保存全局变量
msg db "hello world",0ah ; msg是变量名 db是msg的数据类型 字节类型,每个字符都是一个字节,最后的0ah是紧跟着字符串的一个ASCII码,可以视为字符串的一部分代表换行符
len equ $-msg ; len是变量名,用于储存msg的长度,equ表示len代表后边的表达式 $代表当前段的偏移值,因为段中有了msg,所以$偏移了msg长度的大小,而用$减去msg的首地址,就得到了msg的长度
section .text ; text段,代码段,用于保存要执行的指令
global _start ; global让_start符号全局可见,两者放到一起就是给代码起始地址定义全局标记 linux寻找这个 _start 标签作为程序的默认进入点。
_start:
mov eax,4d ; 因为此处为32位程序,所以系统调用中32位的4号函数为写
mov ebx,1d ; 将文件描述

本文介绍了作者如何使用SASM汇编IDE进行32位程序开发,特别关注了IDE中入口函数设置、系统调用和基本的HelloWorld示例。详细讲解了如何在IDE中设置断点、查看寄存器和内存,并提醒读者在不同环境切换时注意入口函数的调整。
最低0.47元/天 解锁文章
1394

被折叠的 条评论
为什么被折叠?



