Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【微机原理】程序设计题基础知识讲解——4、流程控制与循环

【微机原理】程序设计题基础知识讲解——4、流程控制与循环

作者头像
命运之光
发布于 2025-06-13 07:51:20
发布于 2025-06-13 07:51:20
8000
代码可运行
举报
运行总次数:0
代码可运行

知道LOOP 指令如何实现简单循环,并结合条件跳转完成复杂的流程控制。

流程控制与循环

1. LOOP 指令
  • 作用:依赖于 CX(或 ECX)寄存器,用于控制循环。每次执行 LOOP 指令时,CX 自动减 1,若 CX ≠ 0,则跳转到指定标签继续执行循环体。
  • 特点
    • 简化计数型循环的实现。
  • 示例
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MOV CX, 5         ; 设置循环计数为 5
LOOP_START:
    ; 循环体代码
    LOOP LOOP_START   ; 每次循环 CX 自动减1,直到 CX0时不跳转
2. 条件转移指令
  • 基本思想:根据前面运算(如 CMP 指令)的结果判断标志位,决定是否跳转到指定代码段。常见的条件转移指令包括:
    • JE****/JZ (Jump if Equal / Jump if Zero) ==
      • 当比较结果相等或零标志置 1 时跳转。
      • 示例:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MOV AL, 5
CMP AL, 5
JE EQUAL_LABEL   ;AL 等于 5,则跳转到 EQUAL_LABEL
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- **J****<font style="color:#DF2A3F;">N</font>****E/JNZ (Jump if Not Equal / Jump if Not Zero)  !=**
    * 当比较结果不等或零标志为 0 时跳转。
    * 示例:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MOV AL, 6
CMP AL, 5
JNE NOT_EQUAL_LABEL   ;AL 不等于 5,则跳转
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- **JL (Jump if Less)   <**
    * 针对<font style="color:#DF2A3F;">有符号数</font>比较,当第一个操作数小于第二个操作数时跳转。
    * 示例:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MOV AX,10
MOV BX,55
CMP AX, BX
JL LESS_LABEL    ;AX < BX,则跳转
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- **JL****<font style="color:#DF2A3F;">E</font>**** (Jump if Less or Equal) <=**
    * 当小于或等于时跳转。
    * 示例:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CMP AX, BX
JLE LESS_EQUAL_LABEL
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- **<font style="color:#DF2A3F;">JG</font>**** / JNLE (Jump if Greater / Jump if Not Less or Equal)  >**
    * 针对<font style="color:#DF2A3F;">有符号数</font>比较,当第一个操作数大于第二个操作数时跳转。
- **JG****<font style="color:#DF2A3F;">E</font>**** (Jump if Greater or Equal) >=**
    * 当大于或等于时跳转。
- **JB / JNAE (Jump if Below / Jump if Not Above or Equal) <**
    * 针对<font style="color:#DF2A3F;">无符号数</font>比较,当第一个操作数低于(小于<)第二个操作数时跳转。
- **JA   >**
    * 针对<font style="color:#DF2A3F;">无符号数</font>比较,当第一个操作数大于(大于>)第二个操作数时跳转。
- **JAE   大于等于**
- **JBR   小于等于**
- **JMP 指令**
    * **无条件跳转**:直接跳转到指定标签,不依赖标志位,常用于跳过某段代码或构建无限循环。
    * 示例:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
JMP LOOP_START  ; 无条件跳转到 LOOP_START 标签
3. 综合示例:使用 CMP 和条件转移实现简单判断
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MOV AL, 7
CMP AL, 5       ; 比较 AL5
JL LESS_LABEL   ; 如果 AL < 5,跳转到 LESS_LABEL
; 如果没有跳转,则说明 AL >= 5
; 此处写 AL >= 5 的处理代码
JMP CONTINUE

LESS_LABEL:
; 处理 AL < 5 的情况

