-124- | PC机汇编语言实战精解 | ![]() |
|||||||||||||||||||
outloop: end_out: main code |
mov mov mov mov lodsb or jz mov int jmp mov int endp ends end |
bh,0 bl,00010100b cx,1 si,offset msg al,al end_out ah,09h 10h outloop ah,4ch 21h main |
;显示页号送入BH寄存器 ;属性字节送入BL寄存器 ;显示一个字符 ;SI寄存器指向字符串MSG ;从字符串中取得一个字符 ;已到字符串结尾了吗? ;已到结尾,转END_OUT ;利用10H中断的09H功能 ;输出AL寄存器中的字符以及BL中的属性 ;转至OUTLOOP继续输出下一个字符 ;结束进程 |
||||||||||||||||||
表面看来这个程序是使用0EH功能的翻版,应该没有问题,可运行这个程序后除了能看到一个蓝底红色的句号外并没有看到任何文字,这就是09H功能没有移动光标的结果。其实每个字符都被显示了,只不过它们都显示在同一个地方,所以除了最后的一个句号外我们看不到其它的文字。我们可以在指令"INT 10H"后面插入一个"等待": ;**等待********************** mov ah,0 ;* int 16h ;* ;**************************** 然后运行这个程序,可以看到字符一个个的显示在同一个位置,光标始终不移动。BIOS特别提供了一个功能调用用于移动光标: |
|||||||||||||||||||||
![]() |
功能号:02H 用 途:设置光标位置 参 数:DH=行号(0-24) DL=列号(0-79) BH=显示页号 调 用:INT 10H 返 回:无 |
||||||||||||||||||||
程序DISPSTR1.ASM就是应用了这个功能修改之后的结果: DISPSTR1.ASM |
|||||||||||||||||||||
data msg |
segment assume db |
ds:data 'Take care,I want to sleep.',0 |
|||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |