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

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


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

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


相关文章

按时间顺序排列

  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段,结束程序


二、运行结果


运行截图

汇编语言简单小程序——分支、循环和排序程序设计实验_第1张图片

  输入为
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个成绩




汇编语言简单小程序——分支、循环和排序程序设计实验_第2张图片汇编语言简单小程序——分支、循环和排序程序设计实验_第3张图片

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. 汇编语言简单小程序——运算类编程实验


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

你可能感兴趣的:(汇编语言,计算机基础)