NASM汇编学习01(hello world和IDE)

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

首先介绍下我使用的汇编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					; 将文件描述
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值