该课程设计是在屏幕输出公司21年的详细信息,包括年份、当年总收入、当年人数、当年的人均收入(这个需要运用除法运算)。
  显示总收入需要解决除法溢出的问题,改进除法运算,见课本王老师的附录讲解
  一开始我也是看别人文章,跟别人学习怎么让程序处理数据,怎么定义数据段,然后才有了这个程序
  整个程序由以下几个函数段(代码段)实现

  aver:计算每一年的平均收入
  show:显示整个表,其又调用了以下代码段
  shinit:对屏幕进行初始化,就是清空屏幕,先显示一遍整屏幕的黑底空字符
  shyear:显示年份,因为存储的直接就是年份的ascii码值
  shlarg:显示每年总收入,因是双字,数据较大,二进制转十进制时除法运算会溢出,采用改进的除法运算,10进制各位字符入栈,再弹出至显存
  shsmal:显示每年人均收入和每年的员工数。属于小型整数,采用了正常标准的除法运算,进行进制转换

assume cs:code,ds:data
data segment db '1975','1976','1977','1978','1979';偏移量bxdb '1980','1981','1982','1983','1984','1985','1986','1987','1988','1989'db '1990','1991','1992','1993','1994','1995'dd 16,22,382,1356,2390dd 8000,16000,24486,50065,97479,140417,197514,345980,590827,803530dd 1183000,1843000,2759000,3753000,4649000,5937000dw 3,7,9,13,28;偏移量sidw 38,130,220,476,778,1001,1442,2258,2793,4037dw 5635,8226,11542,14430,15257,17800dw 21 dup (0)dw 30 dup (0);栈段,可以容纳30个字,总共84+84+84+60=252+60=312字节
data endscode segment
main:   mov ax,datamov ds,axmov ss,axmov sp,312mov bx,84mov si,168;设置数据段偏移量mov cx,21call avermov bx,0call showmov ax,4c00hint 21haver:  push axpush bxpush cxpush dxpush dspush siavloop:   mov ax,ds:[bx]mov dx,ds:[bx+2]div word ptr ds:[si]mov ds:[si+42],axadd bx,4add si,2loop avlooppop sipop dspop dxpop cxpop bxpop axret show:   call shinitpush ax push cxpush espush bppush dimov ax,0b800h;设置显存段mov es,axmov bp,4;行首偏移量,俩字符mov di,0shlp:   push cxmov di,0call shyearmov di,20add bx,84call shlargsub bx,84mov di,60call shsmalmov di,90add si,42call shsmalsub si,42pop cxadd bx,4add si,2add bp,160loop shlppop dipop bppop espop cxpop axretshinit: push axpush bxpush cxpush dxpush dipush esmov ax,0b800hmov es,axmov bx,0;设置显存段mov di,0mov cx,25mov dx,0iniout:  push cxmov cx,80iniin:  mov es:[bx+di],dxadd di,2loop iniinadd bx,160sub di,dipop cxloop inioutpop espop dipop dxpop cxpop bxpop axretshyear:  push axpush bxpush cxpush espush bp mov cx,4        yeargo: mov al,ds:[bx]mov ah,0dhmov es:[bp],axadd bp,2inc bxloop yeargopop bppop espop cxpop bxpop axretshlarg: push axpush bxpush cxpush dxpush dspush sipush espush dipush bp;寄存器不够用,si指向bp,si  bp另作它用mov si,spmov ax,ds:[bx]mov dx,ds:[bx+2]mov bx,10;bx保存除数larggo:   mov bp,ax;bp为低16位mov ax,dxmov dx,0div bxpush ax;保存高位除法的商部分mov ax,bpdiv bx;至此dx得到了第一个余数,应保存在cx里mov cx,dxadd cx,48mov ch,0dh;形成ascii码,还有显示属性pop dxpush cx;字符入栈,商也由dx ax保存,用cx依次检验ax和dx是否为0mov cx,axjcxz latehi;large test highjmp larggolatehi:   mov cx,dxjcxz largok;商为0,则表示转换完成jmp larggolargok:    mov ax,sisub ax,spmov bl,2div blmov cl,almov ch,0mov bp,ss:[si]largwr:  pop es:[bp+di]add di,2loop largwrpop bp pop dipop espop sipop dspop dxpop cxpop bxpop axretshsmal: push axpush bxpush cxpush dxpush dspush sipush espush bppush dimov ax,ds:[si]mov si,spmov bx,10smallp:  mov dx,0div bxadd dx,48add dh,0dhpush dxmov cx,axjcxz smalokjmp smallpsmalok:   mov ax,sisub ax,spmov bl,2div blmov cl,almov ch,0smalwr:    pop es:[bp+di]add di,2loop smalwrpop dipop bppop espop sipop dspop dxpop cxpop bxpop axretcode ends
end main