CONTINUE:
; 后续程序代码
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
[Android] 查看MTD,EMMC,MMC三种设备的分区
因为在做系统升级,AOSP的recovery下有一个flash_image工具,这个工具可以在开机状态下刷写系统分区。源码位置在/bootable/recovery/mtdutils/flash_image.c。
wOw
2020/01/20
6.5K0
[Android] 查看MTD,EMMC,MMC三种设备的分区
安卓手机运行 Windows 操作系统:一
在折腾上一篇文章的时候,发现了一条有趣的折腾分支,在这台老设备上运行 Windows 操作系统。
soulteary
2024/05/04
5610
安卓手机运行 Windows 操作系统:一
安卓手机运行 Windows 操作系统:一
在折腾上一篇文章的时候,发现了一条有趣的折腾分支,在这台老设备上运行 Windows 操作系统。
soulteary
2024/05/11
5890
安卓手机运行 Windows 操作系统:一
Linux U-Boot 开发指南
介绍 U-Boot 的编译打包、基本配置、常用命令的使用、基本调试方法等, 为 U-BOOT 的移植及应用开发提供了基础。
韦东山
2023/02/25
4.8K0
Linux U-Boot 开发指南
嵌入式Linux开发-uboot常用命令介绍(上篇)
U-boot是一种开源bootloader, 作用是用来引导操作,以及给开发人员提供测试调试工具。本身算是个精简的Linux系统,主要是负责硬件的初始化和引导,本身带有一些工具,作为引导程序,常作为嵌入式设备的引导。当真正的系统开始运行的时候U-boot就把管理权限交了出去。
DS小龙哥
2022/04/08
2.1K0
嵌入式Linux开发-uboot常用命令介绍(上篇)
Nexus5 bootloader内容初探及延伸思考编译使用
在Android启动过程分析-从按下电源键到第一个用户进程[转载]中,我们知道BootLoader是在操作系统前执行的程序,有没有很好奇它到底有些啥内容呢?
用户2930595
2018/08/23
5080
学习下 eMMC
eMMC 简介 Host Interface Flash Controller Flash Memory eMMC 分区管理 Boot Area Partitions eMMC 分区应用实例 eMMC 总线协议 eMMC 总线接口 eMMC 总线模型 eMMC 简介 eMMC 是 embedded MultiMediaCard 的简称。MultiMediaCard,即MMC, 是一种闪存卡(Flash Memory Card)标准,它定义了 MMC 的架构以及访问 Flash Memory 的接口和协议。而
刘盼
2022/04/06
2.1K0
学习下 eMMC
Rockchip RK3588 - uboot引导方式介绍
开发板 :RK3588 EVB开发板 eMMC :256GB LPDDR4 :16GB 显示屏 :10.1英寸HDMI接口显示屏 u-boot :2017.09 linux :6.1
用户11537198
2025/03/07
5100
Mi8刷机若干踩坑
这个刷机的事情本来挺简单个事,但是我刷面具的时候,哪个面具是个坏包,之后的就触摸不正常了,就是点上去没有反应.很难受我又刷回去了miui然后再刷回来.本来是半个小时的事情,结果折腾一下午,晚上一点多才搞好.
云深无际
2020/08/12
1.8K0
Mi8刷机若干踩坑
嵌入式Linux开发-uboot常用命令介绍(下篇)
主要是涉及的命令是:磁盘分区、磁盘文件加载、内核引导、二进制文件加载、跳转命令、磁盘文件系统格式等等。
DS小龙哥
2022/04/08
2.7K0
嵌入式Linux开发-uboot常用命令介绍(下篇)
修改手机的ro.debuggable配置0x01:获取boot.img0x02:修改boot.img0x03:boot.img相关0x04:变砖后的自救
我们自己编译的源码刷机ro.debuggable就是为1,这个时候所有的进程都可以远程调试。但是自己编译的源码里面没有GooglePlay,有些应用的部分功能又依赖于GooglePlay。那怎么办呢?
用户2930595
2018/10/09
2.7K0
修改手机的ro.debuggable配置0x01:获取boot.img0x02:修改boot.img0x03:boot.img相关0x04:变砖后的自救
Android Recovery升级原理
Recovery模式指的是一种可以对安卓机内部的数据或系统进行修改的模式(类似于windows PE或DOS)。也可以称之为安卓的恢复模式,在这个所谓的恢复模式下,我们可以刷入新的安卓系统,或者对已有的系统进行备份或升级,也可以在此恢复出厂设置(格式化数据和缓存)。
233333
2019/09/25
5.1K1
Android Recovery升级原理
鸿蒙系统研究之六:U-Boot引导
U-Boot 的全称是 Universal Boot Loader,其作用就是引导系统。对于我们熟悉的 PC,上电后,通过 BIOS 引导操作系统 (Windows、Linux等)。对于嵌入式系统一般将这个引导程序称作 BootLoader,U-Boot 就是目前使用得最广泛的 BootLoader。
云水木石
2021/08/06
2.9K1
Android5.0 Recovery源代码分析与定制(一)
Android的系统升级,Android的线刷,卡刷,格式化究竟有什么奇妙的地方呢?它又是怎么实现的呢?今天我将为大家揭开它的面纱!我们以Tiny4412的Recovery源代码为例,虽然4412并没有支持Recovery系统,但弄明白它的原理,我们也可以开发或者移植一个出来。其实,在recovery.cpp中开头就已经做了详细的说明,我们来看看。
杨源鑫
2019/07/04
1.7K0
Android5.0 Recovery源代码分析与定制(一)
Android加密之全盘加密
Android 的安全性问题一直备受关注,Google 在 Android 系统的安全方面也是一直没有停止过更新,努力做到更加安全的手机移动操作系统。
全栈程序员站长
2022/08/27
2.6K0
Android加密之全盘加密
14_TF编程
​ 多媒体存储卡(英语:Multimedia Card),又译MMC卡,是一种快闪记忆卡标准。在1997年由西门子及闪迪共同开发,技术基于东芝的NAND快闪记忆技术,因此较早期基于Intel NOR快闪记忆技术的存储卡(例如CF卡)更细小。MMC卡大小与一张邮票差不多,约24mm x 32mm x 1.5mm。MMC卡原本使用1bit串联接口,但较新的标准则容许同时发送4 bit或8 bits的数据。近年MMC卡技术已差不多完全被SD卡所代替;但由于MMC卡仍可被兼容SD卡的设备所读取,因此仍有其作用。这项技术一个公开标准,所有愿意改进它或者为它开发产品的公司都可使用。
韦东山
2022/05/05
1.7K0
14_TF编程
android adb shell 常用命令
mac: /Users/xx/Library/Android/sdk/tools/bin archquery jobb monkeyrunner sdkmanager avdmanager lint screenshot2 uiautomatorviewer
tea9
2022/09/08
3.6K0
Android Automotive Framework调试技巧
三次握手只是一个数据传输的过程,但是,我们传输前需要一些准备工作,比如将创建一个套接字,收集一些计算机的资源,将一些资源绑定套接字里面,以及接受和发送数据的函数等等,这些功能接口在一起构成了socket的编程
wizzie
2022/12/22
5.5K0
Android Automotive Framework调试技巧
私人订制属于自己的Linux系统
init通过调用/etc/inittab这个配置文件,然后再去执行/etc/rc.d/rc.sysinit的系统初始化脚本
iginkgo18
2020/09/27
1.1K0
私人订制属于自己的Linux系统
Tina_Linux_安全_开发指南
介绍TinaLinux 下安全方案的功能。安全完整的方案基于normal 方案扩展,覆盖硬件安全、安全启动(Secure Boot)、安全系统(Secure OS)、安全存储(Secure Storage)、安全应用(Trust Application)、完整性保护(Dm-Verity)、强制访问控制(MAC)等方面。
韦东山
2023/02/25
5.9K0
Tina_Linux_安全_开发指南
相关推荐
[Android] 查看MTD,EMMC,MMC三种设备的分区
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验