标志寄存器
标志寄存器

标志寄存器

OF DF IF TF SF ZF AF PF CF
溢出 方向 中断标志位 陷阱标志位 符号 零 辅助进位 奇偶 进位
有符号加减法 CLD STD 负数1 运算结果 字操作 结果中最高位

汇编语言

MOV指令->相当于C语言赋值 目的操作数,源操作数

eg:MOV eax,3

XCHG指令

交换两个寄存器或地址的值

XCHG 目的操作数,源操作数

注意:内存和内存之间交换不允许

LEA指令

装入有效的地址,将内存单元的地址送到指定的寄存器

逻辑运算指令

1.AND指令

逻辑按位与运算

将目的操作数中的每个数据位与源操作数中的对应数进行逻辑与操作

对应位都为一则为1,其他为0

2.OR指令

或运算

对应位都为0则为0,其他为1

3.xor指令

相同为0,不同为1

特殊的用法

and eax,0->置零

and 保留

or 置位

XOR eax,eax 清零

算数运算

ADD EAX,EBX

ADC=目的操作数+源操作数+cf位的值

SBB带错位的减法

SUB->减法

INC加一指令(运行速度更快)

DEC减一指令

堆栈操作

后进先出的数据结构

内存->从高地址向低地址分配

1.临时传递数据

2.高级语言传递参数

push

[图片未同步]

[图片未同步]

[图片未同步]

[图片未同步]

pop

入栈 esp-4

转移指令

jmp

无条件转移指令

Jcc指令(有条件)

test指令

逻辑与运算

CMP两个操作数比较

目的操作数和源操作数的减法操作

循环

loop: loop 标号 指令的循环次数存放在cx寄存器中,其基本原理为:

  1. (cx) = (cx) -1;

  2. (1)如果 (cx) != 0,则 (IP) = (IP) + 8位位移,控制CPU回到标号处执行指令。

    (2)如果 (cx) = 0,什么都不做,程序继续往下顺序执行指令。
    ————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
    

原文链接:https://blog.csdn.net/d704791892/article/details/141197963

循环控制

ecx-1

call指令

调用过程中把下一条指令压入栈底,遇到ret弹出

寻址方式

1.数据在指令中直接给出

2.数据在寄存器中给出

3.数据在内存中给出

1.立即数寻址

mov eax,006f1dba

2.寄存器寻址

mov esi,eax

3,内存中给出

3.1直接寻址

mov[012FFEB0],112345678

3.2寄存器间接

mov edx,[eax]

3.3其他

[寄存器+立即数]

[寄存器+寄存器+数据宽度]

相关条目

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注