ASM 之 Hello World!

本文介绍了作者首次尝试使用汇编语言的经历,从搭建masm5.0编译环境开始,到编写并运行一个简单的“Hello World!”程序。通过具体步骤展示了如何编译和链接汇编代码。

个人比较喜欢比较底层的语言,但是一直没有对汇编下“毒手”,今天终于迈出了第一步

看不懂啊看不懂,先将网络中的其他网友的简单的ASM程序拿来运行一下:

 

1.搭建编译环境

  下载masm5.0 http://down7b.zol.com.cn/it/masm5.zip?key=6f0dd6b2e34abfa16dc3c9166182de96

  解压文件到F:\masm5.0

2.抄袭第一个asm文件

DATA SEGMENT;
NOTE DB 'Hello World!',0ah,0dh,'$'
DATA ENDS;

CODE SEGMENT;
ASSUME CS:CODE,DS:DATA;
BEGIN:MOV AX,DATA;
MOV DS,AX;
MOV DX,OFFSET NOTE;
MOV AH,09H;
INT 21H;
MOV AH,4CH;
INT 21H;
CODE ENDS;
END BEGIN


3.命名为first.asm,并将文件放在masm5.0的解压目录下(F:\masm5.0;和其他可执行文件放一起)

4.打开cmd

  F:\

  cd masm5.0

5.编译:masm first    所有提示信息 回车跳过

6.连接:link first   所有提示信息 回车跳过

7.运行:first.exe,可以看到输出的“hello  world!”了

 

//在第一次汇编调试过程中,开始将安装目录设置了环境变量,就开始进行编译了;提示找不到first.asm文件,原来忘了将文件拷贝到执行目录,犯2了...

 

//第一次运行汇编这玩意儿,其实里面什么东东都看不懂...还有待研究~~哇哈哈

### 代码含义 在汇编语言中,`datasg segment str db 'hello world!$' datasg ends` 这部分代码定义了一个数据段。以下是对代码各部分的详细解释: - `datasg segment`:`datasg` 是用户自定义的数据段名,`segment` 关键字用于标识数据段的开始。这行代码的作用是开始一个名为 `datasg` 的数据段的定义。 - `str db 'hello world!$'`:`str` 是一个变量名,代表存储字符串的内存地址。`db` 是定义字节(Define Byte)的伪指令,用于在内存中分配字节空间。`'hello world!$'` 是要存储的字符串,其中 `$` 是 DOS 功能调用中字符串的结束标志。这行代码的作用是在 `datasg` 数据段中分配一段内存空间,用于存储字符串 `hello world!`。 - `datasg ends`:这行代码表示名为 `datasg` 的数据段定义结束。 ### 示例代码 以下是一个完整的汇编代码示例,展示了如何使用这个数据段来打印字符串 `hello world!`: ```asm ASSUME CS:CODESG, DS:DATASG DATASG SEGMENT str DB 'hello world!$' DATASG ENDS CODESG SEGMENT START: MOV AX, DATASG MOV DS, AX MOV DX, OFFSET str MOV AH, 09H INT 21H MOV AX, 4C00H INT 21H CODESG ENDS END START ``` ### 代码解释 - `MOV AX, DATASG` 和 `MOV DS, AX`:将数据段 `datasg` 的段地址加载到 `DS` 寄存器中,这样 CPU 就知道从哪个段中读取数据。 - `MOV DX, OFFSET str`:将字符串 `str` 的偏移地址加载到 `DX` 寄存器中。 - `MOV AH, 09H` 和 `INT 21H`:这是 DOS 功能调用,功能号为 `09H`,用于在屏幕上显示以 `$` 结尾的字符串。 - `MOV AX, 4C00H` 和 `INT 21H`:这是 DOS 功能调用,功能号为 `4C00H`,用于正常结束程序。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值