当前位置: 首页 > news >正文

使用emu8086实现——子程序的设计

一、实验目的

        学习子程序的结构、特点,以及子程序的设计和调试方法

二、实验内容

1、从字符串中删除一个字符,并存储到寄存器AX中。

        ·代码及注释:

data segmentstring db 'exas '   ;字符串内容leng dw $-string   ; 字符串长度key db 'x'         ; 要删除的字符
data ends
code segmentassume cs:code, ds:data, es:datamain proc far
start:mov ax, data    mov ds, ax      mov es, ax      lea bx, string lea cx, leng    push bx         push cx         mov al, key     ; 将要删除的字符加载到寄存器al中call delchar    ; call调用删除字符的过程mov ah, 4Ch    int 21h         main endp       ;main程序结束
delchar procpush bp         mov bp, sp      ; 将栈顶指针sp存入bp寄存器push si         ; 保存si寄存器的值push di         ; 保存di寄存器的值cld             ; 重置处理器标志位中的方向标志位,让其为0(低位向高位)mov si, [bp+4]  ; 将bp+4(第一个参数,指向字符串的指针)加载到寄存器si中mov cx, [si]    ; 将参数si指向的值(字符串长度)加载到寄存器cx中mov di, [bp+6]  ; 将bp+6(第二个参数,要删除的字符)加载到寄存器di中repne scasb     ; 扫描字符串,找到第一次出现的指定字符jz done        ; jz跳转到donemov si, [bp+4]  dec word ptr [si] ; 将字符串长度减1mov si, di      ;Inc  di      ; 将di寄存器加1跳过删除的字符rep movsb       ; 复制字符串,将删除指定字符后的字符串向前移动
done:pop di         pop si          pop bp          ret             ; 返回调用过程的指令位置delchar endp
code ends
end start

        ·运行结果及展示:

        成功将删除的字符串存入到AX寄存器中

 

相关文章:

使用emu8086实现——子程序的设计

一、实验目的 学习子程序的结构、特点,以及子程序的设计和调试方法 二、实验内容 1、从字符串中删除一个字符,并存储到寄存器AX中。 代码及注释: data segmentstring db exas ;字符串内容leng dw $-string ; 字符串长度key db x …...

快速排序、归并排序、希尔排序(2023-12-25)

