1. 字在内存中存储时, 要有两个地址连续的内存单元来存放. 字的低位字节存放在低地址单元中, 高位字节存放在高地址单元中.
2. DS: 存放段地址的寄存器, 这个段是存放数据的.
[address]: 偏移地址
mov指令在访问内存单元时, 只给出偏移地址, 段地址默认在DS段寄存器中
3. mov ax, 1000
mov ds, ax 8086CPU不支持将数据直接送入段寄存器, 所以只能通过通用寄存器来进行中转.
4. 字的传送
80806CPU是16位结构, 有16根数据线, 所以一次性传送16位数据, 也就是一个字, 也就是两个单元
在内存和寄存器之间传送数据时, 高地址单元和高8位寄存器, 低地址单元和低8位寄存器相对应.
5. mov指令的形式有以下8种
mov 寄存器, 数据
mov 寄存器, 寄存器
mov 寄存器, 内存单元
mov 内存单元, 寄存器
mov 寄存器, 段寄存器
mov 段寄存器, 寄存器
mov 段寄存器, 内存单元
mov 内存单元, 段寄存器
add, sub指令同mov.
6. 数据段: 地址连续, 起始地址为16倍数的内存空间来当作专门存储数据的内存空间, 这就是数据段
7. 栈: 栈是一种特殊访问方式的存储空间, 它的特殊性在于, 最后进入这个空间的数据, 最先出去(LIFO)
8. CPU提供的栈机制:
push ax
a. SP = SP - 2
b. 将寄存器ax中的数据送入栈中
pop ax 从栈顶取出数据送入ax中
a. 从栈顶取出数据送入ax中
b. SP = SP + 2
SS: 段寄存器, 存放栈顶的段地址
SP: 寄存器, 存放栈顶的偏移地址
任意时刻, SS:SP指向栈顶元素
9. 栈顶越界的问题
8086CPU只记录栈顶, 栈空间的大小要我们自己管理
用栈来暂存以后要恢复的寄存器内容时, 寄存器出栈的顺序要和入栈的顺序相反.
10. 段的综述
我们可以将一段内存定义为一个段, 它即可以是代码段, 数据段, 还可以是栈段, 这取决于我们以什么方式去访问这段内存.
总结: 通过第三章的学习, 发现自己只是理解了表面的内容, 没有去深入的探讨, 深入的学习, 这样容易忘记, 这章的笔记也是照搬原话, 没有一些自己的理解, 所以自己要努力加油, 不要只追求学习汇编的进度, 面忽略了学习知识要融会贯通, 要有自己的理解, 这才叫学习了知识, 为已所用, 希望下一章, 自己经引以为鉴, 继续加油...