文档章节

汇编总结:简单的x86指令

guonaihong
 guonaihong
发布于 2015/09/09 22:41
字数 329
阅读 1705
收藏 4

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>


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指令


© 著作权归作者所有

guonaihong

guonaihong

粉丝 6
博文 83
码字总数 27591
作品 1
徐汇
程序员
私信 提问
各种开源汇编、反汇编引擎的非专业比较

由于平时业余兴趣和工作需要,研究过并使用过时下流行的各种开源的x86/64汇编和反汇编引擎。如果要对汇编指令进行分析和操作,要么自己研究Intel指令集写一个,要么就用现成的开源引擎。自己...

simpower
2018/10/18
87
0
X86汇编学习小结

本文起源:想看看C/C++中的Strict Aliasing,可是找到的资料几乎都用C/C++对应的汇编代码来解释一些概念。看不懂这些汇编,只好先简单整理一点汇编相关的资料了。 找几个编译器,找个最最简单...

晨曦之光
2012/05/08
313
0
汇编总结:lea指令

lea指令变种(按大小分类): leaw #2个字节leal #4个字节leaq #8个字节 lea的用法: leaq a(b, c, d), %rax 首先lea指令是mov指令的变种,据说,lea指令是x86体系结构中,是一条最古老但是从某个...

guonaihong
2015/09/20
7.9K
0
寄存器理解 及 X86汇编入门

本文整理自多材料源,感谢原址分享,请查看末尾Url I, 汇编语言分类: 汇编语言和CPU息息相关,但是不能把汇编语言完全等同于CPU的机器指令。不同架构的CPU指令并不相同,如x86,powerpc,a...

JokerJason
2018/08/10
0
0
ARM汇编指令集_学习笔记(1)

一、什么是ARM汇编? 运行在ARM处理器上的汇编语言就叫ARM汇编。 C程序运行在X86平台,底层就是X86汇编;运行在ARM平台,底层就是ARM汇编。ARM汇编与X86汇编有显著区别。 X86属于CISC(复杂指...

李道臣
2018/12/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

web前端入门到实战:图解原生dialog标签(非常详细)

在html5中,新增了很多语义化的标签。如footer、header之类的,今天的主角是dialog标签 顾名思义,就是用来定义对话框的。目前只有Chrome和Safari支持该标签,所以用的不多,不过确实挺好用的...

梦想编程
28分钟前
4
0
一些php常用函数积累

本文链接<?php// id: ecffe70d3af54df9bad97b61918ace7d global $ct_path, $ct_log_path;$log_path = "test_php.txt";// 是否先log到buffer,再通过CT_flush()一次性写入文件$......

一字见心
29分钟前
4
0
IntelliJ idea中 注释代码折叠

visual studio中有#region 可以折叠代码,IntelliJ idea 中也有类似功能 //region 描述代码//endregion

format
29分钟前
5
0
oracle表中更改主键

一、数据表有主键但无主键约束名 先删除之前的主键,后添加主键 ,执行SQL: a. alter table 表名 drop primary key; b. alter table 表名 add primary key(想要更改的字段名称); 二、数据表...

_Somuns
31分钟前
4
0
jQuery AJAX提交表单

我有一个名称为orderproductForm的表单,输入的数量不确定。 我想做某种jQuery.get或ajax或类似的事情,它将通过Ajax调用页面,并发送所有形式为orderproductForm的输入。 我想一种方法是做类...

技术盛宴
37分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部