参考文章 十大经典排序算法总结整理_十大排序算法-CSDN博客 推荐文章 算法:归并排序和快排的区别_归并排序和快速排序的区别-CSDN博客 package com.tarena.test.B20; import java.util.Arrays; import java.util.StringJoiner; public class B25 { static i…...

Qt SDL2播放Wav音频

这里介绍两种方法来实现Qt播放Wav音频数据。 方法一&#xff1a;使用QAudioOutput pro文件中加入multimedia模块。 #include <QApplication> #include <QFile> #include <QAudioFormat> #include <QAudioOutput>int main(int argc, char *argv[]) {…...

[ACM学习] 动态规划基础之一二三维dp

课内学习的动态规划 有记忆的迭代 优化解的结构&#xff1a;原始问题的一部分解是子问题的解 三要素&#xff1a;1.子问题 2.状态的定义 3.状态转移方程 定义 线性dp的一道例题 dp[i]表示以位置 i 结尾的方案总数&#xff0c;dp[4]2&#xff0c;因为&#xff1a;首先只放一…...

Qt点击按钮在其附近弹出一个窗口

效果 FS_PopupWidget.h #ifndef FS_POPUPWIDGET_H #define FS_POPUPWIDGET_H#pragma once#include <QToolButton> #include <QWidgetAction> #include <QPointer>class QMenu;class FS_PopupWidget : public QToolButton {Q_OBJECTpublic:FS_PopupWidget(QW…...

Springboot注解@Configuration和@Bean注解作用,生命周期

简介&#xff1a; Configuration 类是定义 bean 配置的地方&#xff0c;而 Bean 方法是具体创建 bean 实例的方法。 Configuration 作用&#xff1a; Configuration 注解用于定义配置类&#xff0c;表明该类包含一个或多个 bean 定义的方法。Spring 容器在启动时会自动扫描这些…...

30天精通Nodejs--第十五天:Websocket

引言 这里我们将继续深入探讨另一项强大且实时性极高的网络通信技术——WebSocket。通过本篇文章,将全面了解如何在Node.js环境中利用WebSocket实现服务端与客户端之间双向、低延迟的数据传输,并掌握其基础用法以及一些高级应用场景。 基础用法 安装WebSocket库 在Node.j…...

C++深入学习之STL:2、适配器、迭代器与算法部分

适配器概述 C标准模板库(STL)中提供了几种适配器&#xff0c;这些适配器主要用于修改或扩展容器类的功能。STL中的适配器主要包括以下几种&#xff1a; 1、迭代器适配器&#xff1a;迭代器适配器提供了一种机制&#xff0c;可以将非迭代器对象转换为迭代器对象。比如back_ins…...

Tiktok/抖音旋转验证码识别

一、引言 在数字世界的飞速发展中&#xff0c;安全防护成为了一个不容忽视的课题。Tiktok/抖音&#xff0c;作为全球最大的短视频平台之一&#xff0c;每天都有数以亿计的用户活跃在其平台上。为了保护用户的账号安全&#xff0c;Tiktok/抖音引入了一种名为“旋转验证码”的安…...

【Java 设计模式】设计原则

文章目录 ✨单一职责原则&#xff08;SRP&#xff09;✨开放/封闭原则&#xff08;OCP&#xff09;✨里氏替换原则&#xff08;LSP&#xff09;✨依赖倒置原则&#xff08;DIP&#xff09;✨接口隔离原则&#xff08;ISP&#xff09;✨合成/聚合复用原则&#xff08;CARP&#…...

Druid连接池工具公式化SQL附踩坑记录

1. 需求 使用Druid连接池工具格式化sql用于回显时候美观展示 2. 代码示例 2.1 依赖 <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.6</version> </dependency> 2.2 ParseUtils…...

Linux内核--网络协议栈(二)UDP数据包发送

目录 一、引言 二、数据包发送 ------>2.1、数据发送流程 三、协议层注册 ------>3.1、socket系统调用 ------>3.2、socket创建 ------>3.3、协议族初始化 ------>3.4、对应协议的socket创建 ------>3.5、协议注册 四、通过套接字发送网络数据 --…...

基于深度学习的时间序列算法总结

1.概述 深度学习方法是一种利用神经网络模型进行高级模式识别和自动特征提取的机器学习方法&#xff0c;近年来在时序预测领域取得了很好的成果。常用的深度学习模型包括循环神经网络&#xff08;RNN&#xff09;、长短时记忆网络&#xff08;LSTM&#xff09;、门控循环单元&a…...

nginx中多个server块共用upstream会相互影响吗

背景 nginx中经常有这样的场景&#xff0c;多个server块共用一个域名。 如&#xff1a;upstream有2个以上的域名&#xff0c;nginx配置两个server块&#xff0c;共用一个upstream配置。 那么&#xff0c;如果其中一个域名发生"no live upstreams while connecting to ups…...

基于信号完整性的一些PCB设计建议

最小化单根信号线质量的一些PCB设计建议 1. 使用受控阻抗线&#xff1b; 2. 理想情况下&#xff0c;所有信号都应该使用完整的电源或地平面作为其返回路径&#xff0c;关键信号则使用地平面作为返回路径&#xff1b; 3. 信号的返回参考面发生变化时&#xff0c;在尽可能接近…...

《BackTrader量化交易图解》第8章:plot 绘制金融图

文章目录 8. plot 绘制金融图8.1 金融分析曲线8.2 多曲线金融指标8.3 Observers 观测子模块8.4 plot 绘图函数的常用参数8.5 买卖点符号和色彩风格8.6 vol 成交参数8.7 多图拼接模式8.8 绘制 HA 平均 K 线图 8. plot 绘制金融图 8.1 金融分析曲线 BackTrader内置的plot绘图函…...

什么是欧拉筛??

欧拉筛&#xff08;Eulers Sieve&#xff09;&#xff0c;又称线性筛法或欧拉线性筛&#xff0c;是一种高效筛选素数的方法。它的核心思想是从小到大遍历每个数&#xff0c;同时标记其倍数为合数&#xff0c;但每个合数只被其最小的质因数标记一次&#xff0c;从而避免了重复标…...

2023年全国职业院校技能大赛软件测试赛题—单元测试卷⑩

单元测试 一、任务要求 题目1&#xff1a;根据下列流程图编写程序实现相应处理&#xff0c;程序根据两个输入参数iRecordNum和IType计算x的值并返回。编写程序代码&#xff0c;使用JUnit框架编写测试类对编写的程序代码进行测试&#xff0c;测试类中设计最少的测试数据满足基路…...

使用WAF防御网络上的隐蔽威胁之SSRF攻击

服务器端请求伪造&#xff08;SSRF&#xff09;攻击是一种常见的网络安全威胁&#xff0c;它允许攻击者诱使服务器执行恶意请求。与跨站请求伪造&#xff08;CSRF&#xff09;相比&#xff0c;SSRF攻击针对的是服务器而不是用户。了解SSRF攻击的工作原理、如何防御它&#xff0…...

Redis基础系列-哨兵模式

Redis基础系列-哨兵模式 文章目录 Redis基础系列-哨兵模式1. 引言2. 什么是哨兵模式&#xff1f;3. 哨兵模式的配置4. 哨兵模式的启动和验证4.1 主master宕机&#xff0c;看会出现什么问题4.2 重启6379主机 5. 哨兵模式的工作原理和选举原理5.1. SDown主观下线&#xff08;Subj…...

Python 服务优雅停机实战:信号处理、资源收尾与 Kubernetes 滚动发布避坑指南

Python 服务优雅停机实战&#xff1a;信号处理、资源收尾与 Kubernetes 滚动发布避坑指南 客观来看&#xff0c;Python 作为“胶水语言”&#xff0c;以其简洁优雅的语法从 1991 年诞生至今&#xff0c;已深度渗透 Web 开发、数据科学、人工智能和自动化运维等领域。它改变了编…...

零基础掌握Degrees of Lewdity本地化工具:开源项目中文适配方案全攻略

零基础掌握Degrees of Lewdity本地化工具&#xff1a;开源项目中文适配方案全攻略 【免费下载链接】Degrees-of-Lewdity-Chinese-Localization Degrees of Lewdity 游戏的授权中文社区本地化版本 项目地址: https://gitcode.com/gh_mirrors/de/Degrees-of-Lewdity-Chinese-Lo…...

MangoHud源码静态分析报告:潜在问题列表

MangoHud源码静态分析报告&#xff1a;潜在问题列表 【免费下载链接】MangoHud A Vulkan and OpenGL overlay for monitoring FPS, temperatures, CPU/GPU load and more. Discord: https://discordapp.com/invite/Gj5YmBb 项目地址: https://gitcode.com/gh_mirrors/ma/Mang…...

流水线设计避坑指南:什么时候该用?深度怎么选?看完这篇就懂了

流水线设计实战决策&#xff1a;吞吐率与硬件成本的黄金分割点 在芯片设计和FPGA开发领域&#xff0c;流水线技术就像一把双刃剑——用得好可以大幅提升系统性能&#xff0c;用得不当则可能造成资源浪费甚至引入新的瓶颈。我曾在一个图像处理芯片项目中&#xff0c;因为错误估计…...

用Python+OpenCV实现双目视觉三维重建:从相机标定到triangulatePoints实战

PythonOpenCV双目视觉三维重建实战&#xff1a;从标定到点云生成 去年在开发一个AR眼镜原型时&#xff0c;我遇到了一个棘手的问题&#xff1a;如何让设备准确感知周围环境的深度。经过反复尝试&#xff0c;最终采用双目视觉方案完美解决了这个问题。本文将分享整个实现过程&am…...

5分钟搞定COCO数据集下载与配置:从官网到百度云全攻略(附多线程加速技巧)

COCO数据集极速获取指南&#xff1a;从官方源到镜像站的全链路方案 刚接触计算机视觉的新手们&#xff0c;往往在第一步获取数据集时就遭遇"劝退"——动辄几十GB的COCO数据集&#xff0c;官网下载速度堪比蜗牛爬行&#xff0c;百度云限速让人抓狂。本文将分享一套经过…...

基于RS485(Modbus RTU)的工业RFID读写器CK-FR03-A01与三菱FX5U PLC的通信配置与实战应用

1. 工业RFID与PLC通信的基础认知 在自动化产线上&#xff0c;RFID读写器就像给物料贴"身份证"的智能哨兵&#xff0c;而PLC则是控制流水线动作的大脑。CK-FR03-A01这款工业级RFID读写器&#xff0c;通过RS485接口采用Modbus RTU协议与三菱FX5U PLC对话&#xff0c;就…...

计算对方预测位置与本方偏差

航天器交会 分布式MPC在近地轨道上实现两个航天器的精准交会&#xff0c;就像让两枚子弹在千米外相撞——不仅要算准弹道&#xff0c;还要实时应对各种扰动。传统集中式控制需要把所有计算放在地面站&#xff0c;延迟和通讯瓶颈让人头秃。这时候分布式模型预测控制&#xff08;…...

RAG技术新篇章:Modular RAG模块化架构如何引爆效率与效果?

本文深入解析了RAG技术的演进历程&#xff0c;从最初的Naive RAG到Advanced RAG&#xff0c;再到如今的Modular RAG&#xff0c;阐述了三者间的继承与发展关系。Modular RAG通过模块化设计和智能编排&#xff0c;实现了更高的灵活性和可扩展性。其核心在于Orchestration编排模块…...

嵌入式开发调试技巧与宏应用详解

嵌入式软件开发调试技巧全解析 1. 调试基础宏的使用 1.1 编译器内置调试宏 在嵌入式开发中&#xff0c;GCC编译器提供了一系列内置宏用于调试&#xff0c;这些宏会在编译时自动展开&#xff1a; __FILE__ // 当前源文件名 (char*) __FUNCTION__ // 当前函数名 (char*) _…...