汇编语言快速参考 assembly reference(Chinese)
地址=段*16+段内地址
8086下有14个16位寄存器
? 数据寄存器,可以是A,B,C,D
?L 数据寄存器?的头8位
?H 数据寄存器?的再8位
?X 数据寄存器?的头16位(16位系统只有16位)
SP 栈顶指针寄存器(栈顶元素的内存位置相对栈空间段首的相对值,栈是从高地址到低地址存储,指向栈的低地址)
BP 基指指针寄存器(通用的指针寄存器,通常用来传参)
SI 源变址寄存器(常用来作段内源操作数地址指针)
DI 目的变址寄存器(常用来作段内目的操作数地址指针)
DS 数据段寄存器(数据空间所在的段)
ES 额外数据段寄存器
SS 栈段寄存器(栈空间所在的段)
CS 代码段寄存器(代码所在的段)
IP 指令指针寄存器(相对代码段首的地址相对值)
FLAGS 标志位寄存器
CF 0,第1位,进位标志位
PF 2,第3位,奇偶标志位(二进制位中0或1的个数为偶数为1,奇数为0)
AF 4,第5位,辅助进位标志位
ZF 6,第7位,零标志位(零则为1)
SF 7,第8位,符号标志位(负数为1,否则是0)
TF 8,第9位,跟踪标志位(用于单步调试)
IF 9,第10位,中断允许标志位(是否相应中断)
DF 10,第11位,方向标志位
OF 11,第12位,溢出标志位(是否溢出)
格式: AAA()
十六进制格式: 37
周期数: 4
用于: 调整十进制BCD加法的结果(AX)以符合十进制BCD
功能介绍: 若AL>9或AF=1则进位(AL%=10,AH++,CF=AF=1),否则(CF=AF=0)
寄存器变化: CF,AF
格式: AAD()
十六进制格式: D50A
周期数: 19
用于: 调整AX从两位十进制BCD到普通数,常用于除法前
功能介绍: AX=AH*10+AL
寄存器变化: PF,ZF,SF
格式: AAM()
十六进制格式: D40A
周期数: 17
用于: 调整AX从普通数到两位十进制BCD,常用于乘法后
功能介绍: (AH,AL)=(AL/10,AL%10)
寄存器变化: PF,ZF,SF
格式: AAS()
十六进制格式: 3F
周期数: 4
用于: 调整十进制BCD减法的结果(AX)以符合十进制BCD
功能介绍: 若AL>9或AF=1则进位(AL-=6,AH–,CF=AF=1),否则(CF=AF=0)
寄存器变化: CF,AF