1、字数据在内存中的存储
(1)内存以字节为单位划分为若干个单元。
(2)字在储存时要用两个地址连续的内存单元来存放。
(3)字数据的存-取原则:高-高,低-低。即小端法,低位字节存放在低地址内存单元,高位字节存放在高地址内存单元,并且取低地址内存单元地址作为字数据地址。
(4)在内存和寄存器之间传送字型数据时,高地址单元和高8位寄存器、低地址单元和低8为寄存器相对应。
2、数据在内存单元和CPU之间的传送
(1)执行命令时,默认情况下,8086自动取寄存器DS中的值为内存单元的段地址。
1)将一段内存用作数据段,是编程时的一种安排;
2)在mov,add,sub等汇编指令中,访问内存单元时,默认情况下,指的是数据段。
3、汇编指令mov,add,sub
(1)mov:
可以将数据直接送到寄存器,也可以将一个寄存器的内容送入另一个寄存器
注意事项
1)两个操作数长度要一致。
2)常数不能作为第一个操作数(目的操作数)
3)常数作第二个操作数时,如果最高位是十六进制的A~F,前面要加零。
4)两个内存单元之间不能直接传送数据。
5)不能使用mov修改CS和IP的值
6)两个段寄存器之间不能直接传送。
7)不能把常数送到段寄存器。
(2)add:注意事项
1)add指令的操作数不能同时是内存单元。
2)add指令的操作数不能是段寄存器。
(3)sub:注意事项
1)两个内存单元不能直接用sub指令相减。
2)sub指令的操作数不能是段寄存器。
extra:mov,add,sub是具有两个操作对象的指令。jmp是具有一个操作对象的指令。
4、栈
(1)栈是一个逻辑概念。可以将一段内存空间当作栈来使用。
(2)栈顶的物理地址:SS:SP
1)SS:栈段段寄存器,存放栈段的段地址。
2)SP:栈指针寄存器,存放栈顶的偏移地址。
物理地址:(SS)×16+SP
(3)push和pop:
1)入栈和出栈均以字为单元
2)操作对象不能是常数
3)pop段寄存器中,段寄存器不能是CS和SS。
(4)栈顶超界
1)栈满时用push入栈
2)栈空时用pop出栈
原文地址:https://www.cnblogs.com/-Anguvia-/p/9852598.html