汇编语言:jcxz 指令

news2024/11/15 9:53:15

        在汇编语言中,jcxz 标号 指令是一个有条件转移指令,用于检测CX寄存器的值,如果CX寄存器的值为0,则跳转到指令中标号所指定的地址处执行;否则,指令将继续顺序执行。‌

1. jcxz 标号 

(1)(cx) = 0,转移到标号处执行;

(2)(cx) != 0,什么都不做,程序指令继续往下顺序执行;

(3)jcxz 标号 是短转移指令,对应的机器码包含8位转移位移,用补码形式表示,所以对应的IP(偏移地址)修改范围相对于当前IP来说,范围在:-128 ~ 127,即:(IP) = (IP) + 8位位移。

其功能就像 C 语言所描述的代码:if ((cx) == 0 ) jmp short 标号;

示例:利用 jcxz 指令,实现从CS(段地址)中查找第一个值为0的字节,并把偏移地址存储在dx寄存器中

assume cs:code
code segment
start:
    mov ax, cs
    mov ds, ax
    mov bx, 0
s:  mov cx, 0       ;重置cx
    mov cl, [bx]    ;cl = ds:[bx]指向的内存单元中的值
    jcxz ok         ;cx = 0,则跳转到标号ok处执行指令,否则该指令什么都不做,CPU继续顺序执行下一条指令
    inc bx
    jmp short s     ;jmp无条件转移的短转移指令,跳转到标号s处执行指令

ok: mov dx, bx
    mov ax, 4c00h
    int 21h    
code ends
end start

从图中,我们可知,程序加载到内存后

(1)-r 查看各个寄存器设置情况,CS:IP = 204D:0000

(2)-d cs:0 查看128个字节的内存中,偏移地址 = 5,是第一个值为 0 的字节

(3)-u 查看汇编指令以及其对应的机器码

(4)-g 0013 控制CPU从CS:IP指向的指令处开始执行指令,直到 IP = 0013时停下来,这时 dx = 0005,和我们在步骤(2)中观察到的第一个值为 0 的字节的偏移地址 = 5 是一致的

(5)jcxz ok 被编译器编译成 jcxz 0011,其对应的机器指令为:E303(低字节序),低8位:E3是操作码,高8位:03是转移位移,转移位移 = 0011h - 000Eh = 03h。

参考文献

《汇编语言(第4版)》王爽

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2048903.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

超市收银出入库进销存库存管理系统java数据库SpringBoot前端VUE

系统设计是一个把软件需求转换成用软件系统表示的过程[9]。通过对目标系统的分析和研究,做出了对师范学院实习管理系统的总体规划,这是全面开发系统的重要基础。在对实习管理系统全面分析调查的基础上,制定出商品销售系统的总体规划。系统设计…

KEEPALIVED的高可用实现

目录 一.高可用集群 1.1 集群类型 Keepalived 环境准备 1.2Keepalived 相关文件 1.3实验步骤 1.3.1HTTP配置 1.3.2安装KA 1.3.3实现master/slave的 Keepalived 单主架构 1.3.4抢占模式和非抢占模式 非抢占模式 抢占模式 抢占延迟模式 preempt_delay 1.3.5开启KA…

习题2.38-2.39

