汇编语言简单小程序——分支、循环和排序程序设计实验

分支、循环和排序程序设计实验


码文不易,如果帮助到您,希望您可以帮我刷一下点击量,与您无害,与我有益谢谢 支持原创

  欢迎大家阅读我的博客,如果有错误请指正,有问题请提问,我会尽我全力改正错误回答问题。在此谢谢大家。下面开始正式内容


相关文章

按时间顺序排列

  1. 汇编语言简单小程序——ASCII码转十进制数(bcd码)
  2. 汇编语言简单小程序——运算类编程实验
  3. 汇编语言简单小程序——分支、循环和排序程序设计实验

实验目的


(1)掌握分支程序的结构。
(2)掌握分支程序的设计、调试方法


实验内容


  假设有50名学生的课程成绩存放在数据区中,编制汇编语言程序统计成绩中小于60分的人数,60-90分的人数,大于90分的人数,并存入内存。


编译环境


  • 计算机系统:win10电脑virtualbox上安装win7虚拟机
  • 软件:wave6000
  • 软件模拟器:8086/86


目录


码文不易,如果帮助到您,希望您可以帮我刷一下点击量,与您无害,与我有益谢谢 支持原创


统计成绩


一、知识点


流程图
循环部分
Created with Raphaël 2.1.2 初始化 循环取下一个 [SI]<0? 结束程序 处理数据 CX==0? yes no yes no
处理数据部分
Created with Raphaël 2.1.2 循环内部 [SI]<0? 结束循环 [SI]<60? FAIL++ 下次循环 [SI]<90? PASS++ PROMIN++ yes no yes no yes no


代码解析
DATA SEGMENT
   ARRAY DB 54H,68H,56H,56H,59H,35H,54H,68H,56H,56H,59H,35H,54H,68H,56H,56H,59H,35H,54H,68H,56H,56H,59H,35H,54H,68H,56H,56H,59H,35H,54H,68H,56H,56H,59H,35H,54H,68H,56H,56H,59H,35H,54H,68H,56H,56H,59H,35H,-01H
   FAIL DB ?
   PASS DB ?
   PROMIN DB ?
DATA ENDS

数据部分,ARRAY是存储50个8位无符号二进制数(学生成绩)的数组,最后一个-01H表示数组结束。FAIL 存储60以下数量,PASS 60-90,PROMIN 90以上。


 LOOP1:
     MOV AL,BYTE PTR [SI]
     CMP AL,0
     JL EXIT

     CMP AL,60
     JAE ADDPASS
     JMP ADDFAIL

主循环

  1. 取分数值
  2. 比较是否小于零
  3. 小于零则跳转到结束部分
  4. 是否大于60
  5. 大于则跳转到ADDPASS段
  6. 小于则跳转到ADDFAIL段

    CMP,JAE,JMP,JL相关知识详见<汇编语言简单小程序——运算类编程实验>


ADDFAIL:
     INC FAIL
     JMP CONTINUE

ADDFAIL段,增加60分以下计数器,跳转到CONTINUE段

ADDPASS:
     CMP AL,90
     JAE ADDPROMIN
     INC PASS
     JMP CONTINUE

ADDPASS段,

  1. 继续比较是否大于90
  2. 大于则跳转到ADDPROMIN段
  3. 否则通过人数加一
  4. 跳转到CONTINUE段


ADDPROMIN:
     INC PROMIN

ADDPROMIN段,优秀人数加一,因为下面就是CONTINUE段,所以省略掉跳转


CONTINUE:
     INC SI
     LOOP LOOP1

CONTINUE段,指针移动,继续循环

EXIT:
     MOV AH,4CH
     INT 21H

EXIT段,结束程序


二、运行结果


运行截图

统计成绩代码截图

  输入为
54H,68H,56H,56H,59H,35H,54H,68H,56H,56H,
59H,35H,54H,68H,56H,56H,59H,35H,54H,68H,
56H,56H,59H,35H,54H,68H,56H,56H,59H,35H,
54H,68H,56H,56H,59H,35H,54H,68H,56H,56H,
59H,35H,54H,68H,56H,56H,59H,35H,-01H
48个成绩




统计成绩数据截图统计成绩结果截图

CX为2说明循环进行了48次,符合数据情况。
结果为FAIL 8 PASS 32 PROMIN 8 注意图上是16进制数。
结果正确



三、源码

码文不易,如果帮助到您,希望您可以帮我刷一下点击量,与您无害,与我有益谢谢 支持原创

DATA SEGMENT
   ARRAY DB 54H,68H,56H,56H,59H,35H,54H,68H,56H,56H,59H,35H,54H,68H,56H,56H,59H,35H,54H,68H,56H,56H,59H,35H,54H,68H,56H,56H,59H,35H,54H,68H,56H,56H,59H,35H,54H,68H,56H,56H,59H,35H,54H,68H,56H,56H,59H,35H,-01H
   FAIL DB ?
   PASS DB ?
   PROMIN DB ?
DATA ENDS

CODE SEGMENT
  ASSUME CS:CODE, DS:DATA
  START: MOV AX,DATA
     MOV DS,AX
     LEA SI,ARRAY
     MOV CX,50
  LOOP1:
     MOV AL,BYTE PTR [SI]
     CMP AL,0
     JL EXIT

     CMP AL,60
     JAE ADDPASS
     JMP ADDFAIL
   ADDFAIL:
     INC FAIL
     JMP CONTINUE
   ADDPASS:
     CMP AL,90
     JAE ADDPROMIN
     INC PASS
     JMP CONTINUE
   ADDPROMIN:
     INC PROMIN
   CONTINUE:
     INC SI
     LOOP LOOP1
   EXIT:
     MOV AH,4CH
     INT 21H
CODE ENDS
END START


四、相关资料


  1. 汇编语言简单小程序——运算类编程实验


码文不易,如果帮助到您,希望您可以帮我刷一下点击量,与您无害,与我有益谢谢 支持原创

  • 25
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值