第三章知识汇总

第三章   寄存器

3.1 内存中字的存储

CPU中,用16位的寄存器来存储一个字。高8位存放高位字节,低8位存放低位字节

字单元:存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成。高地址内存单元中存放字型数据的高位字节,低地址内存单元中存放字型数据的低位字节。

3.2 DS和[address]

DS寄存器:通常用来存放要访问数据的段地址

mov al [0]       [0]表示内存单元的偏移地址,8086CPU将自动使用此时DS的数据作为内存单元的段地址

8086CPU不支持直接将数据送入段地址寄存器中,可以先将数据送入bx,再将bx的数据送入ds

3.3 字的传送

在mov指令中给出16位寄存器就可以进行16位数据的传输了。

3.4  mov,add,sub指令

mov   寄存器 , 数据

mov   寄存器  ,寄存器

mov   寄存器   ,内存单元    mov  ax [0]

mov   内存单元 ,寄存器

mov   段寄存器 ,寄存器     P52

add  寄存器  ,数据

add  寄存器 ,寄存器

add  寄存器 ,内存单元

add  内存单元,寄存器

sub  寄存器,数据

sub  寄存器,寄存器

sub  寄存器,内存单元

sub  内存单元,寄存器

3.5     数据段

我们可以将一组长度为N(N≤64KB)、地址连续、起始地址为16的倍数的内存单元当作专门存储数据的内存空间,从而定义了一个数据段。

3.6   栈

栈是一种具有特殊的访问方式的存储空间。它的特殊性就在于,最后进入这个空间的数据,最先出去。

应该有一个标记,指向栈顶的数据。

有两个基本的操作,入栈和出栈

3.7   CPU提供的栈机制

8086CPU   最基本的两个指令  PUSH(入栈)    POP(出栈)

8086CPU的入栈和出栈操作都是以字为单位进行的

字型数据用两个单元存放,高地址单元存放高8位,低地址单元存放低8位

如何知道栈顶的位置?

8086CPU中,有两个寄存器 SS  SP。 SS中存放着栈顶的段地址,SP中存放着栈顶的偏移地址。

任意时刻  SS:SP指向栈顶元素

PUSH和POP指令执行的时候,CPU从SS和SP中得到栈顶的地址

3.8 栈顶超界的问题

编程者必须要自己注意不要让栈顶超界,因为8086CPU不知道我们安排的栈空间有多大

3.9  push,pop指令

3.10  栈段

我们可以将长度为N(N<=64KB)的一组地址连续,起始地址为16的倍数的内存单元当作栈空间来使用,从而定义了一个栈段。

定义一个栈段只是我们自己的一个行为,CPU并不会因为这个安排自动地将我们定义地栈段当作栈空间来使用

要使push,pop 等指令访问我们定义的栈段,就是要使SS:SP指向我们定义的栈段

猜你喜欢

转载自www.cnblogs.com/1198264220pl/p/11982pl642204.html
今日推荐