汇编心得2

1、8086CPU把从内存0000:0000到0000:03E8的1000个单元中存放着中断向量表,而且一般情况下,从0000:0200到0000:0300的256个字节所对应的中断向量表是空的,操作系统和其他程序都不占用。所以编写中断例程时候可以将中断安装在这段安全区域。

2、在内存地址空间中,B8000H至BFFFFH共32KB的空间,为80*25彩色字符模式的显示缓冲区。可以确定的是这段区域一定在显存区范围之内,因为存入显存的数据会显示在屏幕上。在80*25彩色字符模式下,显示器可以显示25行、每行80个字符,每个字符有256中属性(背景色、前景色、闪烁、高亮等组合信息)。一个字符占两个字节(或者叫一个字),低字节存储字符的ASCII码,高字节存储字符的属性。一行有80个字符,共占160个字节,一屏25行,共占4000个字节。显示缓冲区最多有8页,一般情况下,显示第0页的内容,也就是B8000H至B8F9FH的4000个字节显示在屏幕上。
前篇日志有一个简单的显示字符的汇编源程序,可以参考。

3、再谈一下寻址方式,自己总结的,方便归类记忆:一般情况下偏移地址可以由bx,si,di,sp提供,经常人们也是这么做的。四种只能以bx和si,bx和di,bp和si,bp和di组合出现。有bp出现的默认段地址在ss中,其余默认在ds中。如果以imm代表立即数,则[imm]直接寻址,[bx/bp/si/di]寄存器间接寻址,[bx/bp/si/di+imm]寄存器相对寻址,[bx+si/di]或[bp+si/di]基址变址寻址,[bx+si/di+imm]或[bp+si/di+imm]相对基址变址寻址。通常是si做源地址,di做目标地址,ss:sp指向堆栈,属于堆栈段思考范围,cs:ip指向代码、指令,属于代码段思考范围,ds:(偏移地址)指向数据,属于数据段思考范围。

4、经常性做法是:数据、代码和栈放如不同的段,CPU会自动为每个段分配相隔不远的空间,不会“窜段”。但是这不是一个好的方法,毕竟还是需要不小的内存开销,很多时候都是每个段只占用一点点空间,这就不可避免的在各个段中间浪费掉很多内存。不同要求不同分配。这也只是个编写汇编的思想问题。

5、怎么说呢,一个绝佳的指令不仅会让程序简洁、清晰,而且可以做到操作步骤少,数据移动快。记住这些常用的指令并去运用到编程学习中,经常用Debug中断查看运行情况会把我们带到一个恍然大悟的境地:原来CPU是这么工作的!CPU笨是笨可是很忠诚,如果你觉得运行、调试的情况不是你所想的那样,一定要一步步debug过关,勤动手,多思考,上论坛,都是对我们理解底层工作机制的思维、能力有很大提高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值