王爽 汇编语言 实验七
最近在看王爽老师的汇编语言,写的确实很好,简单易懂,引人入胜!相比较我们学校一些老师的书籍,那简直是··· 惨绝人寰
先说一下思路:
题目的简单表述就是:将一个段的内容复制到另一个段,不过要排列成固定的形式,然后还要做一个计算,并且将结果也保存在后面的段中。
数据的读取:
汇编源程序中定义的同一个段中的数据是连续排放的(不同的段中的数据则会另起一个地址),所以我们可以将data段中的数据看成三个连续排放的数组:
- 它们各自的起始地址不一样。
- 因为数组成员的长度不一样,所以需要两个变量控制各个数组内成员的访问,si、di。
- 用一个变量来控制各个数组成员的访问,bx
- 在结构体内部直接加上相对偏移地址即可。
assume cs:code
data segmentdb '1975','1976','1977','1978','1979','1980','1981','1982','1983'db '1984','1985','1986','1987','1988','1989','1990','1991','1992'db '1993','1994','1995'dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226dw 11542,14430,15257,17800
data endstable segmentdb 21 dup ('year summ ne ?? ')
table endscode segment
start: mov ax,datamov ds,axmov ax,tablemov es,axmov ax,0mov bx,0mov dx,0;存储四字节数据的高两字节mov si,0mov di,0mov cx,21s:mov ax,[si];年份mov es:[bx],axmov dx,[si+2]mov es:[bx+2],dxmov ax,[84+si];收入。84 = 4字节*21mov es:[bx+5],axmov dx,[84+si+2]mov es:[bx+7],dxdiv word ptr [168+di];平均工资。先计算人均收入。168 = 84+ 4字节*21mov es:[bx+13],axmov ax,[168+di];雇员mov es:[bx+10],axadd bx,16;bx控制结构体数组成员的存入add si,4;si控制年份、收入的读取add di,2;di控制雇员数的读取loop smov ax,4c00hint 21h
code ends
end start
程序完成之后,我也搜了一些其他人的程序,各式各样,有多个loop的、有用到栈的,反观我自己写的程序,我觉得没必要那么复杂,简单的思路足矣。
补充:将loop那段程序改写得更加结构化如下:
s:mov ax,[si]mov es:[bx],axmov dx,[si+2]mov es:[bx].2,dx;结构体mov ax,84[si];数组mov es:[bx].5,axmov dx,84[si+2]mov es:[bx].7,dxdiv word ptr 168[di]mov es:[bx].13,axmov ax,168[di]mov es:[bx].10,axadd bx,16add si,4add di,2loop s
王爽 汇编语言 实验七相关推荐
- 8086汇编学习小记-王爽汇编语言实验12
8086汇编学习小记-王爽汇编语言实验12 0号中断处理程序,开始安装在0000:0200处的程序最后用死循环导致显示不出'divided error',改成直接退出就正常显示了.注意修改ss,sp之 ...
- 王爽 汇编语言 实验全部答案
实验一 实验二 实验三 实验四 实验五 实验六 实验七 实验八 实验九 实验十 实验十一 实验十二 实验十三 实验十四 实验十五 (未完持续,正在写ing)
- 王爽汇编语言 实验11
第十章的实验11出的有点不同.一是相对简单一些,还有似乎没有用到太多本章的内容.比如MOVSB 就没用到.下面是我的代码 1 assume ds:datasg, cs:code 2 datas ...
- 王爽汇编语言 实验5
(1).1 当debug未执行我们的代码段指令时,从075A:0000开始的256字节是PSP段(之前的实验中已经进行过相关解释),而此时我们定义的数据是从075A:0100开始存放的.这个时候D ...
- 菜鸡记录-王爽-汇编语言-实验十(编写子程序-解决除法溢出)
题目: 代码: assume cs:code,ss:stackstack segmentdw 8 dup(0) stack endscode segment start:mov ax,stackmov ...
- 菜鸡记录-王爽-汇编语言-实验十(编写子程序-显示字符串)
题目: 代码: assume cs:codedata segmentdb 'Welcome to masm!',0data endscode segmentstart: mov dh,8mov dl, ...
- 王爽汇编语言实验7一个很好的解法(转)
assume cs:codesg,ds:datadata segmentdb '1975','1976','1977','1978','1979','1980','1981','1982','1983 ...
- 王爽汇编语言 实验14
assume cs:codecode segment start:;年份 mov al,9out 70h,alin al,71hmov ah,almov cl,4shr ah,cland al,000 ...
- 王爽汇编语言 实验15
解: assume cs:codestack segmentdb 128 dup(0) stack endscode segment start:mov ax,stackmov ss,axmov sp ...
最新文章
- iOS和android运存机制,为什么苹果4GB运存却比安卓8GB更丝滑流畅?看完立马涨知识了...
- 7.4 程序示例--PCA for 加速学习-机器学习笔记-斯坦福吴恩达教授
- Python 绘图问题:Matplotlib中plt.rcParams[]使用方法 rcsetup.py matplotlibrc
- 实现strstr库函数功能
- ubuntu上使用sqlite3
- 「零门槛多语言 Python/C/C# 通用思想学习系列」第一篇:经典HelloWorld
- [js] 获取浏览器当前页面的滚动条高度的兼容写法
- Spring Boot引起的“堆外内存泄漏”排查及经验总结
- 使用Jenkins+Sonarqueb进行自动化测试和代码质量检测
- 关系型数据库与NoSQL数据库简述
- Maven实战---两个war包的调用
- 听说下雨天,子序列和孤单的你更配哦~
- 目标检测(Object Detection)综述--R-CNN/Fast R-CNN/Faster R-CNN/YOLO/SSD
- Redis 服务器安装
- spring boot / cloud (二十) 相同服务,发布不同版本,支撑并行的业务需求
- github下载的代码、怎么使用 python_Python学习20-补充内容之GitHub安装使用
- VBScript基础
- windows下 C++ openCV配置及x86编译(傻瓜式教程)
- python文档字符串和注释的区别,加载模块时,Python文档字符串和注释是否存储在内存中?...
- JITSI开源视频直播