当前位置:网站首页>C语言 4:汇编语言指令介绍
C语言 4:汇编语言指令介绍
2022-07-29 14:23:00 【何小柒(qi)~】
文章目录
汇编语言部分指令介绍
- EAX / EBC / ECX / EDX
数字 | 指令 | 介绍 |
---|---|---|
1 | EAX | “累加器”(accumulator), 它是很多加法乘法指令的缺省寄存器。 |
2 | EBX | “基地址”(base)寄存器, 在内存寻址时存放基地址。 |
3 | ECX | 计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。 |
4 | EDX | 则总是被用来放整数除法产生的余数 |
ESI/EDI 分别叫做“源/目标索引寄存器”(source/destination index),因为在很多字符串操作指令中,DS:ESI指向源串,而ES:EDI指向目标串。
EBP 是“基址指针”(BASE POINTER),它最经常被用作高级语言函数调用的"框架指针"(frame pointer)。
ESP :寄存器存放当前线程的栈顶指针。
EIP:寄存器存放下一个CPU指令存放的内存地址,当CPU执行完当前的指令后,从EIP寄存器中读取下一条指令的内存地址,然后继续执行。
PUSH 指令首先减少 ESP 的值,再将源操作数复制到堆栈。操作数是 16 位的,则 ESP 减 2,操作数是 32 位的,则 ESP 减 4。PUSH 指令有 3 种格式:
PUSH reg/mem16
PUSH reg/mem32
PUSH inm32
POP 指令首先把 ESP 指向的堆栈元素内容复制到一个 16 位或 32 位目的操作数中,再增加 ESP 的值。如果操作数是 16 位的,ESP 加 2,如果操作数是 32 位的,ESP 加 4:
POP reg/mem16
POP reg/mem32
ESP jmp指令:不影响堆栈。紧紧进行执行流程的跳转,不会保存返回地址。对于jmp而言,长短jmp仅仅是结果不同罢了,短跳转对应段内,长跳转对应段间。
call指令:影响堆栈。在进行流程跳转前会保存返回地址(下一条指令的地址),以便在跳转目标代码中可以使用ret指令返回到call指令的下一条指令处继续执行。执行段内跳转(或称“长call”)时,只保存EIP;如果是段间跳转(或称“短call”),还保存CS。
ret和retf:这两个指令的功能都是调用返回。
- ret在返回时只从堆栈中取得EIP;retf中的字母f表示far,即段间转移返回,要从堆栈中取出EIP和CS。
- 两个指令都可以带参数,表示发生过程调用时参数的个数,返回时要从堆栈中退出相应个数的参数。
- 恢复CS时,如果发现将发生特权级变化(当前CS的低2位不等于从堆栈中取得的新的CS值的低2位。由跳转的相关理论可知,只有跳转到非一致代码段时才会发生特权级变化,那么,也只有从非一致代码段返回时才会发生特权级变化的返回),则还要从调用者堆栈中取得ESP和SS恢复到相应寄存器中,也即恢复调用者堆栈。
- (1)加法指令
加法指令 | ADD/ADC、INC |
---|---|
普通加法指令 | ADD |
带进位加法指令 | ADC |
加1指令 | INC |
(2)减法指令
减法指令 | SUB/SBB |
---|---|
不考虑借位减法指令 | SUB |
考虑借位的减法指令 | SBB |
减1指令 | DEC |
比较指令 | CMP |
求补指令 | NEG |
(3)乘法指令 MUL
(4)除法指令 DIV
- INC 是汇编语言中算术运算类指令,起到加1的功能。
边栏推荐
猜你喜欢
The new technical director, who is in the form of a isXxx Boolean type definition, tomorrow need not come!
有关包装类的一道经典面试题
【堡垒机小知识】硬件堡垒机是什么意思?其与云堡垒机有什么区别?
工业设备数字孪生技术,解决方案系统平台案例
测试日报怎么写 ?
苹果官方降价的原因找到了,它也面临销量下滑乃至出现库存问题
The reason for Apple's official price reduction has been found, and it is also facing declining sales and even inventory problems
基于JSP&Servlet实现的众筹平台系统
Guangzhou Emergency Management Bureau released the top ten safety risks of hazardous chemicals in summer
ArcGIS Pro与ArcGis区别
随机推荐
ArcGIS Molder Builder模型构建器基本知识
关于内部类
基于Flink CDC打通数据实时入湖
接口和抽象
2022开放原子全球开源峰会数据库分论坛圆满召开
国内helm快速安装和添加常用charts仓库
Interfaces and Abstractions
Violence recursion to dynamic programming 02 (very clever game of CARDS)
【Try to Hack】IDS入侵检测系统
求教一下 现在最新版的flinkcdc能获取到oracle的ddl变更信息吗?
电视处理器a53和a55哪个厉害(cortexa55处理器好吗)
上线前配置
MySQL 是如何实现 ACID 的?
基于C语言仿真实现的粒子火焰系统
Principles Of Mathematical Analysis, Third Edition免费下载地址
正则、grep/egrep、sed、awk
PAT serie a A1021 Deepest Root
城市污水处理过程模型预测控制研究综述
为什么 ThreadLocal 可以做到线程隔离?
这 6 款在线 PDF 转换工具,得试