第三章寄存器
汇编语言
施工中
3.1 内存中字的存储
- CPU中用16位寄存器来存储一个字。高八位存放高字节,低八位存放低字节。
- 字单元:有两个连续的内存单元组成。高地址内存单元存放字型数据的高位字节,低地址内存单元中存放字型数据的低位字节。
- 字节 8bit
- 字 16bit
- 双字 32bit
- 四字 64bit
- 采用小端法
3.2 DS和[address] 3.3 字的传送
- 8086CPU由于硬件设计问题,不支持将数据直接送入段寄存器
- DS 数据段寄存器
3.4 mov、add、sub指令
mov指令
- mov指令可以:
- 常数 ->寄存器
- 寄存器 ->寄存器
- 内存单元 ->寄存器
段寄存器 ->寄存器
- 常数- >内存单元
- 寄存器- >内存单元
段寄存器 ->内存单元
- 寄存器 ->段寄存器
内存单元 ->段寄存器
- 作为第二个操作数时,如果最高位大于9,前面要加0
- mov指令不能修改CS和IP的值
add指令,sub指令
1. 常数 ->寄存器
2. 寄存器 ->寄存器
3. 内存单元 ->寄存器
5. 常数- >内存单元
6. 寄存器- >内存单元
操作数时是内存单元时,指令中只给出偏移地址
3.5 数据段
摘自《数字体系与计算机体系结构》 6.8.6 x86的其他特性
802861使用分段的方法将内存分成很多段
当操作系统允许分段时,相对于每段起始位置计算地址
分段技术引起很多争议 没有在现在Windows的各个版本中启用
3.6 栈 3.7 CPU提供的栈机制 3.8 栈顶越界的问题 3.10 栈段指令
- 栈顶:最后入栈的字数据所对应的内存单元
栈底:栈区最高地址单元的前一个单元
- SS 栈段段寄存器
SP 栈指针寄存器
3.9 push、pop指令
- push内存单元和pop内存单元中,指令中只需给出偏移地址。
- 入栈 出栈均以字为单元
- 8086不会自动考虑栈顶越界