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 终止程序的执行。
- 换行: