汇编语言基础学习

来源:互联网 发布:ubuntu mathtype 编辑:程序博客网 时间:2024/05/22 15:08


第一节:

X:exchange,交换数据的意思

E:extend,32位机器

A:accumulator,累加器

B:base,基址寄存器

C:countor

D:data,数据

H:高位

L:低位


AH&AL=AX(accumulator):累加寄存器
BH&BL=BX(base):基址寄存器
CH&CL=CX(count):计数寄存器
DH&DL=DX(data):数据寄存器


第二节:

S:segment,段。


SP(Stack Pointer):堆栈指针寄存器
BP(Base Pointer):基址指针寄存器
SI(Source Index):源变址寄存器
DI(Destination Index):目的变址寄存器
IP(Instruction Pointer):指令指针寄存器
CS(Code Segment)代码段寄存器
DS(Data Segment):数据段寄存器
SS(Stack Segment):堆栈段寄存器

ES(Extra Segment):附加段寄存器
FS——附加段寄存器(Extra Segment Register),其值为附加数据段的段值;
GS——附加段寄存器(Extra Segment Register),其值为附加数据段的段值


sp、bp是和ss联用的,一个指向堆栈顶端,一个指向堆栈底端。

si、di是和ds联用的,一个指向源操作数,一个指向目的操作数.

ip是和cs联用的,用于指向指令地址.

es、fs、gs都是附加段寄存器,一般是用于ds的备选,比如在串行复制操作的时候额外使用es。


他们把si、di叫变址寄存器,把sp、bp、ip叫指针寄存器,然后这些都是同一个东西,就是存储自由变动的那部分数值。

他们把cs、ds、ss、es、fs、gs叫段寄存器,不就是基础部分数值么。故意搞复杂,其实简单得很。


第三节:

标志寄存器:记录各种进位。

PSW(Program Flag)程序状态字(即标志)寄存器,是一个16位寄存器,由条件码标志(flag)和控制标志构成.


条件码:
①OF(Overflow Flag)溢出标志,溢出时为1,否则置0.标明一个溢出了的计算,如:结构和目标不匹配.
②SF(Sign Flag)符号标志,结果为负时置1,否则置0.
③ZF(Zero Flag)零标志,运算结果为0时置1,否则置0.
④CF(Carry Flag)进位标志,进位时置1,否则置0.注意:Carry标志中存放计算后最右的位.
⑤AF(Auxiliary carry Flag)辅助进位标志,记录运算时第3位(半个字节)产生的进位置。
    有进位时1,否则置0.
⑥PF(Parity Flag)奇偶标志.结果操作数中1的个数为偶数时置1,否则置0.

控制标志位:
⑦DF(Direction Flag)方向标志,在串处理指令中控制信息的方向。
⑧IF(Interrupt Flag)中断标志。
⑨TF(Trap Flag)陷井标志。


顺便可以看看test和cmp的区别:http://blog.csdn.net/yaojiank/article/details/5040742


0 0