汇编练习-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&…...

IIC
IIC 目录 IIC BH1750型号的光照传感器 IIC通信协议 iic物理层 IIC软件层协议 -- 那么一主多从,怎么选中与指定的从机通信呢? 从机设备地址 -- 从手册中查看 IIC 写操作 IIC 读操作 硬件IIC和模拟 IIC 使用 模拟 IIC 使用 !&…...

LLM Observability: Azure OpenAI (一)
作者:来自 Elastic Vinay Chandrasekhar•Andres Rodriguez 我们很高兴地宣布 Azure OpenAI 集成现已全面上市,它提供了对 Azure OpenAI 服务性能和使用的全面可观察性!另请参阅本博客的第 2 部分 虽然我们已经提供了对 LLM 环境的可视性一段…...

qt QBrush详解
1、概述 QBrush是Qt框架中的一个基本图形对象类,它主要用于定义图形的填充模式。QBrush可以用于填充如矩形、椭圆形、多边形等形状,也可以用于绘制背景等。通过QBrush,可以设置填充的颜色、样式(如实心、渐变、纹理等)…...

Excel函数CUnique连接合并指定区域的唯一值
上一篇文章向大家介绍了如何使用VBA在低版本Excel中创建unique函数的方法,今天我跟大家分享一下如何使用函数连接指定区域的唯一值,也就是将unique函数获取的唯一值连接合并成一个,并指定连接符。 同样,我们需要先创建一个自定义的…...

机械革命屏幕设置为RGB
机械革命屏幕设置为RGB 如何设为机械革命屏幕显示为RGB如何设置1.win菜单下输入“显卡控制中心”2.选择显示器3.设置为RGB4.饱和度大家设为自己舒服的就行5.调整亮度 参考来源 如何设为机械革命屏幕显示为RGB 之前买的显示器,感觉调成sRGB看起来非常舒服。就想着是…...

开源项目-投票管理系统
哈喽,大家好,今天主要给大家带来一个开源项目-投票管理系统 投票管理系统主要有首页,发起投票,管理投票,参与投票,查看投票等功能 首页 为用户提供了一键导航到各个功能模块的便捷途径。 新增投票 用户可以在此轻松创建新的投票活动,设置投票主题、选项等信息。 管理…...

LeetCode 104.二叉树的最大深度
题目描述 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3 示例 2: 输入:root [1…...

Android启动流程_Init阶段
前言 本文将会介绍 Android 启动流程,将基于 Android 10 代码逻辑介绍原生启动过程。 bootloader 上电 -> 加载 recovery 镜像或者 boot 镜像 -> linux kernel 启动 -> 加载 init 进程 -> 加载 zygote 进程 -> systemserver 进程 -> 系统启动 …...
萤火虫算法优化BILSTM神经网络多输入回归分析
目录 LSTM的基本定义 LSTM实现的步骤 BILSTM神经网络 代码 结果分析 展望 完整代码下载:的MATALB代码(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/download/abc991835105/88755564 背影 bp神经网络是一种成熟的神经网络,应用非常广,本文用萤火虫算法…...

在线QP(QuotedPrintable)编码解码工具
具体前往:Quoted-printable在线编码解码工具-将给定文本编码为:可打印字符引用编码(简称:QP编码),也支持在线解码...