15.Hello World
让我们来实现一下Hello World吧
assume cs:codesg,ds:data
data segment
str db 'hello world','$'
data ends
codesg segment
start: mov ax,data
mov ds,ax
mov dx,offset str
mov ah,9
int 21H
mov ah,4cH
int 21H
codesg ends
end start
代码解析:
-
str db 'hello world','$'
:定义了一个字符串str
,内容是'hello world'
,并以$
作为字符串结束标志。这是因为 DOS 的int 21H
中断服务号 9(打印字符串)以$
为结束符。 -
我们还可以实现不同数据直接换行、空格等等,只需要写入相应的ASCII码:
- 换行:
str db 'hello world',10,'123','$'
- 空格:
str db 'hello world',32,'123','$'
-
mov ax,data
:将数据段的段地址加载到寄存器AX
中。 -
mov ds,ax
:将AX
中的值(即数据段的段地址)加载到DS
寄存器中,DS
是数据段寄存器,用于指向数据段。 -
mov dx,offset str
:将字符串str
的偏移地址加载到寄存器DX
中。DX
将作为指向字符串的指针。 -
mov ah,9
:将 9 加载到AH
寄存器中,表示使用 DOS 中断int 21H
的功能号 9,这个功能号是用来打印字符串的。 -
int 21H
:调用 DOS 中断 21H,使用功能号 9 来显示字符串str
。 -
mov ah,4cH
:将 4cH 加载到AH
中,表示使用 DOS 中断int 21H
的功能号 4cH,这个功能号是用来终止程序的。 -
int 21H
:调用 DOS 中断 21H,使用功能号 4cH 终止程序的执行。
- 换行: