当前位置: 首页 > news >正文

汇编实现从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清零

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 0910作业+思维导图
  • SMA2:代码实现详解——Image Encoder篇(Hiera章)
  • Proxyless Service Mesh:下一代微服务架构体系
  • 【HarmonyOS NEXT】实现网络图片保存到手机相册
  • 音视频直播应用场景探讨之RTMP推流还是GB28181接入?
  • javase复习day22泛型、set、数据结构
  • USBCANFD卡在新能源BMS上位机的应用
  • Android CustomDialog圆角背景不生效的问题
  • String字符串
  • uniapp(H5)设置反向代理,设置成功后页面报错
  • AI教你学Python 第4天:函数和模块
  • MySQL下载安装
  • 可信多视图分类(TCM ETCM)算法实现数字序列的分类---基因致病的诊断
  • JAVA学习-练习试用Java实现“子集 II”
  • 代码随想录训练营 Day58打卡 图论part08 拓扑排序 dijkstra朴素版 + 堆优化版
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • Java 多线程编程之:notify 和 wait 用法
  • Java深入 - 深入理解Java集合
  • Java-详解HashMap
  • Sass 快速入门教程
  • vue:响应原理
  • Webpack 4 学习01(基础配置)
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 每天一个设计模式之命令模式
  • 详解NodeJs流之一
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #pragma pack(1)
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (07)Hive——窗口函数详解
  • (1)STL算法之遍历容器
  • (2)STL算法之元素计数
  • (Oracle)SQL优化基础(三):看懂执行计划顺序
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (一)springboot2.7.6集成activit5.23.0之集成引擎
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)http-server应用
  • ./configure、make、make install 命令
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .NET企业级应用架构设计系列之技术选型
  • //TODO 注释的作用
  • :“Failed to access IIS metabase”解决方法
  • ?.的用法
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...
  • [000-01-018].第3节:Linux环境下ElasticSearch环境搭建
  • [20190416]完善shared latch测试脚本2.txt
  • [Algorithm][动态规划][路径问题][不同路径][不同路径Ⅱ][珠宝的最高价值]详细讲解