段地址【左移1位】+偏移地址
mov
- 将数据直接送入寄存器
mov ax, 2
-
内存增长是从低地址到高地址
- 将通用寄存器的内容送入另一个寄存器
mov ax, bx
- 将内存单元中内容送入一个寄存器中
mov ax,[0]
, […]指的是内存单元偏移地址,ds段寄存器
是内存段地址· - 8086CPU不支持直接把数据送入段寄存器
-
数据->通用寄存器->段寄存器
- 把数据从寄存器送入【内存单元】
- 数据读取是从偏移地址开始,往高地址读:11 22 33 44,[0]读取一个字是2211
mov [0], cx 这样送入的是字型数据 mov [0], cl 这样送入的是字节数据
+
- mov 寄存器, 段寄存器
栈
- 可以将一段内存当作栈使用
- push 入栈;pop 出栈
- push bx 把寄存器的值放在栈中
-
栈是从高地址到低地址增长
- 任意时刻
SS:SP
指向栈顶元素;ss
存放栈顶的段地址,sp
存放栈顶的偏移地址。 - 通过定义SS和SP来指定栈顶
- 8086cpu只会考虑当前栈顶和当前指令,并不会提供栈越界和溢出的保护。
push ax
把ax寄存器的内容压入栈,并把sp-2pop ax
把栈顶的内容存入ax寄存器,并把sp+2push/pop [x]
直接操作内存单元