CPU要读取一个内存单元时, 必须先给出内存单元的地址
8086CPU中, 内存地址由段地址和偏移地址组成
8086CPU有一个DS段寄存器, 通常用来存放要访问的数据的段地址
mov bx, 1000H
mov ds, bx
mov al, [0]
mov 寄存器名, 内存单元地址
[...] 表示内存单元的偏移地址
mov ds, bx
mov ds, 1000H 是非法的
mov bx, 1000H
mov ds, bx
mov [0], al
8086是16位结构, 有16根数据线, 一次性可以传送16位数据, 也就是一次性一位
mov bx, 1000H
mov ds, bx
mov ax, [0] 将1000:0中的数据放入ax中
mov [0], cx 将cx中的数据放入1000:0中
mov 寄存器, 数据
mov 寄存器, 寄存器
mov 寄存器, 内存单元
mov 内存单元, 寄存器
mov 段寄存器, 寄存器
mov 寄存器, 段寄存器
8086CPU提供相关的指令来以栈的方式访问内存空间
push ax : 将寄存器ax中的数据送入栈中
pop ax : 从栈顶取出元素送入ax
栈为空时, SS:SP指向栈的最大的地址 + 1, 不存在栈顶元素
push:SS:SP向上移动一个字 - 2, 将数据放入栈内的高地址
pop:将栈顶的字取出, SS:SP向下移动一个字, + 2
pop 寄存器
pop 段寄存器
pop 内存单元 : pop [0]
push 寄存器
push 段寄存器
push 内存单元
在编程时, 可以根据需要, 将一组内存单元定义为一个段
可以将长度为N(N <= 64k)的一组地址连续, 起始地址为16的倍数的内存单元当作栈来用
debug在执行修改ss寄存器的指令时, 下一条指令会被紧接着执行