-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 |