当前位置: 首页 > 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寄存器中

 

http://www.lryc.cn/news/281127.html

相关文章:

  • 快速排序、归并排序、希尔排序(2023-12-25)
  • Qt SDL2播放Wav音频
  • [ACM学习] 动态规划基础之一二三维dp
  • Qt点击按钮在其附近弹出一个窗口
  • Springboot注解@Configuration和@Bean注解作用,生命周期
  • 30天精通Nodejs--第十五天:Websocket
  • C++深入学习之STL:2、适配器、迭代器与算法部分
  • Tiktok/抖音旋转验证码识别
  • 【Java 设计模式】设计原则
  • Druid连接池工具公式化SQL附踩坑记录
  • Linux内核--网络协议栈(二)UDP数据包发送
  • 基于深度学习的时间序列算法总结
  • nginx中多个server块共用upstream会相互影响吗
  • 基于信号完整性的一些PCB设计建议
  • 《BackTrader量化交易图解》第8章:plot 绘制金融图
  • 什么是欧拉筛??
  • 2023年全国职业院校技能大赛软件测试赛题—单元测试卷⑩
  • 使用WAF防御网络上的隐蔽威胁之SSRF攻击
  • Redis基础系列-哨兵模式
  • 【angular教程240112】09(完) Angular中的数据请求 与 路由
  • go中拷贝文件操作
  • 未来气膜体育馆的发展趋势是什么?
  • 通信扫盲(五)
  • nbcio-boot项目的文件上传与回显处理方法
  • 《动手学深度学习》学习笔记 第9章 现代循环神经网络
  • 「HDLBits题解」Vector100r
  • 如何制作专业商业画册,提升品牌形象
  • vim升级和配置
  • java通过okhttp方式实现https请求的工具类(绕过证书验证)
  • mysql定时备份shell脚本和还原