【第三章】 寄存器(内存访问)(总结)

3.1.内存中字的存储

1.概念:CPU中,用16位寄存器来存储一个字,即一个只要用两个地址连续的内存单元来存放。

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

    通常情况下,我们将起始地址为N的字单元简称为N地址单元。

3.2.DS和[address]

1.DS寄存器(段寄存器)的作用:通常用来存放访问数据的段地址。

   8086CPU不支持将数据直接送入段寄存器的操作。

3.3.字的传送(8086CPU可以一次性传送一个字)

3.4.mov,add,sub指令

1.mov指令:(1) 两个操作数长度要一致。

                     (2) 关于常数(也叫立即数):① 不能作为第1个操作数(目的操作数)

                                                                     ② 作第2个操作数(源操作数)时,如果最高位是十六进制的a~f或A~F,前面要加零!

                     (3) 两个内存单元之间不能直接传送数据。

                     (4) 不能使用mov指令修改CS和IP的值。

                     (5) 关于段寄存器:① 两个段寄存器之间不能直接传送; ② 不能把常数送到段寄存器。

2.add指令:(1) add指令的操作数不能同时是内存单元

                    (2) add指令的操作数不能是段寄存器。

3.sub指令:(1) 两个内存单元不能直接使用sub指令相减。

                    (2) sub指令的操作数不能是段寄存器。

3.5.数据段

1.定义:将一组长度为N(N<=64KB),地址连续,起始地址为16的倍数的内存单元当作专门存储数据的内存空间。

3.6.栈

1.定义:一种具有特殊的访问方式的存储空间。

2.特殊性:后进先出。

3.两个基本操作:入栈push和出栈pop(都是以字为单位进行)。

3.7.CPU提供的栈机制

1.CPU访问栈顶位置的方式:栈顶的段地址存放在SS中,偏移地址存放在SP中,且任意时刻,SS:SP指向栈顶元素。

2.push指令的执行步骤:a.SP=SP-2;   b.向SS:SP指向的字单元中送入数据。

   pop指令的执行步骤:a.从SS:SP指向的字单元中读取数据;     b.SP=SP+2。

3.8.栈顶超界的问题

1.以下两种情形会发生「栈顶超界」问题: 当栈满的时候,再使用push指令入栈; 当栈空的时候,再使用pop指令出栈; 8086CPU不会自动考虑栈顶超界,需要程序员 在编程设计时自己考虑。栈区长度不同,栈顶超界的具体情形也不同。

3.9.push和pop指令

1.在push  内存单元和pop 内存单元中,指令中只需给出「偏移地址」。默认,段地址在DS中。

2.

3.10.栈段

猜你喜欢

转载自www.cnblogs.com/ZR-1997/p/10122175.html