汇编语言 【大练习】寻址方式在结构化访数据访问中的应用
题源:王爽《汇编语言》第八章 实验七
题目要求
汇编易错点
用mov赋值的时候,操作数左右写反,本来想写mov ax,5
却写成mov 5,ax
不看字节长度就直接写入,覆盖后面数据:比如把ax
中的数据写入以byte
形式存储的连续数据区
一些小技巧
当寄存器、段寄存器不够用时,将临时数据存入数据段或栈段中,等需要使用的时候再取出
本题思路
循环嵌套(两层)
外层大循环控制tablesg
段的每一行
内层3个小循环控制分别把年份、收入、雇员数数写入tablesg
段中,3个小循环之后用div
除法指令计算人均收入,也写入tablesg
段中
执行过程截图
debug模式
执行指令之前,内存中初始数据展示:
第一次外循环中,执行完第一个内循环year
第一次外循环中,执行完第二个内循环income
第一次外循环中,执行完第三个内循环income
第一次外循环中,执行完后续除法运算
执行完所有外循环后的结果
执行完毕~
代码
以下可复制
assume cs:codesg,ds:datasg,ds:tablesg,ss:stacksg
datasg segmentdb '1975','1976','1977','1978','1979','1980','1981','1982','1983'db '1984','1985','1986','1987','1988','1989','1990','1991','1992'db '1993','1994','1995';以上是表示21年的21个字符串 21*4=84个字节 地址(十进制)0~83dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000;以上是表示21年公司总收入的21个dword型数据 21*4=84个字节 地址(十进制)84~167dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226dw 11542,14430,15257,17800;以上是表示21年公司雇员人数的21个word型数据 21*2=42个字节 地址(十进制)168~209dw 0,84,168;临时存储偏移量 210 211 212datasg endstablesg segmentdb 21 dup('year summ ne ?? ')
tablesg endsstacksg segment stackdw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;多给了两个
stacksg endscodesg segment
start: ;ax 临时;bx 定位tablesg的行;cx 循环次数;dx;ds 存放datasg首地址;si 利用内存空间的取出和存入,逐字节读取datasg中的:年份\收入\雇员;datasg首地址放进 段寄存器ds 中mov ax,datasgmov ds,ax;tablesg的首地址放进 段寄存器es 中mov ax,tablesgmov es,ax;bx定位tablesg的行mov bx,0;循环21次mov cx,21
line: push cx ;cx值存入栈mov cx,4mov di,0year: mov ax,ds:210 ;从内存中取出simov si,axmov al,ds:[si] ;ds中年份数据放进al中mov es:[bx+di],al ;al数据放进tablesg第bx行di位置inc siinc di ;si指向下一个mov ds:210,si ;si存到内存中loop yearmov di,5 ;4是空格,收入从5开始mov cx,2
income: mov ax,ds:212 ;从内存中取出simov si,axmov ax,ds:[si] ;ds中收入数据放进ax中mov es:[bx+di],ax ;ax数据放进tablesg第bx行di位置inc di ;tablesg偏移inc diinc si ;datasg偏移inc simov ds:212,si ;si存到内存中loop incomemov di,10 ;9是空格,雇员从10开始mov cx,2
people: mov ax,ds:214 ;从内存中取出simov si,axmov al,ds:[si] ;ds中雇员数据放进al中mov es:[bx+di],al ;al数据放进tablesg第bx行di位置inc si ;si指向下一个inc di mov ds:214,si ;si存到内存中loop peopleaver: mov ax,es:[bx+5] ;被除数(收入)4字节=32位,ax存放低16位,从当前行位置5取出mov dx,es:[bx+7] ;dx存放高16位,从当前行位置7取出div word ptr es:[bx+10] ;除数(雇员)16位,从当前行位置10取出,与ax,dx中的被除数相除,商存在ax中mov es:[bx+13],ax ;al商中的商放进当前行位置13处pop cx ;cx的值pop回去add bx,10h ;下一行loop linemov ax,4c00hint 21h
codesg ends
end start
汇编语言 【大练习】寻址方式在结构化访数据访问中的应用相关推荐
- 王爽版汇编语言实验7 寻址方式在结构化数据访问中的应用
实验在P172 代码如下 assume cs:codesg,ds:datadata segmentdb'1975','1976','1977','1978','1979','1980','1981', ...
- 【汇编语言(第3版)王爽】试验7 寻址方式在接过话数据访问中的应用(代码+注释)
assume cs:codesg, es:table , ds:datadata segmentdb '1975','1976','1977','1978','1979','1980','1981', ...
- 解决 王爽写的汇编语言的第七个验七- 寻址方式在结构化数据访问中的应用
原文: 汇编语言-(第三版) 王爽-著 (实验七) 寻址方式在结构化数据访问中的应用 https://www.52pojie.cn/thread-1241289-1-1.html (出处: 吾爱破解论 ...
- Atitit 大json文件的结构化查看解决方案,高性能的jsonview attilax总结.docx
Atitit 大json文件的结构化查看解决方案,高性能的jsonview attilax总结.docx 1.1. 实现目标:1 1.2. 实现key与value类型的..一直分析到非 jsonob ...
- 按一行一行的方法将一个文本文件复制到另一个文件中_大文件上的结构化数据计算示例...
[摘要] 本文分析大文件计算的实现原理,如过滤.聚合计算.添加计算列.排序.分组聚合.topN 等,以及利用并行计算来提高计算速度,并用 esProc SPL 举例说明如何用简洁的脚本实现大文件计算. ...
- 重做实验七 寻址方式在结构化数据访问中的应用
先处理第一行所有数据: ;实验七 寻址方式在结构化数据访问中的应用;编程 将data段中的数据 按照如下格式写到table段中,并计算21年中的人均收入(取整) ;结果也按照下面的格式保存在table ...
- 实验七 寻址方式在结构化数据访问中的应用
下面的程序中,已经定义好了这些数据 ;实验七 寻址方式在结构化数据访问中的应用;编程 将data段中的数据 按照如下格式写到table段中,并计算21年中的人均收入(取整) ;结果也按照下面的格式保存 ...
- 基于大规模结构化病例数据的新型冠状病毒传播特征和感染人群分析
来源: 专知 本文约510字,建议阅读5分钟 本文详细分析了新型冠状肺炎总体发病性别和年龄分布特点.主要感染原因.潜伏期特点及疫情趋势等特征. 2020 年年初,新型冠状病毒感染的肺炎 (COVID ...
- 2020 CCF BDCI 非结构化商业文本信息中隐私信息识别TOP5方案
2020 CCF BDCI 非结构化商业文本信息中隐私信息识别TOP5方案 1 写在前面 在本次CCF BDCI的非结构化商业文本信息中隐私信息识别比赛中,我们团队水煮毛血旺在初赛A榜B榜排名第六, ...
最新文章
- 笔记本电脑无线被禁用 是哪个服务器,无线网关,小编教你笔记本无线网络禁用后怎么开启...
- Unity 3D 2019.3.12版本创建一个按钮,并为该按钮添加点击Click的消息响应函数以及点击按钮切换场景
- 服务器系统使用30金手指,seo专业培训拾首选金手指三:自动设置锚文本的
- mysql模板标签数据库设计_MySQL数据库规范化设计
- php static与self,PHP5.3新特性static与self区别
- python文本风格_以写代学:python 良好的代码风格实例解析
- 算法(27)-最大系列
- JavaScript开发中几个常用知识点总结
- PHP授权系统+盗版追踪+域名IP双授权+在线加密系统
- Oracle DBA必须学会的11个Linux基本命令
- 解决phpcms模版设置中不能显示栏目首页模板,栏目列表页模板,内容页模板等下拉菜单选项的问题!...
- 密码学基础(三):非对称加密(RSA算法原理)
- php如何去除字符串中的空格,php如何去除字符串中的空格
- 单片机中断实验 EX0
- python中day_python day02
- 【BZOJ4134】【树上博弈】【博弈论】【线段树合并】ljw和lzr的hack比赛 题解
- 【H5钢琴示例代码】
- java 立体几何体中心点,高中数学立体几何重心考点的解题技巧_招生指南
- 华为路由器接口IP地址如何配置与查看
- Docker创始人兼CTO宣布离职;特斯拉被爆处于破产边缘;iOS更新,支持京沪地铁卡;谷歌安卓侵权案面临88亿美元赔款丨Q新闻...