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

server/2024/10/21 3:55:05/

题目:

编写一段主引导扇区程序,计算从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.ppmy.cn/server/119482.html

相关文章

play-with-docker使用指南

Play-with-Docker(PWD)是一个在线平台,提供免费的 Docker 实验环境。它允许用户在浏览器中创建和管理 Docker 容器,适合学习和实验。国内访问需要借助于魔法工具,否则可能无法访问哦。 网站地址:https://labs.play-with-docker.com/ 一、登录play-with-docker 点击页面上…

VScode相关问题与解决

VScode只是一个文档编辑器,类似于我们使用的记事本。我们在编辑完文档之后呢一定要保存。 文档编辑器加上它可以安装不同的插件,就可以进行程序开发。 1.写c文件时找不到头文件stdio.h 在linux下我们gcc命令来编译c文件时,会遇到找不到头文…

【运维】自定义exporter

文章目录 环境准备代码编写搭建开发环境和包依赖创建main文件并进行初始化添加prometheus metrics endpoint并监听服务端口通过模拟url获取监控项的值通过编写函数获取监控项的值声明prometheus指标信息声明prometheus接口框架在main函数中声明exporter并注册 完整代码如下 环境…

Zookeeper工作机制、特点、数据结构、应用场景、配置参数解读

ZK工作机制 从涉及模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,zk就负责通知已在zk上注册的那些观察者做出相应…

POI操作EXCEL增加下拉框

文章目录 POI操作EXCEL增加下拉框 POI操作EXCEL增加下拉框 有时候通过excel将数据批量导入到系统,而业务操作人员对于一些列不想手动输入,而是采用下拉框的方式来进行选择 采用隐藏sheet页的方式来进行操作 String sheetName "supplier_hidden_s…

【线性回归模型实战】

梳理步骤 1、获取数据集 2、选用线性回归模型 f ( x ) w x b f(x)wxb f(x)wxb 3、损失函数 ‘ l o s s ( f ( x ) − y ) 2 ( w x − y ) 2 ‘ loss(f(x)-y)^2(wx-y)^2 ‘loss(f(x)−y)2(wx−y)2‘ 4、梯度下降求导更新参数 5、设置训练轮次 6、更新完参数的模型预测 开始…

机器狗与无人机空地协调技术分析

随着科技的飞速发展,机器狗与无人机作为智能机器人领域的杰出代表,正逐步在军事侦察、灾害救援、环境监测、农业植保等多个领域展现出巨大的应用潜力。本文旨在深入探讨机器狗与无人机之间的空地协调技术,分析其在复杂环境中的协同作业机制、…

【Nginx】在 Docker 上安装 Nginx 的详细指南

目录 1. 引言2. 准备工作2.1 安装 Docker在 Ubuntu 上安装 Docker在 CentOS 上安装 Docker 2.2 拉取 Nginx 镜像 3. 创建 Nginx 配置文件4. 创建 Dockerfile5. 准备 SSL 证书6. 构建 Docker 镜像7. 运行 Nginx 容器8. 测试配置9. 续订和更新 SSL 证书总结参考资料 1. 引言 Doc…