2.38这个题目特别有意思,能比较深的理解什么是左侧优先右侧优先。先看看实现代码 ;;满足交换律,即操作函数的参数可相互交换,其结果不变 (defn fold-right[op initial sequences](if (empty? sequences)initial(op (first sequences)(accumulate op initial (rest sequence…

快讯 | 28页知网侵权函难挡秘塔AI:多家数据库抢着合作!

在数字化浪潮的推动下,人工智能(AI)正成为塑造未来的关键力量。硅纪元视角栏目紧跟AI科技的最新发展,捕捉行业动态;提供深入的新闻解读,助您洞悉技术背后的逻辑;汇聚行业专家的见解,…

使用 ESP32 和 TFT 屏幕显示实时天气信息 —— 基于 OpenWeatherMap API

实时监测环境数据是一个非常常见的应用场景,例如气象站、智能家居等。这篇博客将带你使用 ESP32 微控制器和一个 TFT 屏幕,实时显示当前城市的天气信息。通过 OpenWeatherMap API,我们能够获取诸如温度、天气情况以及经纬度等详细的天气数据&…

【书生大模型实战营(暑假场)闯关材料】基础岛:第1关 书生大模型全链路开源体系

【书生大模型实战营(暑假场)闯关材料】基础岛:第1关 书生大模型全链路开源体系 简介一、背景介绍1.1 背景介绍1.2 全链路开源开放体系的优势 二、全链路开源开放体系的主要特点2.1 模型组件的公开和共享2.2 数据集的公开和共享2.3 模型的互操…

2024年【汽车驾驶员(技师)】报名考试及汽车驾驶员(技师)模拟考试题库

题库来源:安全生产模拟考试一点通公众号小程序 汽车驾驶员(技师)报名考试是安全生产模拟考试一点通生成的,汽车驾驶员(技师)证模拟考试题库是根据汽车驾驶员(技师)最新版教材汇编出…

Paimon实战 -- paimon原理解析

一.简介 Apache Paimon 原名 Flink Table Store,2022年1月在 Apache Flink 社区从零开始研发,Flink 社区希望能够将 Flink 的 Streaming 实时计算能力和 Lakehouse 新架构优势进一步结合,促进数据在数据湖上真正实时流动起来,并为…

打靶记录12——Fawkes

靶机: https://download.vulnhub.com/harrypotter/Fawkes.ova这是个哈利波特系列的靶机,作者和本人都非常喜欢这个系列,因为它的漏洞和利用点都设计得很巧妙。 难度: 高 目标: 取得2个root权限 3 个flag 涉及攻…

学习二叉树遍历

class Node{ V value; Node left; Node reight; } 用递归和非递归两种方式实现二叉树的先序,中序,后续遍历 如何直观的打印一颗二叉树 如何完成二叉树的宽度优先遍历 递归序列 先序是出现的第一个数字,中序第二个,后续第三…

兼容并蓄,高效集成:EasyCVR视频综合接入能力助力多元化项目需求

随着视频技术的不断进步,视频监控、视频直播、执法记录仪、语音可视对讲、无人机等视频资源的应用场景日益丰富。这些视频资源不仅在数量上快速增长,而且在质量、格式、编码标准等方面也呈现出多样化的特点。因此,为了有效整合这些资源&#…

5.4 视图的创建与管理

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: 工💗重💗hao💗:野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题.…

【Datawhale X 魔搭 】AI夏令营第四期大模型方向,Task3:源大模型RAG实战(持续更新)

什么是RAG? RAG:检索增强生成(Retrieval Augmented Generation)。 RAG的提出背景: 在实际业务场景中,通用的基础大模型可能存在无法满足我们需求的情况,主要有以下几方面原因: 知识局…

AtCoder Beginner Contest 367 A~D

本期封面原图 画师えびら A - Shout Everyday 题意 b点睡觉c点起床&#xff0c;问你a点是不是醒着的 思路 直接判断即可&#xff0c;注意处理跨天的情况 代码 #include <bits/stdc.h> #define mod 998244353 using namespace std; typedef long long ll; typedef …

推荐 4 款知名免费的思维导图软件,强大跨平台好用,效率大大提升

TreeMind TreeMind树图是一款基于AI人工智能的在线思维导图工具&#xff0c;旨在通过简单的操作快速生成专业详尽的思维导图。它具有多种创新功能和丰富的资源库&#xff0c;能够极大地提高用户的学习和工作效率。 TreeMind树图的主要功能包括&#xff1a; AI一句话生成思维导…

汇编语言:div指令和mul指令

1. div指令 div 是除法指令&#xff0c;在8086CPU中&#xff0c;使用div做除法时&#xff0c;遵循以下规则&#xff1a; &#xff08;1&#xff09;除数&#xff1a;有8位&#xff08;1字节&#xff09;和16位&#xff08;2字节&#xff09;两种&#xff0c;放在一个寄存器&am…

移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——5.string(模拟实现)

1.存储结构 namespace zone {class string{public:private: //设置私有&#xff0c;不允许随便访问底层数据char* _str; //字符串存储空间首地址指针size_t _size; //当前字符数量size_t _capaicty; //可用容量static const size_t npos;}const size_t string::nops -1;//在类…

MATLAB中ichol函数用法

目录 语法 说明 示例 不完全 Cholesky 分解 使用 ichol 作为预条件子 使用 diagcomp 选项 ichol函数的功能是对矩阵进行不完全 Cholesky 分解。 语法 L ichol(A) L ichol(A,options) 说明 L ichol(A) 通过零填充执行 A 的不完全 Cholesky 分解。A 必须为稀疏方阵。…

西瓜书学习笔记三 归纳偏好

1.4 归纳偏好 通过学习得到的模型对应了假设空间中的一个假设。于是&#xff0c;图1. 2的西瓜版本空间给我们带来一个麻烦:现在有三个与训练集一致的假设&#xff0c;但与它们对应的模型在面临新样本的时候&#xff0c;却会产生不同的输出。现在有一个新瓜&#xff0c;一个模型…

希腊字母大写、小写、音标

▪Αα ▪Ββ ▪Γγ ▪Δδ ▪Εε或ϵ ▪Ϝϝ ▪Ζζ ▪Ηη ▪Θθ ▪Ιι ▪Κκ ▪Λλ ▪Μμ ▪Νν ▪Ξξ ▪Οο ▪Ππ ▪Ρρ ▪Σσ或ς ▪Ττ ▪Υυ ▪Φφ或ϕ ▪Χχ ▪Ψψ ▪Ωω