汇编_JCC指令

2024-02-13 00:30
文章标签 指令 汇编 jcc

本文主要是介绍汇编_JCC指令,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CF进位的具体补充

例如80-40不进位。因为不是最高位进位或借位,而是最高位前一位进位

bf03954cbe9b44eb83dc4d14d535aa67.png

例如:80-81会进位,cf为1,因为最高位为 387f5699ea874deea98b52e465bb7ae8.png

PE指令补充:

只看最低有效位节,后8位(不管是32位,还是16位,8位都只看后8位)。若1的个数是偶数就是1否则为0

c322f48d7c3f4bc7ac2b4574f4ef8407.png

OF指令补充(针对有符号数):

eff7ed2e31b141378fae7ffa40776acf.png

 符号位有进位,最高有效位进位,进位为1,没进微信为0,最后of值为两者异或运算后的值。

注意:先指明是有符号还是无符号,没指明默认有符号

断点

设置断点,让cpu一条一条指令的来执行

如何修改EIP值

jmp指令:

8b3cae31e87b495987ea4b3e5a64af39.png

 short如果调转的地方离它小于128个字节,会加上

jmp指令只修改ip值并且只影响ip值不影响堆栈个寄存器,使其改变,cpu根据修改后的ip值来跳转执行指令。

9481e5a3927c4e92b224f6cde1c5d950.png

 补充:od打开文件跳出错误提示(下了什么不该下的断点什么的)

打开od文件夹找的udd(缓存)删掉

f1d795ca6af44cbfa8b075eef96545f6.png

以下全删掉 f17d5e43ab4f4a9eab89285b28798e9a.png

 call指令

da83a6d6c7ed47b0b05878cf5f649e00.png

 要跳的地方也要下一个断点,让程序运行到此时停下,选中后F2完成下断点。bad77777d6084afdae9b13699b8c3ad4.png

注意

1: call与jmp都修改eip的值,但call会将原地址的下一条指令地址压入栈内(call一会还要回去)(上一个地址+有几个字节=下一个地址,例如4183F8+一个字节=4183F9。

2:call会回到原地址,但jmp不会()如下,从跳到的地址又回到原地址的下一条指令的地址处

9f32b967746d493a8f4ebcc9c5a0f75a.png

 retn指令:与call指令成对出现相当于pop eip(但不能这样写,这不是正确的指令。

CMP指令

cmp是比较指令,与sub相比只改标志寄存器的值(比较两个数可以用相减的方法,但此方法会改变原来寄存器的值,此时使用cmp指令)cmp比较后相等,看zf位.相等为1,不相等时,看sf位,sf位为1表明第一个数比第二个数小。

09ccd8be7d4646c2b86a6dfb9db214fb.png

 cmp指令也可以比较寄存器和内存(但要两者宽度相等)

TEST指令

观察z位,如果每一位都为0的话,z位为1。

c7b53f9b28d3416c9f84281c5d3ac334.png

 db0bfa453f4747e1837f6a71c7795ef0.png

 JE(JZ)指令

指令的含义是如果相等或是0

5760dd9e518a44f9b0bdb3f100ca8aca.png

 52c761dd9e974233b84cbb6a865cb42f.png

 cmp指令的执行会引起标志寄存器的数值的改变,je(jz)的指令执行只取决于标志寄存器的值

其他JCC指令

1:JNE,JNZ     结果不为零则跳转(不相等是跳转)               SF=1

2:JS               结果为负则跳转                                             SF=1

3:JNS            结果为非负则跳转                                       SF=0

4:JP,JPE     结果中1的个数为偶数则跳转                       PF=1

5:JNP,JPO   结果中1的个数不为偶数则跳转                  PF=0

6:JD                结果溢出跳转                                              OF=1

7:JND              结果不溢出跳转                                         OF=0

8:JB,JNAE     小于则跳转(无符号数)                          CF=1

9:JB,JNAE     大于等于则跳转(无符号数)                    CF=0

10:JBE,JNA     小于等于则跳转(无符号数)                  CF=1orZF=1

11:JNBE,JA     大于则跳转(无符号数)                             CF=0orZF=0

12:JL,JNGE    小于则跳转(有符号数)                            SF!=OF

13:JNL,JGE    大于等于则跳转(有符号数)                     SF=OF

14:JLE,JNG    小于等于则跳转(有符号数)                        ZF=1orSF!=OF

15:JNL,JG      大于则跳转(有符号数)                             ZF=0 and SF=OF

注意:JCC指令是另一种JMP指令(即不会影响对战和寄存器),指令是否执行取决于标志寄存器的值。

这篇关于汇编_JCC指令的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/704014

相关文章

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

工作常用指令与快捷键

Git提交代码 git fetch  git add .  git commit -m “desc”  git pull  git push Git查看当前分支 git symbolic-ref --short -q HEAD Git创建新的分支并切换 git checkout -b XXXXXXXXXXXXXX git push origin XXXXXXXXXXXXXX

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern

Android中如何实现adb向应用发送特定指令并接收返回

1 ADB发送命令给应用 1.1 发送自定义广播给系统或应用 adb shell am broadcast 是 Android Debug Bridge (ADB) 中用于向 Android 系统发送广播的命令。通过这个命令,开发者可以发送自定义广播给系统或应用,触发应用中的广播接收器(BroadcastReceiver)。广播机制是 Android 的一种组件通信方式,应用可以监听广播来执行

mysql中导入txt文件数据的操作指令

1 表tt的格式:    CREATE TABLE `tt` (   `ind` int NOT NULL auto_increment,   `name` char(100) default NULL,   PRIMARY KEY  (`ind`)  )   2 文件d.txt的内容示例:  1,a  2,b  3,c

可选择的反思指令微调

论文:https://arxiv.org/pdf/2402.10110代码:GitHub - tianyi-lab/Reflection_Tuning: [ACL'24] Selective Reflection-Tuning: Student-Selected Data Recycling for LLM Instruction-Tuning机构:马里兰大学, Adobe Research领

驱动安装注册表指令

HKCR: HKEY_CLASSES_ROOT HKCU: HKEY_CURRENT_USER HKLM: HKEY_LOCAL_MACHINE HKU: HEKY_USER HER: 相对根键

汇编:嵌入式软件架构学习资源

成为嵌入式软件架构设计师需要掌握多方面的知识,包括嵌入式系统、实时操作系统、硬件接口、软件设计模式等。 以下是一些推荐的博客和网站,可以帮助你深入学习嵌入式软件架构设计: ### 1. **Embedded.com**    - **网址**: [Embedded.com](https://www.embedded.com/)    - **简介**: 这是一个专注于嵌入式系统设计的专业网

4G模块、WIFI模块、NBIOT模块通过AT指令连接华为云物联网服务器(MQTT协议)

MQTT协议概述 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,它被设计用来提供一对多的消息分发和应用之间的通讯,尤其适用于远程位置的设备和高延迟或低带宽的网络。MQTT协议基于客户端-服务器架构,客户端可以订阅任意数量的主题,并可以发布消息到这些主题。服务器(通常称为MQTT Broker)则负责接受来自客户端的连接请求,并转发消