插入汇编代码我不知道用什么类型规范代码。
编辑器用的是Win-Masm,前辈高人开发的,比记事本强多了。显示行数,高亮关键字很有用
代码里有注释,复制到编辑器里看一遍就会了,谢谢阅读

王爽老师汇编第三版课程设计 一相关推荐

  1. 学习汇编语言 -王爽,自已完成的一道课程设计题 (5)

    课程设计1 (材料详见书上211页) 题目描述: 以下是我解答的完整的代码: :>-------------------------------------------------------- ...

  2. 王爽 汇编语言第三版 课程设计 1

    From:https://www.cnblogs.com/Since-natural-ran/p/6938133.html 汇编语言-课程设计1: https://www.cnblogs.com/ts ...

  3. 王爽老师汇编语言第四版第十章CALL和RET指令——小白笔记

    目录 10.1 ret和retf (1)  ret: (2)retf: 10.2 call指令 10.3依据位移进行转移的CALL指令 10.4 转移的目的地址在指令中的CALL指令 10.5转移地址 ...

  4. 【8086汇编】王爽汇编语言(第三版)实验3详解 —— 编程、编译、链接、跟踪

    实验任务1 实验内容 将下面的内容保存为t1.asm,将其生成可执行文件t1.exe: assume cs:codingcodesg segmentmov ax,2000Hmov ss,axmov s ...

  5. 王爽《汇编语言第三版》实验10-1代码实现

    ;编写一个通用的子程序实现这个显示字符串的功能,提供灵活的调用接口,使调用者 ;可以决定显示的位置,内容,颜色 assume cs:code,ss:stack,ds:data data segment ...

  6. 王爽老师汇编语言第四版:实验九 根据材料编程

    目录 1.首先是编译问题 2.显示缓存区每一行是80个字符也就是160个字节 3.当数据想要写到第二行时  这时si已经向后走了16个位移了所以不能直接+160 应该+160-32 4.视频中教程用一 ...

  7. 《汇编语言》王爽(第四版) 课程设计1

    文章目录 前言 一.课程设计任务 二.任务分析 1.公司数据的格式 2.数据转为字符串 3.显示多个数据 三.实现代码 总结 前言 本文是王爽老师<汇编语言>(第四版) 课程设计1 &qu ...

  8. 王爽 汇编语言第二版 课程设计2

    王爽汇编语言 课程设计2 掌握一门编程语言最重要的就是实践,王爽老师的课程设计2,如果完整写出来要400行至800行代码,独立完成这个课程设计,会使你熟练16位汇编,掌握8086汇编精髓.这个课程设计 ...

  9. 汇编语言 (第2版) 王爽 中文高清PDF版下载

    汇编语言 (第2版) 王爽 中文高清PDF版下载 转载于:https://www.cnblogs.com/gavinhughhu/archive/2009/12/10/1620783.html

最新文章

  1. 这 12 款 IDEA 插件你用过几款?
  2. linux 把mysql大小写关闭_linux中设置mysql大小写不去区分方法
  3. Common BeanUtils 简介
  4. 定时器--STM32f4--HAL
  5. python之pop
  6. mysql gtid 还是pxc_记一次 PXC 集群拆分引发的思考
  7. 【数学】和【物理】的差别
  8. java蓝桥杯算法训练 求1000以内的完数(题解)
  9. matlab2c使用c++实现matlab函数系列教程-exppdf函数
  10. Python字符串isidentifier()
  11. javascript编程知识点
  12. iOS手势的传递问题
  13. PHP 中文手册-国内镜像
  14. 小样本学习(FSL):Few-shot Learning 综述【模型微调(Fine-tunning)、数据增强、迁移学习(Transfer Learning)】
  15. 迷宫生成算法(二)(C++)
  16. 媲美微信的二维码识别库
  17. Benchmarking Lane-changing Decision-making for Deep Reinforcement Learning
  18. 使用蒲公英平台测试iOS APP(示例)
  19. 苯乙炔单体/苯基卟啉/联吡啶衍生物/联吡啶/四苯甲烷/金刚烷单体/苯乙烯衍生物-齐岳
  20. Java第十章总结集合类

热门文章

  1. 成功解决 RecoveryYour PC/Device needs to be repairedThe Boot c onfiguration Data for your PC is missin
  2. stm32驱动rgb屏电路图_stm32h7“点亮RGB屏幕”
  3. Android Fragment 从源码的角度去解析(上)
  4. 抖音为什么这么火?抖音用户暴涨的秘密在哪?
  5. 6.17 C语言练习(百钱百鸡问题:中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?)
  6. Mac下cmake使用
  7. 面试数据库知识点总结
  8. 经典计算机书籍-自制系列
  9. 2023年全国最新工会考试精选真题及答案33
  10. MFC Afx*.h 详解