当前位置:网站首页>No.3汇编进阶
No.3汇编进阶
2022-07-17 18:44:00 【L.Bubu】
目录
1.栈操作指令
●压栈:push
●出栈:pop
栈顶朝着0地址方向增长,寄存器esp储存栈顶地址:

1).pushw $0x88888888
该指令表示将一个两字节大小的值入栈,但是0x88888888占四个字节,该操作的结果是将0x88888888高四位的值舍弃,使其变为两个字节大小(0x8888),再将其入栈。
2).pushw value
此处value为地址,该指令表示将value后两个字节的值入栈。
3).push $value
将value的地址入栈。
4).popl %ebx
弹出四个字节的数据写入ebx。
push与pop是两个独立的操作,互不干扰。比如入栈时一次性压入四个字节的数据,出栈时可以两个两个的弹出或者以其他方式弹出。
2.算术逻辑运算指令

3.跳转与条件传送
3.1跳转指令
寄存器eip储存下一条指令的地址。
●直接跳转:jmp
●条件跳转指令:
▲条件在寄存器eflags中:

名称 | 作用 | 在eflags中位置 |
SF | 符号位 | 第7位 |
ZF | 零标志位 | 第6位 |
CF | 进位或借位 | 第0位 |
OF | 溢出 | 第11位 |
例:四位数字运算:
无符号数,最小为0000(0),最大为1111(15)
有符号数,最小为0000(-8),最大为0111(7)
x=1010(10或-6),y=0111(7)
x-y=1010 – 0111=0011(3)
ZF=0 结果不是零
CF=0 做无符号数减法时没有借位
SF=0 结果的第一位为0
OF=1 做有符号数减法时有溢出
OF位的计算:
计算机在计算时采用双符号位,在有符号数前补一个数,使其前两个数变成11/00,计算结果中,如果前两位为10/01,则有溢出;前两位为11/00则无溢出。eg:11010 – 00111=10 011 符号不是00或11
▲条件跳转指令集:

3.2有条件传送
●标志位指令:满足条件则设置相关寄存器的值。

●有条件传送:满足条件才执行传送

●条件码相关知识:
▲inc和dec指令不影响进位标志位,而add $1,%eax与sub $1,%eax等指令会影响进位标志位。
▲cmp指令是对两个数做减法,但不保留结果,仅根据结果设置标志位。
▲test指令对两个操作数做逻辑与(按位与)运算,但不保留结果。
testl $0x4,%eax #0x4=00000000 00000000 00000000 00000100
jnz #如果此例中eax的倒数第三个bit为1,则跳转。
testl %ecx, %ecx
jz #如果ecx为零,则跳转。
▲对于CF标志位,有三条专门的指令:
clc:将CF标志位清零
stc:将CF标志位设置为1
cmc:将CF标志位置反
4.循环指令
循环用两种方式实现:
1).条件跳转指令
2).loop指令
在遇到loop指令时,会判断ecx中的值是否为0,不为0则跳转至指定位置,每跳转一次ecx的值自动减一,当该值为0时跳出循环。
边栏推荐
- 【码蹄集新手村 600 题】输出时的左对齐,右对齐
- 【动态规划】—— 最长上升子序列模型
- Elastic load balancing automatically distributes the access traffic to multiple cloud servers, expands the external service capacity of the application system, and improves the security of the applica
- [JS reverse crawler] - Youdao translation JS reverse practice
- 【码蹄集新手村 600 题】float 与 double 的格式说明符
- Onvif protocol related: 4.1.4 WS username token method to obtain the stream address
- STL string查找子串
- (pc+wap) dream weaving template clothing dress website
- How to upgrade Flink job gracefully?
- (PC+WAP)织梦模板服装礼服类网站
猜你喜欢

模块7(王者荣耀商城异地多活架构设计)

面试官:可以接受转Go吗?

Flutter 使用 AnimatedSwitcher 做场景切换

onvif协议相关:2.1.1 none方式获取token

命令行的一些常用操作命令及常见错误的解决办法

Onvif protocol related: 4.1.4 WS username token method to obtain the stream address

ONVIF Protocol Related: 4.1.3 WS - username token Method get capture d'écran URL

onvif协议相关:4.1.3 WS-Username token方式获取截图url

Google Earth Engine——1992—至今混合坐标海洋模型、水温和盐度(全球海洋数据集HYCOM)

Responsive Zhimeng template logistics and freight service website
随机推荐
Interviewer: is it acceptable to transfer to go?
onvif協議相關:4.1.3 WS-Username token方式獲取截圖url
[micro Service ~ advanced] configuration center practice
【6.15】Codeforces Round #798 (Div. 2)
[Tencent blue whale] the seventh 7.24 operation and maintenance day holiday greetings ~ come and make a wish~
Helloword and led: a quick start to Hongmeng device development -- Huawei cloud 14 day Hongmeng device development practical learning notes Chapter 2
[code hoof set novice village question 600] align left and right when outputting
【考研词汇训练营】Day 6 —— eventually,state,create,productivity,stimulate
【7.13】代码源 -【饿饿 饭饭】【路径计数2】【函数求和】
[7.14] code source - [open box] [XOR inverse] [continuous subsequence] [trigonometric fruit count]
关于XML文件(七)- XML DTD
[record of question brushing] 13 Roman numeral to integer
【7.14】代码源 -【拆方块】【XOR Inverse】【连续子序列】【三角果计数】
onvif协议相关:常用类说明
perl 命令批量替换文件中的一些内容
ArrayList underlying analysis
Galaxy Kirin V10 arm offline installation of portal
「津津樂道播客」#392 原湯話原食:仲夏夜,馬砂、肉串兒、趿拉板兒
2.三数之和
OpenSSL操作