汇编实现从1加到1000(《X86汇编语言 从实模式到保护模式(第2版》) 第135页第2题解答)

题目:

编写一段主引导扇区程序,计算从1加到1000的和,并在屏幕上显示结果

输出结果:

代码:

jmp near start
text db '1+2+3+...+1000='
start:mov ax,0x07c0mov ds,ax     ;数据段从主引导区开始mov ax,0xb800mov es,ax     ;显存地址从B8000物理地址开始mov si,text   ;si指向text的第一个字符mov di,0mov cx,start-texts1:mov al,[si]mov [es:di],al ;保存字符inc dimov byte [es:di],0x07 ;保存字符属性:黑底白字inc siinc diloop s1 ;显示'1+2+3+...+1000='xor ax,axxor dx,dxmov cx,1000s2:add ax,cxadc dx,0 ;dx=0+CFloop s2 ;累加1~1000,结果为dx:ax(dx高16位,ax低16位);此循环结束后,cx为0不用再次清零mov ss,cx ;设置栈的段地址mov sp,cx ;设置栈指针mov bx,10 ;设置除数s3:inc cx ;cx记录条件循环次数(数位+1)div bx ;(dx:ax)÷bx(为10)=ax......dxor dl,0x30 ;把数字转换为字符push dx ;余数进栈保存xor dx,dx ;dx清0准备下一次除cmp ax,0 ;商为0提前退出,提高效率jne s3s4:pop dxmov [es:di],dlinc dimov byte [es:di],0x07inc diloop s4 ;显示各个数位,可参考s1循环jmp near $times 510-($-$$) db 0 ;填满至512字节db 0x55,0xaa ;结尾格式必须写

点我下载编译后产生的bin文件(写入主引导扇区后可在VirtualBox上运行)

具体怎么将bin文件写入主引导扇区见此文汇编语言在虚拟机中输出“Hello World!”

 注意事项:

1.s1循环中,最后一定要加inc di,否则新写入的数据会被覆盖!

2.s3循环中,一定是保存完dx后再为dx清零

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

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

相关文章

2024 年 .NET 高效开发精选实用类库

目录 前言 1、Entity Framework Core 2、Newtonsoft.Json 3、AutoMapper 4、HttpClient 5、Serilog 6、Hangfire 7、xUnit 8、OxyPlot 9、Task Parallel Library (TPL) 10、Elasticsearch.NET 和 NEST 总结 最后 前言 在平时开发中,好的类库能帮助我们…

华火10号店隆重开业,千城万店打造增长新引擎

风吹洛阳城,花开盛唐梦!9月11日,相约在洛阳,在时光、空间与浪漫的交错中,华火10号店盛大开业。此次开业将为洛阳市民提供领先行业的绿色厨电产品,营造高端化、体验化、智慧化的门店氛围,打造极致…

说说synchronized的锁升级过程

在 JDK 1.6之前,synchronized 是一个重量级、效率比较低下的锁,但是在JDK 1.6后,JVM 为了提高锁的获取与释放效,,对 synchronized 进行了优化,引入了偏向锁和轻量级锁,至此,锁的状态有四种&…

echarts 3D地图

通过echats echats-gl 实现的3D地图页面。 先上效果图: 1.通过外边js引入方式,引入必要的js压缩文件 <script src="/static/vue-v2/vue.js"></script> <script src="/static/assets/echarts-v5/echarts.min.js"></script> &l…

从头开始学MyBatis—02基于xml和注解分别实现的增删改查

首先介绍此次使用的数据库结构&#xff0c;然后引出注意事项。 通过基于xml和基于注解的方式分别实现了增删改查&#xff0c;还有获取参数值、返回值的不同类型对比&#xff0c;帮助大家一次性掌握两种代码编写能力。 目录 数据库 数据库表 实体类 对应的实体类如下&#x…

Vue2 qrcode+html2canvas 实现二维码的生成和保存

1.安装 npm install qrcode npm install html2canvas 2.引用 import QRCode from qrcode import html2canvas from html2canvas 效果&#xff1a; 1. 二维码生成&#xff1a; 下载二维码图片&#xff1a; 二维码的内容&#xff1a; 实现代码&#xff1a; <template>…

重学SpringBoot3-SpringApplicationRunListener

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-SpringApplicationRunListener 1. 基本作用2. 如何实现2.1. 创建SpringApplicationRunListener2.2. 注册SpringApplicationRunListener2.3. 完整示例 3.…

初始爬虫5

响应码&#xff1a; 数据处理&#xff1a; re模块&#xff08;正则表达式&#xff09; re模块是Python中用于正则表达式操作的标准库。它提供了一些功能强大的方法来执行模式匹配和文本处理。以下是re模块的一些常见用法及其详细说明&#xff1a; 1. 基本用法 1.1 匹配模式 …

