汇编语言 循环程序设计与调试

求10个学生成绩中的最高成绩,结果存入MAX字节单元中,已知成绩为字节型。

正确代码  可以跑通

DATA SEGMENT
    A DB 98
    B DB 96
    C DB 90
    D DB 89
    E DB 88
    F DB 91
    G DB 92
    H DB 88
    M DB 96
    N DB 99
    MAX DB ? 
DATA ENDS

CODE SEGMENT
    ASSUME CS:CODE, DS:DATA
    START: MOV AX, DATA
           MOV DS, AX
           MOV SI, OFFSET B
           
           MOV AL, A
           MOV CX, 09H

    COMPARE: 
             CMP  AL,  [SI]
             JL DONE
             INC SI
             LOOP COMPARE
             MOV MAX, AL
             MOV AH, 4CH
             INT 21H

   DONE: MOV AL, [SI]
               INC SI
               JMP COMPARE
 
CODE ENDS
    END START

运行结果

  

 心路历程

分析:10个学生的成绩如何输入,自己给几个吧,直接在数据段中给出,1号命令是接一个字符,2号命令是把它显示,10号命令是接收一个字符串,9号命令是把它显示;貌似可以用10号命令试一试,但接收了以后怎么一个个遍历,存放的位置又在哪,这些都需要考虑,汇编程序这样好像不是那么好实现;

成绩为字节型,那就是DB了,8位

开始写源程序 结果... error 。。。

DATA SEGMENT
    A DB 98
    B DB 96
    C DB 90
    D DB 89
    E DB 88
    F DB 91
    G DB 92
    H DB 88
    I DB 96
    H DB 100
    MAX DB ?  
    I DB 1
DATA ENDS

CODE SEGMENT
    ASSUME CS:CODE, DS:DATA
    START: MOV AX, DATA
           MOV DS, AX
           MOV MAX, A
           MOV CX, 9

    COMPARE: CMP MAX, [A+I]
             JGE DONE
             MOV  MAX, [A+I]
             INC I
             LOOP COMPARE
             MOV AH, 4CH
             INT 21H
CODE ENDS
    END START

总之就是各种报错,一路修修改改成了最后的那个正确代码

需要关注的点

地址遍历最好用[SI],SI是源变址寄存器,给它赋初值然后不断调整就好

赋初值

MOV SI, OFFSET B

 调整指针,依次遍历十个元素

INC SI
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值