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

news2024/9/29 11:35:55
一、实验目的

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

二、实验内容

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

        ·代码及注释:

data segment
    string db 'exas '   ;字符串内容
    leng dw $-string   ; 字符串长度
    key db 'x'         ; 要删除的字符
data ends
code segment
    assume cs:code, ds:data, es:data
    main 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 proc
    push 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跳转到done
    mov si, [bp+4]  
    dec word ptr [si] ; 将字符串长度减1
    mov si, di      ;
     Inc  di      ; 将di寄存器加1跳过删除的字符
    rep movsb       ; 复制字符串,将删除指定字符后的字符串向前移动
done:
    pop di         
    pop si          
    pop bp          
    ret             ; 返回调用过程的指令位置
    delchar endp
code ends
end start

        ·运行结果及展示:

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

 

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

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

相关文章

js简单原生实现

JavaScript实现 这是一篇用JavaScript技术实现各种效果的学习贴&#xff0c;赋各种代码&#xff0c;供参考&#xff01; 1.按钮事件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-…

Flink 处理函数(1)—— 基本处理函数

在 Flink 的多层 API中&#xff0c;处理函数是最底层的API&#xff0c;是所有转换算子的一个概括性的表达&#xff0c;可以自定义处理逻辑 在处理函数中&#xff0c;我们直面的就是数据流中最基本的元素&#xff1a;数据事件&#xff08;event&#xff09;、状态&#xff08;st…

Github仓库使用方式

主要参考&#xff1a; 「详细教程」使用git将本地项目上传至Github仓库&#xff08;MacOS为例&#xff09;_github上传代码到仓库-CSDN博客 新建文件夹参考&#xff1a; GitHub使用指南——建立仓库、建立文件夹、上传图片详细教程-CSDN博客 一、新建一个 github 仓库&#…

区块链是怎么存储数据的?

每个块都是有大小限制的新的数据存储单元&#xff0c;当前数据不到上限&#xff0c;那么都可以添加进块。当前数据达到了上限&#xff0c;那么就得分表/分块&#xff0c;超限的那部分数据就需要等待下个区块存储 存储的数据&#xff1a;和mysql一样&#xff0c;文本数据直接存储…

vue3 锚点定位 点击滚动高亮

功能描述 点击导航跳到对应模块的起始位置&#xff0c;并且高亮点击的导航&#xff1b; 滚动到相应的模块时&#xff0c;对应的导航也自动高亮&#xff1b; 效果展示 注意事项 一定要明确哪个是要滚动的盒子&#xff1b;滚动的高度要减去导航栏的高度&#xff1b;当前在导航1…

RFID技术在汽车装备中的应用:提升安全性与效率

RFID技术在汽车装备中的应用&#xff1a;提升安全性与效率 射频识别&#xff08;RFID&#xff09;技术是一种非接触式的自动识别技术&#xff0c;它利用射频信号及其空间耦合和传输特性&#xff0c;实现对目标对象的信息读写。随着汽车工业的不断发展&#xff0c;汽车装备的技…

YOLOv8目标检测中数据集各部分的作用

自学答疑使用&#xff0c;持续更新… 在目标检测任务中&#xff0c;通常将整个数据集划分为训练集&#xff08;training set&#xff09;、验证集&#xff08;validation set&#xff09;和测试集&#xff08;test set&#xff09;。这三个数据集在训练和评估过程中具有不同的…

IT行业——香港优才计划低分段申请之王!

IT行业——香港优才计划低分段申请之王&#xff01; 香港优才计划获批率确实没那么看重分数&#xff0c;看了下2023年的获批案例&#xff0c;一些申请者的基础分数刚过80分&#xff0c;照样顺利获批拿到了香港身份&#xff01; 今天就拿真实数据来分析&#xff0c;盘点那些低分…

JS常用插件 Swiper插件 实现轮播图

Swiper介绍 Swiper 是一款免费以及轻量级的移动设备触控滑块的js框架 中文官网地址: https://www.swiper.com.cn/ 点击查看Swiper演示&#xff0c;里面的功能和样式十分丰富&#xff0c;根据自己的需求选择 中文教程中详细介绍了如何使用Swiper API文档中介绍了各个模块以及参…

gitee完整使用教程,创建项目并上传

目录 一 什么是gitee 二 安装Git 三 登录gitee&#xff0c;生成密钥 四 配置SSH密钥 五 创建项目 六 克隆仓库到本地 七 关联本地工程到远程仓库 八 添加文件 九 异常处理 十 删除仓储 十一 git常用命令 一 什么是gitee gitee是开源中国推出的基于git的代码托管服务…

我成为开源贡献者的原因竟然是做MySql-CDC数据同步

今年下半年机缘巧合下公司决定搭建自己的数据中台&#xff0c;中台的建设势必少不了数据集成。首先面临的就是数据集成技术选型的问题&#xff0c;按照社区活跃度、数据源适配性、同步效率等要求对市面上几个成熟度较高的开源引擎进行了深度调研。 最终经过内部讨论决定用Apac…

智能安全帽识别系统简析

在工业安全领域&#xff0c;安全帽识别系统的重要性不言而喻。这种系统利用先进的图像识别技术&#xff0c;确保工地上每位工人都佩戴安全帽&#xff0c;从而大幅提升工作场所的安全性。本文旨在探讨这一系统的工作原理、应用范围以及面临的挑战。 安全帽识别系统的工作原理 智…

查找算法(部分)

顺序查找 顺序查找是最简单的了&#xff0c;属于无序查找算法&#xff0c;它的原理就是从前往后一个一个的找&#xff0c;如果找到了就返回它的位置&#xff0c;否则就返回-1。 如果有多个相同元素的话&#xff0c;返回第一个该元素的位置。 代码&#xff1a; #include<…

高通开发系列 - RT补丁死机问题scheduling while atomic

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 返回:专栏总目录 目录 背景概述问题现象了解RTOS如何使用高分辨率计时器?RT-mutex 实现设计线程化的中断处理程序睡眠spinlock

图解python | 字符串及操作

1.Python元组 Python的元组与列表类似&#xff0c;不同之处在于元组的元素不能修改。 元组使用小括号&#xff0c;列表使用方括号。 元组创建很简单&#xff0c;只需要在括号中添加元素&#xff0c;并使用逗号隔开即可。 tup1 (ByteDance, ShowMeAI, 1997, 2022) tup2 (1…

通过FTP和HTTPD,搭建内网yum仓库

一、yum仓库的简介 1.yum介绍 yum是一个基于RPM包&#xff08;是Red-Hat Package Manager红帽软件包管理器的缩写&#xff09;构建的软件更新机制&#xff0c;能够自动解决软件包之间的依赖关系。解决了日常工作中的大量查找安装依赖包的时间 为什么会有依赖关系的发生 因为li…

GPT图解大模型是怎样构建的

❤️作者主页&#xff1a;小虚竹 ❤️作者简介&#xff1a;大家好,我是小虚竹。2022年度博客之星评选TOP 10&#x1f3c6;&#xff0c;Java领域优质创作者&#x1f3c6;&#xff0c;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;掘金年度人气作…

网络文件共享服务

目录 一.存储类型&#xff1a; 1.存储类型分为三种&#xff1a; 2.NAS的概述&#xff1a; 3.SAN的概述&#xff1a; 4.DAS的概述&#xff1a; 二.FTP 文件传输协议&#xff1a; 1.FTP工作原理&#xff1a; 2.FTP的两种模式&#xff1a; 3.FTP的用户认证&#xff1a; 三…

Ncast盈可视高清智能录播系统busiFacade RCE漏洞(CVE-2024-0305)

产品介绍 Ncast盈可视高清智能录播系统是一套新进的音视频录制和播放系统&#xff0c;旨在提供高质量&#xff0c;高清定制的录播功能。 漏洞描述 广州盈可视电子科技有限公司的高清智能录播系统存在信息泄露漏洞(CVE-2024-0305)&#xff0c;攻击者可通过该漏洞&#xff0c;…

【HarmonyOS4.0】第十篇-ArkUI布局容器组件(二)

三、层叠布局容器&#xff08;Stack&#xff09; 堆叠容器组件 Stack的布局方式是把子组件按照设置的对齐方式顺序依次堆叠&#xff0c;后一个子组件覆盖在前一个子组件上边。 注意&#xff1a;Stack 组件层叠式布局&#xff0c;尺寸较小的布局会有被遮挡的风险&#xff0c; …