1.字单元:存放一个字型数据(16)位的内存单元,有两个地址连续的内存单元组成。高地址内存单元存放字形数据的高位字节,低地址内存单元存放字形数据的低位字节。
将起始地址为N的字单元简称为N地址字单元。
2.DS:8086CPU中的一个段寄存器,存放将要访问数据的段地址。
[...]:表示一个内存单元,[...]中的值表示内存单元的偏移地址.
8086CPU:自动取ds中的数据为内存单元的段地址。
内存单元的地址:DS中的值*16+[...]
3.mov指令:可以进行传送的所有操作对象。
mov 寄存器,数据
mov 寄存器,寄存器
mov 寄存器,内存单元
mov 内存单元,寄存器
mov 段寄存器,寄存器
mov 寄存器,段寄存器
mov 内存单元,段寄存器
mov 段寄存器,内存单元
mov 内存单元,常数
4.add指令:可以进行传送的所有操作对象。
add 寄存器,数据
add 寄存器,寄存器
add 寄存器,内存单元
add 内存单元,寄存器
add 内存单元,常数
5.sub指令:可以进行传送的所有操作对象。
sub 寄存器,数据
sub 寄存器,寄存器
sub 寄存器,内存单元
sub 内存单元,寄存器
sub 内存单元,常数
6.数据段:一组长度为N,地址连续,起始地址为16的倍数的内存单元当作专门存储数据的内存空间。
只是编程的一种安排,可以用DS指向数据段的段地址,[...]具体的指向。
7.CPU提供的栈机制。
8086CPU:提供相关的指令以栈的形式来访问内存空间,既在基于8086CPU编程的时候,将一段内存空间当作栈来使用。
提供的入栈和出栈指令为:PUSH,POP.
以字为单位来进行。
栈顶位置:段寄存器SS,寄存器SP来表示,SS:SP=栈顶的位置。
CPU执行PUSH,POP指令时从SS和SP获取栈顶的位置。
8.栈顶超界问题:8086CPU不保证我们对栈的操作不会越界,8086CPU只知道栈顶在哪里,而不知道我们安排的栈空间有多大,所以需要自己注意栈顶超界问题。
9.push和pop指令。
(1)操作对象。
push (段寄存器,内存单元)寄存器 将(段寄存器,内存单元)寄存器中的值入栈
pop (段寄存器,内存单元)寄存器 出栈,用一个(段寄存器,内存单元)寄存器接受出栈的数据
(2)CPU执行过程。
push指令:先改变SP,再向SS:SP处传送入栈。
pop指令:先读取SS:SP处的数据,再改变SP,移动栈顶。
10.栈段:长度为N的一组地址连续,起始地址为16的倍数的内存单元,当作栈空间来使用。
仅仅是编程的一种安排,必须用SS:SP来指向。
以栈的方式来访问这段内存单元即为栈段。
11.一段内存单元是可以同时被认为是数据段(DS表示其段地址),代码段(CS表示其段地址),栈段(SS表示其段地址)。