指令
mov
add
jmp
sub ax, bx (ax <- ax - bx)
AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW
8086CPU的所有寄存器都是16位的, 可以存放两个字节
当存放的值大于寄存器的上限时, 寄存器会把溢出的值放到别的地方----
所有的内存单元构成的一维的线性空间, 将这个唯一的地址称为物理地址
内部为16位结构, 只能传送16位的地址, 表现出的寻址能力为64K
将两个16位地址合成的方法形成一个20位的物理地址
物理地址 = 段地址 * 16 + 偏移地址(即段地址左移四位)
CPU可以通过不同的段地址和偏移地址形成同一个物理地址。
段地址 * 16 定位段的起始地址, 用偏移地址定位内存单元
短地起始地址一定是16(最低)的倍数, 一个8086的寻址能力为64kB, 段的最大长度为64kB
CS(代码段)、DS(数据段)、SS(堆栈段)、ES(附加段)
1.CS:IP指向内存单元读取指令, 读取的指令进入指令缓冲器
2.IP = IP + 所读取的指令长度, 指向下一条指令
初始化(开机、复位):CS = FFFFH, IP = 0000H, CPU从内存FFFF0H单元中读取指令执行
在CPU中, 程序员只能用指令读写寄存器, 可以改变寄存器中的内容实现对CPU的控制
CPU从何处执行指令是由CS:IP决定的, 可以通过改变CS:IP中的内容来控制CPU执行目标指令
jmp 某一合法寄存器
jmp ax (类似于mov IP, ax)
jmp bx
将长度为N(N <= 64KB)的一组代码, 存在一组地址连续, 起始地址为16的倍数的内存单元中, 这段内存是用来存放代码的, 从而定义了代码段
执行代码段需要将CS:IP的指向代码段的第一个字节的地址
实验一 : 查看CPU和内存, 用机器指令和汇编指令编程