汇编指令|汇编指令入门级整理( 二 )


寄存器分类
常用的 x86 CPU 寄存器有8个:EAX 、EBX、ECX、EDX、EDI、ESI、EBP、ESP,据说现在寄存器总数已经超过100个了,等我找到相关资料再来补充,上面这几个寄存器是最常用的,这些名字也常常出现在汇编的代码中 。
我们常说的32位、64位 CPU 是指数据总线的宽度或根数,而寄存器是暂存数据和中间结果的单元,因此寄存器的位数也就是处理数据的长度与数据总线的根数是相同的,所以32位 CPU 对应的寄存器也应该是32位的 。
常用寄存器用途
上面提到大8个寄存器都有其特定的用途,我们以32位 CPU 为例简单说明下这些寄存器的作用,整理如下表:
汇编指令|汇编指令入门级整理

寄存器EAX、AX、AH、AL的关系
在上面的图标中每个常用寄存器后面还有其他的名字,它们是同一个寄存器不同用法下的不同名字,比如在32位 CPU 上,EAX是32位的寄存器,而AX是EAX的低16位,AH是AX的高8位,而AL是AX的低8位,它们的对照关系如下:
00000000 00000000 00000000 00000000
|===============EAX===============|---4个字节
|======AX=======|---2个字节
|==AH===|----------百思特网-1个字节
|===AL==|---1个字节
汇编指令|汇编指令入门级整理

汇编语言指令
终于说到汇编常用指令了,因为 linux 和 windows 下的汇编语法是有些不同的,所以下面我们先通过 windows 下的汇编指令来简单学习一下,后续再来比较两者的不同 。
数据传送指令
汇编指令|汇编指令入门级整理

算术运算指令
汇编指令|汇编指令入门级整理

逻辑运算指令
汇编指令|汇编指令入门级整理

循环控制指令
汇编指令|汇编指令入门级整理

转移指令
汇编指令|汇编指令入门级整理
汇编指令|汇编指令入门级整理

Linux 和 windows 下汇编的区别
前面说到 linux 和 windows 下的汇编语法是不同的,其实两种语法的不同和系统不同没有绝对的关系,一般在 linux 上会使用 gcc/g++ 编译器,而在 windows 上会使用微软的 cl 也就是 MSBUILD,所以产生不同的代码是因为编译器不同,gcc 下采用的是AT&T的汇编语法格式,MSBUILD 采用的是Intel汇编语法格式 。
汇编指令|汇编指令入门级整理
汇编指令|汇编指令入门级整理

总结
汇编指令是机器指令的助记符,与机器指令是一一对应的
AT&T的汇编语法格式和Intel汇编语法格式的是不同的
常用寄存器:EAX 、EBX、ECX、EDX、EDI、ESI、EBP、ESP
存取速度从高到低分别是: 寄存器 > 1级缓存 > 2级缓存 > 3级缓存 > 内存 > 硬盘
常用的汇编指令:mov、je、jmp、call、add、sub、inc、dec、and、or
版权声明:本文为CSDN博主「AlbertS」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明 。
原文链接:
https://blog.csdn.net/albertsh/article/details/106041560
汇编指令|汇编指令入门级整理

?华为全球分析师大会:HMS Core全球开发者应用集成的数量加速增长,打造全场景智慧体验?腾讯人均月薪 8 万,恍恍惚惚,又被平均了??200 万年薪请不到!清华姚班到底有多牛?| 原力计划?量子计算与AI“双拳”出击,他们锁定38种潜在抗疫药物?我们已经不用AOP做操作日志了!| 原力计划?国外这三位帅小伙,居然搞了个用比特币付款、无人机运送的水培沙拉项目?

【汇编指令|汇编指令入门级整理】