目录 上一页 下一页 下一章

-126- PC机汇编语言实战精解

main
code

endp
ends
end


main
  程序的运行结果倒是很有意思的,不过明眼人一眼就能看出这个程序有一个小"埋伏":它并没有在"当前光标所在位置"处显示字符串。09H功能确实能在当前光标位置处显示字符,但由于程序并不知道当前光标位置究竟在哪儿,所以在程序中无法设定DH和DL寄存器的值。要想解决这个问题,只能想办法找到"当前光标位置",这就要用到10H中断的03H功能。
功能号:03H
用 途:取得当前光标位置
参 数:BH=显示页号
调 用:INT 10H
返 回:DH=当前光标所在行号
    DL=当前光标所在列号
    CX=光标类型
  程序DISPSTR1.ASM才是真正达到"在当前光标位置处显示有属性的字符串"这个目标的程序:
DISPSTR2.ASM
data

msg
data
code

main










outloop:





segment
assume
db
ends
segment
assume
proc
mov
mov

mov
mov
int

mov
mov
mov

lodsb
or
jz
mov
int

ds:data
'Take care,I want to sleep.',0


cs:code
far
ax,data
ds,ax

bh,0
ah,03h
10h

bl,00010100b
cx,1
si,offset msg


al,al
end_out
ah,09h
10h







;初始化DS寄存器


;显示页号送入BH寄存器
;利用10H中断的03H功能
;取得当前光标所在位置

;字符属性字节送入BL寄存器
;每次显示一个字符
;SI寄存器指向字符串

;从字符串中取得一个字符
;已到字符串结尾了吗?
;已到结尾,转END_OUT
;利用10H中断的09功能
;输出AL寄存器中的字符

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章