马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
assume cs:code,ds:data,ss:stack
data segment
db 'Welcome to masm!',0
data ends
stack segment
dw 8 dup(8)
stack ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,16
mov si,0
mov dh,10
mov dl,50
call show_str
mov ax,4c00h
int 21h
;名称:show_str
;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串
;参数:(dh)=行号(取值范围0-24),(dl)=列号(取值范围0-79),(cl)=颜色,ds:si指向字符串的首地址
;返回无
show_str:
push cx
push si
push ax
push di
push es
mov ax,0b800h
mov es,ax
;一列占2个字节,求出列
mov al,dl
mov bl,2
mul bl
;列*行=最终的要显示所在空间的物理地址
mul dh
mov di,ax
ks:
mov cl,[si]
mov ch,0
jcxz jishu
mov es:[di],cl
mov byte ptr es:[di+1],02h
inc si ; 下一个字符
add di,2 ; 下一个要显示的位置
jmp short ks
jishu:
pop es
pop di
pop ax
pop si
pop cx
ret
code ends
end start
|