文档介绍:80X86汇编语言程序设计
第二章 8086/8088寻址方式和指令系统(3~20)
:
(14个16位寄存器,8个8位寄存器)
:AX(). AX和AL是累加器。用累加器进行计算操作时间最短。
BX(). BX又叫基址寄存器。唯一作为存储器指针的寄存器。
CX(). CX控制循环的次数。CL保存移位的位数。
DX(). DX用于做32位乘除法时,存放被除数或保留余数。
:SP堆栈指针. 保存堆栈指针栈顶地址。
BP基址指针.
:SI源地址.
DI目的地址.
变址和指针寄存器主要用于存放某个存储单元地址的偏移,或某组存储单元开始地址的偏移,即作为存储器指针使用。
。
:IP指令指针. 指令指针IP给出接着要执行的指令在代码段中的偏移。
,主要用于反映处理器的状态和运算结果的某些特征。
(1)运算结果标志
进位标志CF(Carry F);零标志ZF(Zero F);符号标志SF(Sign F);溢出标志OF(Over F);奇偶标志PF(1的个数为偶数,则PF被置1);辅助进位标志AF;
(2)状态控制标志
方向标志DF;中断允许标志IF;跟踪标志TF。
: CS代码段.
DS数据段.
SS堆栈段.
ES附加段.
二. 存储器分段和地址的形成:
地址是用二进制数来表示的,它是无符号整数,书写格式为十六进制数。
16位二进制数可以表示2的16次方,也就是0~65535的地址范围。65536个字节单元的存储容量是64K。一个存储单元中存放的信息成为该存储单元的内容。
字单元的地址采用它的低地址来表示,并采用“高高低低”的原则。四个连续的字节单元就构成了一个双字单元。
8086/8088 CPU有20根地址线,可直接寻址的物理地址为2的20次方也就是1M字节(用16进制数表示1M字节的地址范围是00000~FFFFF)。所以,要访问1M字节空间的存储器必须有20位地址。
CPU采用存储器地址分段的办法来提供20位地址。从0地址开始,每16个字节为一小段(16的倍数)。
IBMPC机对段的起始地址有所限制,段不能起始于任意地址,而必须从任一小段的首地址开始。
在16进制表示的地址中,最低位是0(即20位地址的低4位为0)。{00000,00010,00020,00030,…000F0,…FFFE0,FFFF0,}
­ 在1M字节的存储器里,每一个存储单元都有一个唯一的20位地址。称为:该存储单元的物理地址。
把存储单元的地址与所在段的起始地址的差称为段内偏移,称为偏移。
在整个1M地址空间中,存储单元的物理地址等于段起始地址加上偏移。
物理地址=段*16+偏移
20位物理地址=16位段地址+16位偏移地址。
指令中不使用物理地址,而是使用逻辑地址,由总线接口单元BIU按需要根据段值和偏移自动形成20位物理地址。
计算机在取指令的时候,自动引用代码段寄存器CS,再加上由IP所给出的16位偏移,得到要取指令的物理地址。
当涉及到一个堆栈操作时,则自动引用堆栈寄存器SS,再加上由SP所给出的16位偏移,得到堆栈操作所需要的物理地址。当偏移涉及BP寄存器时,缺省引用段寄存器SS。
在存取一个普通存储器操作数时,则自动选择数据寄存器DS或附加段寄存器ES,再加上16位偏移,得到存储器操作数的物理地址。
:
计算机是通过执行指令序列来解决问题的,因而每种计算机都有一组指令集提供给用户使用,这组指令集就称为计算机的指令系统。计算机中的指令由操作码字段和操作数字段两部分组成。
汇编语言是一种符号语言,它用助记符来表示操作码,用符号或符号地址来表示操作数或操作数地址。它与机器指令一一对应。
寻址方式:表示指令中用于说明操作数所在的地址的方法
8086/8088有七种基本的寻址方式,下面介绍这七种寻址方式:
操作数就包含在指令中,它作为指令的一部分,跟在操作码后存放在代码段。(源操作数)这种操作数称为立即数。
例如:指令:mov ax,1234H
mov al,5
mov bx,3064H
操作数在CPU内部的寄存器中,指令指定寄存器号。对于16位操作数,寄存器可以是:。对于8位操作