汇编总结:简单的x86指令

原创
2015/09/09 22:41
阅读数 9.1K


1.加法

使用add开头的指令

下面演示了对1,2,4,8字节寄存器执行加法运算的办法。

.section .text
.global _start
_start:
    addb $1, %al 
    addw $1, %ax 
    addl $1, %eax
    addq $1, %rax

2.减法

      使用sub开头的指令

      演示了对1,2,4,8字节寄存器执行减法运算的方法。

.section .text
.global _start
_start:
    subb $1, %bl 
    subw $1, %bx 
    subl $1, %ebx
    subq $1, %rbx

3.取一个寄存器负数(补码)

    使用neg开头的指令

.section .text
.global _start
_start:
    movb $1, %al 
    negb %al 
    movw $-1, %ax 
    negw %ax 
    movl $1, %eax
    negl %eax
    movq $-1, %rax
    negq %rax

4.取一个寄存器的反码(每个bit位 取反)

.section .text
.global _start
_start:
    movb $0xff, %al
    notb %al #8位的not指令
    
    movw $0xffff, %ax
    notw %ax #16位的not指令

    movl $0xffffffff, %eax
    notl %eax #32位的not指令

    movq $0xffffffffffffffff, %rax
    notq %rax #64位的not指令

5.自增指令inc(类似c里的++i)

.section .text
.global _start
_start:
    movb $0x0, %al
    incb %al #8位inc指令

    movw $0x0, %ax
    incw %ax #16位inc指令

    movl $0x0, %eax
    incl %eax #32位inc指令

    movq $0x0, %rax
    incq %rax #64位inc指令

6.自减指令dec(类似c里的--i)

.section .text
.global _start
_start:
    movb $0xff, %al
    decb %al #8位dec指令

    movw $0xffff, %ax
    decw %ax #16位dec指令

    movl $0xffffffff, %eax
    decl %eax #32位dec指令

    movq $0xffffffffffffffff, %rax
    decq %rax #64位dec指令


展开阅读全文
打赏
0
5 收藏
分享
加载中
更多评论
打赏
0 评论
5 收藏
0
分享
返回顶部
顶部