51单片机的一道汇编题
  xUE7a6GP7Yz8 2023年11月02日 82 0

原题:
某班30人,某门课成绩(百分制)放在内存30H开始单元中,变成求最高分、及格人数(≥60分)、优秀人数(≥90分),分别存于内RAM60H、61H和62H单元。

汇编代码:

CSEG    AT    0000H
        LJMP    4000H            ;转入程序
CSEG    AT    4000H
START:
    ADDR1    EQU        30H
    LEN        EQU        1EH
    MAX        EQU        60H
    JGS        EQU        61H
    YXS        EQU        62H
    JG        EQU        3CH
    YX        EQU        5AH

;初始化给30-3F数
    MOV    R1,#ADDR1
    MOV    @R1,#0AH
    INC    R1
    MOV    @R1,#28H
    INC    R1
    MOV    @R1,#3BH
    INC    R1
    MOV    @R1,#3CH
    INC    R1
    MOV    @R1,#41H
    INC    R1
    MOV    @R1,#50H
    INC    R1
    MOV    @R1,#5AH
    INC    R1
    MOV    @R1,#64H

;代码
MOV    R0,#LEN
MOV    R1,#ADDR1

LOOP:    MOV    A,@R1
        CJNE    A,#MAX,NEXT
NEXT:    JC        JGPD    ;A<MAX
        MOV        MAX,A
JGPD:    CJNE    A,#JG,NEXT1
NEXT1:    JC        NOYX    ;A<JG
        INC        JGS
        CJNE    A,#YX,NEXT2
NEXT2:    JC        NOYX    ;A<YX
        INC        YXS
NOYX:    INC        R1
        DJNZ    R0,LOOP
        AJMP    HERE

HERE:    AJMP    HERE    ;程序结束
END

51单片机的一道汇编题_51单片机

Proteus仿真结果

参考代码:

ORG    0100H
ZG    DATA    60H;最高分
JG    DATA    61H;及格个数
YX    DATA    62H;优秀个数
MOV    ZG,#00H;初始化为0
MOV    JG,#00H
MOV    YX,#00H
MOV    R0,#30H;成绩从30开始
MOV    R2,#30;个数为30个

START:    MOV    A,@R0
        CJNE    A,ZG,NEXT1
NEXT1:    JC    CON;A<ZG
        MOV    ZG,A;保存最高的A到ZG
CON:    CJNE    A,#60,NEXT2
NEXT2:    CJ    NEXT3;A<60
        INC    JG
        CJNE    A,#90,NEXT4;
NEXT4:    JC    NEXT3;A<90
        INC    YX
NEXT3:    INC    R0
        DJNZ    R2,START
        SJMP $
        END


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论