汇编语言显示字符串的通用子程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
ssume cs:code
data segment
db 'Welcome to masm!',0
data ends
code segment
start: mov dh,12 ;行号(取值范围0-24)
mov dl,31 ;列号(取值范围0-79)
mov cl,10001100b ;字符属性
mov ax,data
mov ds,ax
mov si,0
call show_str
mov ax,4c00h
int 21h
show_str:
mov al,160
mul dh ;空行占用空间
add dl,dl ;空列占用空间
mov dh,0
add ax,dx
mov bx,ax ;bx 保存显存偏移地址
mov ax,0b800h
mov es,ax ;es 保存显存段地址
mov dh,cl ;颜色值用dh 保护
s:
mov cl,[si]
mov ch,0
jcxz ok
mov es:[bx],cl
mov es:[bx+1],dh
add bx,2
inc si
;jmp short s
loop s
ok: ret
code ends
end start
请作者喝一杯咖啡