用汇编语言输出Hello World!

https://zhuanlan.zhihu.com/p/147696502

众所周知,首先从输出“Hello World!”开始学习一门编程语言已经是惯例了,汇编语言也不例外,下面我们将从输出“Hello World!”开始学习汇编语言。

一、编写源程序

首先我们尝试用C语言来实现该功能:

#include <stdio.h>

int main() {
    printf("Hello World!"); // 输出“Hello World!”
    return 0;
}

可以看到,仅仅用了一行代码就实现了该功能。那么用汇编语言又该如何去实现呢?

data segment ;数据段
    string db 'Hello,World!$'
data ends
code segment ;代码段
assume cs:code,ds:data
start:
    mov ax,data ;获取段基址
    mov ds,ax ;将段基址送入寄存器
    mov dx,offset string
    mov ah,9
    int 21h
    mov ah,4ch
    int 21h
code ends
end start

下面对该汇编程序的部分代码进行说明:

string db 'Hello,World!$'
定义一个名为string的字符串,string是字符串的名称,db是定义字节说明,字符串内容需用单引号括起,其中 $ 是串的结束标志
assume cs:code,ds:data
这是一条汇编伪指令,含义是指定code段与CS寄存器关联,data段与DS寄存器关联
mov dx,offset string
获取string的偏移地址
mov ah,9
int 21h
调用9号DOS功能(显示字符串 )
mov ah,4ch
int 21h
调用程序结束功能

对比两段代码,显然同样的功能用汇编语言实现起来比用C语言实现起来更加复杂。这是因为汇编语言是低级编程语言,而C语言等是高级编程语言,汇编语言更加接近底层。程序员用汇编语言来编写程序实际上都是对CPU中的寄存器进行操作,汇编语言编程是针对寄存器来进行编程的。

二、对源程序进行编译

汇编语言程序从设计到形成可执行程序文件,在计算机上的操作过程分为三步:编辑、汇编、连接。用文本编辑程序写程序,形成.ASM文件,用汇编程序对.ASM文件进行汇编,形成.OBJ文件,再用连接程序对.OBJ文件进行连接,形成.EXE文件。

1. 编辑

新建一个名为HELLO.ASM的文件,用文本编辑器将源程序写入该文件中。

2. 汇编

汇编程序的作用是把汇编语言源程序翻译成为机器代码,产生二进制格式的目标文件(Object File)

在DOS中输入以下命令:

MASM HELLO.ASM

3. 连接

连接就是使用连接程序LINK把目标文件(OBJ)转换为可执行的EXE文件

在DOS中输入以下命令:

LINK HELLO.OBJ

三、在Debug模式下调试程序

程序必须经过调试阶段,才能观测结果和发现程序中的错误。

在DOS中输入以下命令:

debug hello.exe

 

 

 

用Debug调入HELLO.EXE,出现-Debug命令提示符。在-后可键入Debug命令进行调试。

四、运行程序

在DOS中输入以下命令:

hello.exe

运行结果:


 
 
 
原文地址:https://www.cnblogs.com/yibeimingyue/p/15699754.html