;子程序描述
;名称:show_str
;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串
;参数:(dh)=行号(取值范围0~24),(dl)=列号(取值范围0~79)
; (cl)=颜色,ds:si指向字符串的首地址
;返回:五
;应用举例:在屏幕的8行3列,用绿色显示data段中的字符串
assume cs:code,ds:data
data segment
db 'welcome to masm!',0
data ends
code segment
start:
mov dh,10
mov dl,0
mov cl,2
mov ax,data
mov ds,ax
mov si,0
call show_str
mov ax,4c00h
int 21h
;显示字符串子程序
show_str:
push bx
push ax
mov ax,0b800h
mov es,ax
;首先计算屏幕显示位置 ax最终表示位置
mov al,80*2 mul dh
mov dh,0;dx存放列数
add ax,dx
;准备显示字符串
;显示前的处理
mov al,cl;al存颜色
mov bx,ax;bx存放显示位置
;显示字符串
s:
mov ch,ds:[si]
mov byte ptr es:[bx],ch
mov byte ptr es:[bx+1],al
mov cl,0
inc si
add bx,2
jcxz ok
jmp short s
;善后处理
ok:
pop bx
pop ax
ret
code ends
end start
有问题:就是屏幕显示位置 老是不对 调不好 |