同一段里的数据是紧挨着放置的

分成 4 部分

  1. 填写年份
  2. 填写收入
  3. 填写雇员数目
  4. 计算人均收入并填写

由于前两部分移动的数据量是一致的,所以可以合并到一起写。
第三部分和第二部分的区别是循环的次数少了一半。
计算人均收入重点在于 被除数的高位和低位。

难点在于不同代码段之间的寻址。

代码

assume cs:codesg
//数据的源地址
data segment
db '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,197514
dd 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,8226
dw 11542,14430,15257,17800data ends
//数据的目的地址
table segment
db 21 dup('year summ ne ?? ')
table ends
//暂时存放寄存器的地址
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg endscodesg segment
//initialize ds
start: mov ax,datamov ds,ax//initialize esmov ax,tablemov es,ax//initialize ssmov ax,stacksgmov ss,axmov sp,16mov bp,0//initialize bx,cs and ready for the first loop
//the first loop is to move year and profit   mov bx,0mov cx,21
//double loop
//store and reset cx
//initialize si for each loops0:mov [bp],cxmov cx,2mov si,0
//set year
//get offset for srcs:mov bx,[bp+2]
//get year from source memory     mov ax,ds:[bx+si]   //get offset for destmov bx,[bp+4]//put year into destinationmov es:[bx+si],ax//set profit
//get offset for srcmov bx,[bp+2]
//get profit from source memory           mov ax,ds:[bx+si+84]           //get offset for destmov bx,[bp+4]//put profit into destination   mov es:[bx+si+5],axadd si,2loop s//update offset of src memorymov bx,[bp+2]add bx,4mov [bp+2],bx
//update offset of dest memorymov bx,[bp+4]add bx,16mov [bp+4],bxmov cx,[bp]loop s0//initialization for the second loop
//the second loop is to move the number of staffs
//initialize the offset of srcmov bx,168mov [bp+2],bx//initialize the offset of dest      mov bx,0ahmov [bp+4],bx//set the times of loop      mov cx,21s1:
//get offset for src    mov bx,[bp+2]
//get the number of staffs from source memory             mov ax,ds:[bx]           //get offset for destmov bx,[bp+4]//put the number of staffs into destination         mov es:[bx],ax//update offset of src memorymov bx,[bp+2]add bx,2mov [bp+2],bx
//update offset of dest memorymov bx,[bp+4]add bx,16mov [bp+4],bxloop s1//initialization for the third loop
//the third loop is to Calculate per capita income
//set the times of loop    mov cx,21mov bx,0s2://被除数高位mov dx,es:[bx+7]      //被除数低位     mov ax,es:[bx+5]//除数div word ptr es:[bx+0ah]
//将商存入内存mov es:[bx+0dh],ax//更新内存指向的偏移量add bx,16loop s2//程序终止mov ax,4c00hint 21h
codesg ends
end start

最终的运行结果

2022-3-6 王爽《汇编语言》实验7相关推荐

  1. 8086汇编学习小记-王爽汇编语言实验12

    8086汇编学习小记-王爽汇编语言实验12 0号中断处理程序,开始安装在0000:0200处的程序最后用死循环导致显示不出'divided error',改成直接退出就正常显示了.注意修改ss,sp之 ...

  2. 王爽 汇编语言 实验七

    最近在看王爽老师的汇编语言,写的确实很好,简单易懂,引人入胜!相比较我们学校一些老师的书籍,那简直是··· 惨绝人寰 先说一下思路: 题目的简单表述就是:将一个段的内容复制到另一个段,不过要排列成固定 ...

  3. 王爽汇编语言 实验11

    第十章的实验11出的有点不同.一是相对简单一些,还有似乎没有用到太多本章的内容.比如MOVSB 就没用到.下面是我的代码  1 assume ds:datasg, cs:code    2 datas ...

  4. 王爽 汇编语言 实验全部答案

    实验一 实验二 实验三 实验四 实验五 实验六 实验七 实验八 实验九 实验十 实验十一 实验十二 实验十三 实验十四 实验十五 (未完持续,正在写ing)

  5. 王爽汇编语言 实验5

    (1).1   当debug未执行我们的代码段指令时,从075A:0000开始的256字节是PSP段(之前的实验中已经进行过相关解释),而此时我们定义的数据是从075A:0100开始存放的.这个时候D ...

  6. 菜鸡记录-王爽-汇编语言-实验十(编写子程序-解决除法溢出)

    题目: 代码: assume cs:code,ss:stackstack segmentdw 8 dup(0) stack endscode segment start:mov ax,stackmov ...

  7. 菜鸡记录-王爽-汇编语言-实验十(编写子程序-显示字符串)

    题目: 代码: assume cs:codedata segmentdb 'Welcome to masm!',0data endscode segmentstart: mov dh,8mov dl, ...

  8. 王爽汇编语言实验7一个很好的解法(转)

    assume cs:codesg,ds:datadata segmentdb '1975','1976','1977','1978','1979','1980','1981','1982','1983 ...

  9. 王爽汇编语言 实验14

    assume cs:codecode segment start:;年份 mov al,9out 70h,alin al,71hmov ah,almov cl,4shr ah,cland al,000 ...

  10. 王爽汇编语言 实验15

    解: assume cs:codestack segmentdb 128 dup(0) stack endscode segment start:mov ax,stackmov ss,axmov sp ...

最新文章

  1. Ubuntu 下安装thttpd Web服务器
  2. IOS 学习---触摸事件与手势
  3. react-native 小米手机和 mac 安装
  4. 【前端开发系列】—— CSS3属性选择器总结
  5. 【python】pyhton中的and
  6. APP适配安卓手机刘海屏
  7. 极简主义下,Effie与幕布的碰撞,思维导图的正确打开方式?
  8. Aircrack-ng套件——无线破解原理及工具详解
  9. 计算机老师素质能力提升计划要求,教师2021个人素质提升计划范文
  10. python圣斗士修炼(十八):访问mysql数据库
  11. php控制树莓派GPIO
  12. 深度学习--解决模型过拟合的问题
  13. CVPR 2021大奖出炉!何恺明获最佳论文提名,华人四篇“最佳”!第一届Thomas S. Huang 纪念奖颁发...
  14. ★Oracle imp/impdp 导入dmp文件到数据库
  15. 【ChatGPT机器人】打造你的私人聊天助手
  16. 图形学 ---- 二维几何变换(二维图形矩阵平移,旋转,缩放)
  17. 3、Windows之CMD装逼命令————CMD命令打开网页(让人一看你就是个电脑高手)
  18. handsome主题美化(二)- 底部页脚版权美化
  19. 基本sctp套接字编程及实例讲解
  20. Mp4 分割 怎么将mp4视频文件分割成几段

热门文章

  1. PICE(3):CassandraStreaming - gRPC-CQL Service
  2. 马斯克脑机接口_马斯克说的“脑机接口”是啥?
  3. 中国汽车互联网应该怎么做才对?看大搜车
  4. Python查询Jira issue信息
  5. 【解题报告】博弈专场(CF2200~2400)后五题
  6. 变频器零速满转矩的理解
  7. 切片器可以设置日期格式?_Excel中如何使用切片器,这个太高大上了
  8. Cuk电路的参数计算及仿真
  9. 浅谈西门子840d主轴速度控制_西门子系统硬件故障维修案例第一讲
  10. mac中使用Sourcetree的git flow