在显存显示字符串(调用子程序实现)
assume cs:codesg,ds:datasg
datasg segment
db 'I love China !',0
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
mov dl,12 ; 要显示的行号
mov dh,20 ; 要显示的列号
call show
mov ax,4c00h
int 21h
; 在显存显示字符串,将十进制的数转换成对应的ascii码进行显示。
show:
mov ax,0b800h
mov es,ax
; mov di,dl*160+dh*2 ; 将要显示的目的地传给di
; mov al,160
mov ax,160
mul dl
mov di,ax
mov ax,2
mul dh
add di,ax
mov si,0
mov ch,0
s1: mov al,ds:[si]
mov cl,al
jcxz over
mov ah,2
mov es:[di],ax
inc si
add di,2
jmp s1
over: ret
codesg ends
end start
note:
1.在show里面本来要用jmp 标号模拟loop,因为事先不知道要显示的字符串的长度。所以根据末尾的0来结束打印。
[html]
assume cs:codesg,ds:datasg
datasg segment
db 'I love China !',0
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
mov dl,12 ; 要显示的行号
mov dh,20 ; 要显示的列号
call show
mov ax,4c00h
int 21h
; 在显存显示字符串,将十进制的数转换成对应的ascii码进行显示。
show:
mov ax,0b800h
mov es,ax
; mov di,dl*160+dh*2 ; 将要显示的目的地传给di
; mov al,160
mov ax,160
mul dl
mov di,ax
mov ax,2
mul dh
add di,ax
mov si,0
mov ch,0
s1: mov al,ds:[si]
mov cl,al
jcxz over
mov ah,2
mov es:[di],ax
inc si
add di,2
jmp s1
over: ret
codesg ends
end start
note:
1.在show里面本来要用jmp 标号模拟loop,因为事先不知道要显示的字符串的长度。所以根据末尾的0来结束打印。
觉得可用,就经常来吧! 欢迎评论哦! html5教程,巧夺天工,精雕玉琢。小宝典献丑了!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 在显存显示字符串(调用子程序实现)
本文地址: https://pptw.com/jishu/586430.html