您的位置:首页 > 其它

《汇编语言》第三章 寄存器(内存访问)

2018-03-16 22:55 169 查看

第3章 寄存器(内存访问)

3.1 内存中字的存储

在内存单元中,地址高的是高位,地址低的是低位。

我们在读取内存时喜欢从0开始读,但我们在读取数字的时候一定不喜欢从最低位开始读,所以如果这个分不清,那么是这个是相当“痛苦的”,所以,一个数据如果确定是一个字,那么直接从高位开始读取,这样更好理解。

3.2 字的传送

如果直接将内存单元送入寄存器中,那么默认送入一个字,即两个内存单元。比如从低到高依次是「1,2」,

那么,在ax中会把高位设为2,低位设为1。这个过程由相关硬件来完成,所以我们不必太多关注其内部的问题。

mov ax,[0]
的结果就是
al==[0],ah==[1]
,其数字表示的是
[1][0]


只要理解通顺这个,那么以后的相关内容就会很好理解了。

3.3 栈

操作系统为内存提供栈机制,注意,栈是一段空间,从高到低的内存地址顺序来形成的,所以,当栈为空是,栈指针指向其最高位

所以,对于程序的阅读,你应该习惯从高到低开始阅读,比如0123H,这个数据进入栈,从高到低就是0123H,但如果你还开始从低往高的顺序,那么为 23 01,这个其实很别扭的!!

当入栈是,SP是减少的,即往低位开始。 如果出栈,那么向高位移动。

上面那些是偏移地址来决定的,这种操作,都默认以0000为边界,可以让你直观的感受“栈的大小”,以免让你出现其越界的操作。

系统并没有为你的“越界行为”提供任何的安全机制,这一切都让你自己把握好。

3.4 栈段

8086偏移地址为16位,所以,其最高能进行216216的段内范围寻址,所以,其栈段的最大为64KB。一旦你明白这个,那么其余的就很好理解的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: