汇编debug 实模式下 显示字符

 
 
在第 10 行第 3 列开始显示字符串“ Hello ASM!

在实模式下,从B800:0开始是进行显示,最开始纠结与一点,因为我-e编辑后再-d显示发现不一样。后来终于弄明白了是因为在-d输出的时候位置已经改变过了。就是说最开始在B800:0 为38 是数字9 。可在你按回车以后发现数字9已经是上一行的东西了,-d以后更会跳过好多行。

下面进行实模式下的显示输出。首先窗口的长度为80*25.就是说 每个字符需要两个字节,(一个字符,一个颜色)一共需要4000个字节。而且0,160,。。。160*n就是第n+1行的第一个字。当然换成十六进制就变成0,A0,140.。。。第十行是640.当在第十行输入hello以后由于命令所占位置原因就会换行 所以做如下实验来确定要在第几行输入才能使HELLO ASM!恰好输出在第十行。



先做个试验,看看在20行开始输入HELLO ASM! 会上升多少行。计算得知HELL输入之后需要在17行第5个AA0+8开始输入接下来的字符,发现计算失误第17行应该是16*16的十六进制。

由于第一次以为是在20行 实际是在21行 最后显示的时候Hell是在第13行可知总共提高了8行 所以要想在第十行输入HELLO ASM! 需要在第18行开始输入 17*160的十六进制是AA0

B800:AA0

第二次-e 是在第14行 13*160 的十六进制 820 第五个字符 (5-1)*2 的十六进制是8  B800:828

第三次 -e是在第10行 9*160 的十六进制 5A0 第9个字符 (9-1)*2 的十六进制是10 B800:5B0

大功告成


总结一下 第X行 第Y列 在显存中的地址是B800:((X-1)*160+(Y-1)*2)的十六进制

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值