大势智慧与山东省国土测绘院签署战略合作协议

9月6日&#xff0c;山东省国土测绘院&#xff08;后简称山东院&#xff09;与武汉大势智慧科技有限公司&#xff08;后简称大势智慧&#xff09;签署战略合作协议。 山东院院长田中原、卫星应用中心主任相恒茂、基础测绘中心主任魏国忠、卫星应用中心高级工程师张奇伟&#xf…

记一次实战中对fastjson waf的绕过

最近遇到一个fastjson的站&#xff0c;很明显是有fastjson漏洞的&#xff0c;因为type这种字符&#xff0c;fastjson特征很明显的字符都被过滤了 于是开始了绕过之旅&#xff0c;顺便来学习一下如何waf 编码绕过 去网上搜索还是有绕过waf的文章&#xff0c;下面来分析一手&a…

性能测试-断言+自学说明(十二)

一、响应断言 需求;jmeter请求百度&#xff0c;断言响应结果中是否包含“百度一下&#xff0c;你就知道” 1、位置&#xff1a; http请求-断言-响应断言 2、类型 响应文本&#xff1a;断言响应体中包含的字符串 响应代码&#xff1a;断言响应状态码 3、断言步骤&#xf…

全文带你轻松备考OCM

OCM&#xff0c;作为Oracle公司授予的顶级专业认证&#xff0c;是数据库领域从业者梦寐以求的技术巅峰标志。它不仅是对个人技术深度与广度的全面肯定&#xff0c;更是职业道路上的一块重要里程碑。在踏上这段挑战之旅前&#xff0c;深入洞察OCM认证的精髓、考试细节及备考策略…

想要快速准备好性能数据?方法这不就来了!

性能测试的一般流程 收集性能需求——>编写性能脚本——>执行性能测试——>分析测试报告——>系统性能调优。 在收集性能需求后&#xff0c;我们会思考&#xff1a; 1.负载测试时并发时需要多少数据&#xff1f;例&#xff1a;登录&#xff1b; 2.DB数据是否和…

Spring-cloud-gateway报错问题总结

1. 访问接口出现 There was an unexpected error (typeService Unavailable, status503).Unable to find instance for order 假设我们有服务 spring-appication-name: order 但命名路由id 也为order 就会出现这类错误 因为 gateway 有默认路由

喜讯!和鲸科技荣获「2024 爱分析·数据智能优秀厂商」

9 月 13 日&#xff0c;2024 爱分析第六届数据智能高峰论坛圆满举办。会上正式公布了“2024 爱分析数据智能优秀厂商”&#xff0c;和鲸科技凭借在数据智能领域内的卓越成果与创新应用成功入选。 2024爱分析数据智能优秀厂商奖项旨在评选出在数据智能领域&#xff0c;综合实力突…

用Druid连接池,出现系统找不到指定路径的解决方案

运行时抛出异常&#xff08;系统找不到指定路径&#xff09;&#xff1a; 解决方法&#xff1a; 用 . 代替项目名就可以成功运行

Weblogic部署

要安装weblogic&#xff0c;首先要有java环境&#xff0c;因此需要先安装jdk。 这里需要注意&#xff0c;weblogic版本不同&#xff0c;对应的jdk版本也不同&#xff0c;我在这里就踩了很多坑&#xff0c;我这里下载的是fmw_12.2.1.4.0_wls_lite_generic.jar对应的是jdk-8u333…

冯诺依曼体结构与系统

冯诺依曼结构 我们的计算机&#xff0c;以及服务器&#xff0c;还有我我们日常使用的洗衣机都遵循冯诺依曼体结构。 以我们日常使用qq聊天时举例&#xff0c;冯诺依曼体结构可以这样画 截至目前&#xff0c;我们所认识的计算机&#xff0c;都是有一个个的硬件组件组成 输入单元…

SpringBoot Jar 包加密防止反编译实战

今天给大家分享一个 SpringBoot 程序 Jar 包加密的方式&#xff0c;通过代码加密可以实现无法反编译。 应用场景就是当需要把公司的产品部署到友方公司或者其他公司时&#xff0c;可以防止客户直接反编译出来源码&#xff0c;大大提升代码的安全性。 版本 springboot 2.6.8j…

rabbitmq容器化部署

需求 容器化部署rabbitmq服务 部署服务 找到如下官网信息版本 官网版本发布信息 这里看到最新版本是3.13版本&#xff0c;这里在3.13中找一个版本下载容器镜像即可。 找到dockrhub.com中 找到3.13.2版本镜像。 容器服务安装此处省略 现在下载容器镜像需要配置容器代理 ~#…