3.1内存中字的存储
1字=2字节=16位
3.2DS和address
8086CPU中的DS寄存器,用来存放要访问数据的段地址。
- ax,bx,cx,dx是统用寄存器。
- DS寄存器中存放段地址。
- mov 寄存器名,内存地址
- 8086CPU不能把数据直接放入段寄存器,即mov ds,1000H是非法的。以下才是合法的。
mov ax,1000
mov ds,ax
3.4mov,add,sub指令
3.5数据段
2^16=64KB
- 8位CPU:字节
- 16位CPU:字
- 32位CPU:双字
- ax,bx,cx,dx是统用寄存器,16位寄存器
- ds是段地址寄存器,16位
3.6栈
- 栈是一个存储空间。最后进入这个空间的数据,最先出去。
8086CPU提供入栈和出栈的指令
- push(入栈)
- pop(出栈)
- 入栈,出栈都是以字位单位进行操作的,也就是16位
- SS是栈的段地址寄存器,16位
- SP是栈的偏移地址寄存器,16位
问题
将数据推入栈的过程
思考题
答案:
分析:
SP指向最高地址的下一单元。
pop指令的执行过程
- 格式化磁盘的时候,磁盘的数据并没有被删除,只是索引发生了变化。因此数据可以被找回。
3.8栈顶越界问题
3.9push,pop指令
- 数据的段地址永远从DS寄存器中获得
- 代码的段地址永远从CS寄存器中获得
- 栈的段地址永远从SS寄存器中获得
- 段地址寄存器是以S结尾的
- 通用寄存器是以X结尾的
3.10问题分析
- 栈是用来临时存放数据的
- 栈是函数调用,用来存放数据的
- 一个栈段的最大容量是2^16=64KB