汇编练习-1
1、要求
练习要求引自《汇编语言-第4版》实验10.3(P209页)
-编程,将data段中的数据,以10进制的形式显示出来
data segment
dw 123,12666,1,8,3,38
data ends
2、实现代码(可惜没找到csdn对8086汇编显示方式)
assume cs:codedata segmentdw 16 dup(0) ;除法的缓存区域db 16 dup(0) ;存储字符串转换的结果的缓存区dw 123,12666,1,8,3,38 ;入参,需要将这些10进制的数字,在命令行窗口显示出来
data endsstack segmentdw 64 dup(0)
stack endscode segment
start:;;初始化数据区mov ax,datamov ds,axmov bx,0;;初始化栈区mov ax,stackmov ss,axmov sp,080h;;准备调用数据mov dh,8 ;显示开始的行mov dl,3 ;显示开始的列mov si,48 ;入参的开始位置mov cx,6 ;入参的数量s:push cxpush dx;;清空输出缓存区call cls_buf;读取要转换的十进制数字mov ax,[si]add si,2;转换,并将结果存储在缓存区;mov ax,12666mov dh,8 ;显示开始的行mov dl,3 ;显示开始的列call dtoc;;显示结果mov cl,2 ;要显示的文字的属性pop dxcall show_strinc dh ;换行pop cxloop s mov ax,4c00hint 21hcls_buf:push sipush cxmov si,020hmov cx,8cls_s:mov ax,0mov [si],axadd si,2loop cls_spop cxpop siretdtoc: push simov si,020h;mov dx,0mov bx,0 ;记录除法的次数dtoc_s0:mov cx,10 ;除数为10call divdwpush cx ;;余数入栈mov cx,axor cx,dx ;;dx和ax必须同时为0inc bxjcxz dtoc_s1jmp short dtoc_s0dtoc_s1:mov cx,bxdtoc_s2:pop ax ;;余数,但由于除数为10,所以只需要aladd al,48mov [si],alinc siloop dtoc_s2pop siretdivdw: ;高16位除法push bxmov bx,0mov [bx],dxmov [bx+2],axmov [bx+4],cxmov dx,00 ;高16位mov ax,[bx] ;低16位div cx;ax 商 ;保存结果(1)mov [bx+6],ax;dx 余数;参与后续计算;mov dx,dxmov ax,[bx+2]div cx;ax 商mov [bx+8],ax;dx 余数mov [bx+10],dx;;;;;;;;;;输出计算结果mov dx,[bx+6]mov ax,[bx+8]mov cx,[bx+10]pop bxretshow_str: push axpush bxpush cxpush dxpush sipush dipush esmov si,020h;计算要存放内存的首地址,di;dh*160+dl*2mov al,160mul dhpush axmov al,2mul dladd di,axpop axadd di,ax;读取si处的内容,按要求存放到di处mov ax,0b800hmov es,ax;;;;;;;;;;;;;;;;;;;;;;;;;show_s0: push cx;cx <- ds:[si];如果cx为0,结束mov ch,0mov cl,[si]jcxz show_ok;接收 cl->ah, al <= ds:[si];es:[di] <= axmov ax,cx pop cxmov ah,clmov es:[di],axinc siadd di,2jmp short show_s0;;show_ok: pop cxpop espop dipop sipop dxpop cxpop bxpop axretcode ends
end start
3、运行效果
4、求教
这是笔者从学习汇编语言以来,目前碰到的最复杂的一个程序,除法(溢出)、模块化调用、受制于寄存器的数量... 笔者自己感觉写得一团糟,尽管结果是正确的。笔者想真心求教下:
1、是否有比较轻量级的汇编IDE,基于8086的,或配套本书的。汇编排错真心难;
2、是否有一些编程规范,模块化或函数化的规范(不同的模块是否可以像高级编程语言一样,分几个文件存储);
3、哪里能看到一些别人写得比较好的汇编代码或工程(但鉴于笔者目前的水平,可能也看不太懂)
相关文章:
汇编练习-1
1、要求 练习要求引自《汇编语言-第4版》实验10.3(P209页) -编程,将data段中的数据,以10进制的形式显示出来 data segment dw 123,12666,1,8,3,38 data ends 2、实现代码(可惜没找到csdn对8086汇编显示方式) assume cs:codedata segmentdw 16 dup(0) ;除…...
初识二叉树( 二)
初识二叉树 二 实现链式结构二叉树前中后序遍历遍历规则代码实现 结点个数以及高度等层序遍历判断是否为完全二叉树 实现链式结构二叉树 ⽤链表来表示⼀棵二叉树,即用链来指示元素的逻辑关系。通常的方法是链表中每个结点由三个域组成,数据域和左右指针…...
AcWing1077-cnblog
问题背景 给定一个树形结构的图,每个节点代表一个地点,每个节点有一个守卫的代价。我们希望以最低的代价在树的节点上放置守卫,使得整棵树的所有节点都被监控。可以通过三种方式覆盖一个节点: 由父节点监控。由子节点监控。自己…...
五、SpringBoot3实战(1)
一、SpringBoot3介绍 1.1 SpringBoot3简介 SpringBoot版本:3.0.5 https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started.introducing-spring-boot 到目前为止,你已经学习了多种配置Spring程序的方式…...
练习LabVIEW第三十三题
学习目标: 刚学了LabVIEW,在网上找了些题,练习一下LabVIEW,有不对不好不足的地方欢迎指正! 第三十三题: 用labview编写一个判断素数的程序 开始编写: LabVIEW判断素数,首先要搞…...
如何在服务器端对PDF和图像进行OCR处理
介绍 今天我想和大家分享一个我在研究技术资料时发现的很好玩的东西——Tesseract。这不仅仅是一个普通的库,而是一个用C语言编写的OCR神器,能够识别一大堆不同国家的语言。我一直在寻找能够处理各种文档的工具,而Tesseract就像是给了我一把…...
Windows 下实验视频降噪算法 MeshFlow 详细教程
MeshFlow视频降噪算法 Meshflow 视频降噪算法来自于 2017 年电子科技大学一篇高质量论文。 该论文提出了一个新的运动模型MeshFlow,它是一个空间平滑的稀疏运动场 (spatially smooth sparse motion field),其运动矢量 (motion vectors) 仅在网格顶点 (m…...
Python入门:如何正确的控制Python异步并发量(制并发量的关键技巧与易错点解析)
文章目录 📖 介绍 📖🏡 演示环境 🏡📒 异步并发量控制 📒📝 Python异步并发简介📝 为什么要限制并发量🎈 资源管理🎈 服务稳定性📝 新手容易犯的错误🎈 忽略并发量限制🎈 错误设置并发量📝 设置并发量要注意的事情🎈 了解任务类型🎈 考虑系统资…...
qt QCheckBox详解
QCheckBox 是 Qt 框架中的一个控件,用于创建复选框,允许用户进行选择和取消选择。它通常用于表单、设置界面和任何需要用户选择的场景。 QCheckBox继承自QAbstractButton类,因此继承了按钮的特性。它表示一个复选框,用户可以通过…...
PAT甲级-1041 Be Unique
题目 题目大意 从一组数字中选出第一个唯一出现的数,输出该数。如果没有,则输出None。 思路 哈希的思想,将数值作为索引,对应该数值出现的次数,然后遍历数组即可。 注意第一个数字是指数字的个数,不是数…...
【jvm】如何设置堆内存大小
目录 1. 使用命令行参数设置2. idea中设置3. 注意事项 1. 使用命令行参数设置 1.在Java命令后添加-Xms和-Xmx参数。2.-Xms参数用于设置JVM的初始堆内存大小,等价于-XX:InitialHeapSize。3.-Xmx参数用于设置JVM的最大堆内存大小,等价于-XX:MaxHeapSize。…...
kernel源码分析 do_msgsnd read_msg
笔者分析的源码是v 5.11.22 链接:msg.c - ipc/msg.c - Linux source code v5.11.22 - Bootlin do_msgsnd static long do_msgsnd(int msqid, long mtype, void __user *mtext,size_t msgsz, int msgflg) {struct msg_queue *msq;struct msg_msg *msg;int err;str…...
掌握 CTE 技巧,实现连续日期和月份的 SQL 报表统计
在 SQL 查询中,报表统计往往涉及到特定时间段内的数据汇总,如每日、每月的销售数据等。然而,面对缺少数据的日期或月份,传统 SQL 查询可能会直接跳过这些日期,使得输出的报表在视觉上并不连续。本文将展示如何利用 CTE…...
【表格解决问题】EXCEL行数过多,WPS如何按逐行分别打印多个纸张中
1 问题描述 如图:我的表格行数太多了。打印在一张纸上有点不太好看 2 解决方式 Step01:先选中你需要打印的部分,找到【页面】->【打印区域】->【设置打印区域】 Step02:先选中一行,找到【插入分页符】 Step0…...
Maven讲解从基础到高级配置与实践
一、基础认知 1.1 Maven 的主要作用 Maven 主要是用来管理 Java 项目构建流程的工具,包括以下几个方面: 依赖管理:通过 POM.xml 文件管理项目的外部依赖库,不同版本的依赖包可以通过 Maven 中央仓库自动下载,减少了…...
Vue3组件式父子传值
下面是使用 <script setup> 语法的 Vue 3 组件之间传值的示例。 示例 1:使用 Props 和 Emits 父组件 <template><div><h1>父组件</h1><ChildComponent :message="parentMessage" @reply="handleReply" /><p>…...
网页自动化测试和爬虫:Selenium库入门与进阶
网页自动化测试和爬虫:Selenium库入门与进阶 在现代Web开发和数据分析中,自动化测试和数据采集成为了开发流程中的重要部分。Python 的 Selenium 库是一种强大的工具,不仅用于网页自动化测试,也在网页爬虫中得到了广泛的应用。本…...
Cells 单元
Goto Data Grid 数据网格 Cells 单元 Content Alignment 内容对齐 显示数值的数据网格单元格会将其内容向右对齐。显示其他类型数据的单元格将其内容向左排列。若要更改单元格内容对齐方式,请处理 ColumnView.RowCellDefaultAlignment 事件。 Selection Modes 选…...
2024/11/2 安卓创建首页界面
Gradle 8.7 bin是指Gradle 8.7版本的二进制包,通常以.zip或.tar.gz格式提供。这个二进制包包含了运行Gradle所需的所有文件,用户可以直接下载并解压使用,无需从源代码编译。 首先了解最常用的布局 线性布局(从上到下&#x…...
SpringSession源码分析
默认对常规Session的理解和使用,如何使用Set-Cookie。 Maven库 常见的spring-session-data-redis依赖spring-session-core <dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-core</artifactId&…...
如何免费快速转换音频格式:fre:ac音频转换器完整指南
如何免费快速转换音频格式:fre:ac音频转换器完整指南 【免费下载链接】freac The fre:ac audio converter project 项目地址: https://gitcode.com/gh_mirrors/fr/freac 想要高效处理音频文件却不想花钱购买专业软件?fre:ac音频转换器是您的最佳选…...
Huey终极指南:为什么这个轻量级Python任务队列成为开发者的首选?
Huey终极指南:为什么这个轻量级Python任务队列成为开发者的首选? 【免费下载链接】huey a little task queue for python 项目地址: https://gitcode.com/gh_mirrors/hu/huey 在Python开发世界中,高效处理异步任务和定时任务是提升应用…...
WebRTC信令交换实战:从Socket.io到RTCPeerConnection的完整流程解析
1. WebRTC信令交换的核心逻辑 第一次接触WebRTC时,我被它"点对点直接通信"的特性吸引,但很快发现真正的难点在于如何让两个设备找到彼此——这就是信令交换要解决的问题。信令交换就像两个陌生人交换电话号码的过程,只不过这里交换…...
Vue与原生HTML页面无缝通信的iframe实现方案
1. 为什么需要Vue与原生HTML页面通信? 在实际开发中,我们经常会遇到这样的场景:一个Vue项目需要集成第三方提供的HTML页面,比如支付网关、地图服务、视频播放器等。这些页面通常都是独立开发的,使用原生HTML/JavaScrip…...
ssm+java2026年毕设唐山铂悦山养老院护理管理【源码+论文】
本系统(程序源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、选题背景关于养老院医护管理问题的研究,现有研究主要以医院信息管理系统(HIS)或综合性养老服务平台…...
保姆级教程:在Ubuntu 22.04上用RTX 4090复现DepthAnything V2(含Open3D点云可视化避坑指南)
保姆级教程:在Ubuntu 22.04上用RTX 4090复现DepthAnything V2(含Open3D点云可视化避坑指南) 深度估计技术正在重塑计算机视觉领域,而DepthAnything V2凭借其轻量级架构和精细的深度预测能力,成为当前最受关注的开源模型…...
原神抽卡记录导出工具:一键备份分析你的抽卡历史数据
原神抽卡记录导出工具:一键备份分析你的抽卡历史数据 【免费下载链接】genshin-wish-export biuuu/genshin-wish-export - 一个使用Electron制作的原神祈愿记录导出工具,它可以通过读取游戏日志或代理模式获取访问游戏祈愿记录API所需的authKey。 项目…...
如何用MAT修复老照片?3个实用技巧让破损图像重获新生
如何用MAT修复老照片?3个实用技巧让破损图像重获新生 【免费下载链接】MAT MAT: Mask-Aware Transformer for Large Hole Image Inpainting 项目地址: https://gitcode.com/gh_mirrors/ma/MAT 想象一下,你从祖辈那里继承了一张珍贵的黑白老照片&a…...
3步实现Axure RP本地化界面优化:开源工具助力中文设计环境构建
3步实现Axure RP本地化界面优化:开源工具助力中文设计环境构建 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包,不定期更新。支持 Axure 9、Axure 10。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-c…...
智能风扇管家:FanControl如何让你的电脑安静又高效
智能风扇管家:FanControl如何让你的电脑安静又高效 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/Fa…...
