想要开发操作系统,怎么能不知道汇编指令呢?于是翻看intel开发文档,把所有的汇编指令都做了一个整理,大家也可以收藏一下,以后肯定会用得着。
1 通用指令
1.1 数据传输指令
MOV——Move指令:可以在通用寄存器之间移动数据;在内存和通用寄存器或段寄存器之间移动数据;把立即数移动到通用寄存器。
CMOVE/CMOVZ——满足相等条件时移动/满足是0条件时移动。
CMOVNE/CMOVNZ——满足不相等条件时移动/满足不是0条件时移动。
CMOVA/CMOVNBE——满足大于条件时移动/满足不小于等于条件时移动。
CMOVAE/CMOVNB——满足大于等于条件时移动/满足不小于条件时移动。
CMOVB/CMOVNAE——满足小于条件时移动/满足不大于等于条件时移动。
CMOVBE/CMOVNA——满足小于等于条件时移动/满足不大于条件时移动。
CMOVG/CMOVNLE——满足大于条件时移动/满足不小于等于条件时移动。
CMOVGE/CMOVNL——满足大于等于条件时移动/满足不小于条件时移动。
CMOVL/CMOVNGE——满足小于条件时移动/满足不大于等于条件时移动。
CMOVLE/CMOVNG——满足小于等于条件时移动/满足不大于条件时移动。
CMOVC——满足有进位条件时移动。
CMOVNC——满足没有进位条件时移动。
CMOVO——满足有溢出条件时移动。
CMOVNO——满足没有溢出条件时移动。
CMOVS——满足是负数条件时移动。
CMOVNS——满足是正数条件时移动。
CMOVP/CMOVPE——满足奇偶校验位为1条件时移动/ 满足奇偶校验位为偶数条件时移动。
CMOVNP/CMOVPO——满足奇偶校验位为0条件时移动/ 满足奇偶校验位为奇数条件时移动。
XCHG——交换指令。
BSWAP——字节交换指令。
XADD——交换并相加指令。
CMPXCHG——比较交换指令。
CMPXCHG8B——8字节的比较交换指令。
PUSH——压栈指令。
POP——出栈指令。
PUSHA/PUSHAD——把常用寄存器的数据依次压栈。
POPA/POPAD——出栈并按顺序把值传给常用寄存器。
CWD/CDQ——转换word为doubleword/转换doubleword为quadword。
CBW/CWDE——转换byte为word/转换EAX寄存器中的word为doubleword。
MOVSX——Move并且以符号位扩展。
MOVZX——Move并且以0扩展。
1.2 二进制算术指令
ADCX——带进位的无符号加指令。
ADOX——带溢出位的无符号加指令。
ADD——整数相加指令。
ADC——带符号位的相加指令。
SUB——减法指令。