关闭

2.pmtest2.asm <Orange's 一个操作系统的实现>

472人阅读 评论(0) 收藏 举报

出处:http://blog.csdn.net/summersunboy/article/details/4720238

;DispReturn模拟一个回车的显示,(让下一个要显示的字符在下一行的开头处显示),其中edi始终指向要显示的下一个字符的位置。
;   ------------------------------------------------------------------------
DispReturn:
push eax
push ebx
mov eax, edi ;
mov bl, 160  ;
div bl         ; eax/bl 执行后al=当前行号
and eax, 0FFh; 只保留行号,列号清0
inc eax         ; eax+=1,使eax为当前行的下一行
mov bl, 160  ;
mul bl          ; eax*bl,eax为当前行的下一行的开始
mov edi, eax ; 使edi指向当前行的下一行的开始
pop ebx
pop eax    

ret
;   DispReturn   结束---------------------------------------------------------

 

注1:80*25彩色字模式的显示显存在内存中的地址为B8000h~BFFFH,共32k.向这个地址写入的内容立即显示在屏幕上边.在80*25彩色字模式下共可以显示25行,每行80字符,每个字符在显存中占两个字节,第一个字节是字符的ASCII码.第二字节是字符的属性,(80字符占160个字节)。

2. test 把两个操作数进行"与"操作,不保存运算结果,只设置标志位, 一般用来测试寄存器是否为空
text eax,eax  //来检测eax是否为空
jnz xxxxx       //不为空就跳


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:9156次
    • 积分:194
    • 等级:
    • 排名:千里之外
    • 原创:10篇
    • 转载:4篇
    • 译文:0篇
    • 评论:0条