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.栈段