汇编版hello world

博客展示了一段汇编语言代码,通过定义数据段和代码段,实现了输出'Hello, world'的功能。代码包含数据段定义消息、代码段设置段寄存器、调用中断输出消息等操作。

dataSEGMENT
msgDB’Hello,world.$’
dataENDS
codeSEGMENT
ASSUMECS:code,DS:data
start:MOVAX,data
MOVDS,AX
leadx,msg
movah,9h
int21h
MOVAX,4C00h
INT21h
codeENDS
ENDstart

在不同环境和架构下,使用汇编语言编写hello world程序的方法不同。 在X86架构且存在操作系统的Linux环境中,可使用GNU汇编语法编写Hello World程序,编译并运行的命令如下: ```bash gcc -o helloworld helloworld.s ./helloworld echo $? ``` 需要注意,同样的系统调用函数,在32位系统和64位系统里,其调用号不一样,因为使用的是不同的系统调用表 [^2]。 在DOS环境下,编写并运行hello world程序的步骤如下: 1. 使用编译器敲入hello world代码,将文件保存为.asm格式放到桌面或者和必要的文件一起放在C盘的根目录下。 2. 打开DOSBox,开始显示为z:> ,转到C盘,开始显示为C:> 。 3. 进入到C盘根目录下的dasm文件夹内进行操作。 4. 编译hello文件,链接hello文件,执行hello文件,命令如下: ```plaintext masm hello.asm link hello.obj hello.exe ``` 此过程中.obj和.exe文件由上一步操作生成,操作中会有错误提示“LINK:warning L4021: no stack segment”,且最后打印出来的hello world前面有一段乱码。解决方法如下: ```plaintext masm hello.asm link hello.obj/tiny hello.com ``` 执行过程中仍会有错误提示,但两次均不影响结果 [^3]。 还有一种汇编代码实现hello world的方式,代码如下: ```asm ASSUME CS:CODESG,DS:DATASG,SS:STACKSG DATASG SEGMENT STR DB 'HELLO WORLD!','$' DATASG ENDS STACKSG SEGMENT DB 16 DUP (0FFh) STACKSG ENDS CODESG SEGMENT START: MOV AX,DATASG MOV DS,AX MOV AX,STACKSG MOV SS,AX MOV AX,010H MOV SP,AX MOV DX,OFFSET STR MOV AX,0900H INT 21H MOV AX,4C00H INT 21H CODESG ENDS END START ``` 此代码定义了数据段、栈段和代码段,实现了输出“HELLO WORLD!”的功能 [^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值