注意事项:
masm有一个不成文的规定,那就是在定义完数据段后,所定义的变量均向后100h个单元,需要我们将ds段寄存器置位,在程序的start:后面加上如下指令:
mov ax,data
mov ds,ax
本程序主要是调用int 21h的显示功能,可以用02h单个字符循环显示,也可以用09h显示字符串。
1.02h显示:
DATA SEGMENT
STR DB 'H', 'e', 'l', 'l', 'o', ',', 'L', 'C', ' ', 'U', 'n', 'i', 'v', 'e', 'r', 's', 'i', 't', 'y', '!'
STRLEN = $ - STR ;定义长度
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
LEA BX,STR
MOV CX,STRLEN ;计数次数及长度
;ADD BX,STRLEN -1 ;配合DEC BX可以倒着显示
DISP:
MOV DL,[BX]
MOV AH,02H
INT 21H
INC BX
LOOP DISP
MOV AH,4CH
INT 21H
CODE ENDS
END START
运行结果:
2.09h显示
date segment
string db 'Hello, World !','$' ;定义字符串
date ends
code segment
assume cs:code, ds:date
start:
mov ax,date ;设置入口参数
mov ds,ax
MOV dx, offset string
mov ah, 09h ;调用09字符串显示功能
int 21h
mov ax,4ch ;返回DOS
int 21h
code ends
end start
运行结果: