3.1 内存中字存储
字单元, 一个16位
4e20 4e在高位, 20在低位
在寄存器中也是
3.2 DS和[address]
cpu读取内存中数据到通用寄存器AL, 无法直接读取地址需要通过
读取地址到通用寄存器->到段寄存器->通过偏移量读取到通用寄存器
8086cpu设计就是这样
mov bx,1000H;直接传送数据到通用寄存器
mov ds,bx
mov al,[0];传送内存中数据到通用寄存器
3.3 字的传送
mov命令给出16位寄存器的时候,就可以传输16位数据了
mov bx,1000H
mov ds,bx
mov ax,[0];传输数据为16位
mov [0],cx;16位数据存到1000:0处
3.4 mov, add, sub指令
- cs:代码段寄存器,与ip配合使用
- ds:数据段寄存器,与ip配合使用
- ss:栈段寄存器,与sp配合使用
- es:扩展段寄存器
3.4.1 寄存器<-段寄存器
3.4.2 内存单元<-寄存器
mov 内存单元,寄存器mov ax,1000H
mov ds,ax
mov [0],cs
3.4.3 段寄存器<-内存单元
mov 段寄存器,内存单元mov ax,1000H
mov ds,ax
mov ds.[0];偏移地址也是地址,也是一个字节
3.5 数据段
DS为数据段,和IP配合使用, 或者偏移地址使用3.6 cpu提供的栈机制
ss:sp指向栈顶元素, 来控制哪里是栈, 哪里是栈顶, 栈顶是从高地址向低地址方向增长
push ax
pop ax
3.7 栈顶超界的问题
8086cpu不会保证栈的超界, 我们只知道栈顶在哪里, 编程的时候需要注意栈的大小, 避免超界3.8 push和pop
这两个指令只是一种特殊的访问内存和寄存器传递数据的方式