飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4219|回复: 9

汇编编程实例;;;;统计学生成绩

[复制链接]
  • TA的每日心情
    难过
    2024-4-22 14:49
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2004-12-14 10:49:41 | 显示全部楼层 |阅读模式
    汇编编程实例;;;;统计学生成绩
    统计30个学生成绩中得分在100~90、89~80、79~70、69~60区间以及低于60分的人数,并计算30个学生的平均成绩(取整数),结果依次存入指定的存入区域。
    例如:
    内存中有10个分数 5EH,50H,64H,52H,55H,48H,3AH,4AH,40H,42H
    结果为 02H,03H,02H,02H,01H,4DH(平均成绩)
    部分程序已经给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,运算结果要 求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。-S




    ;-----------------xscj.asm------------------------;;
    DATA SEGMENT
    SCORE DB 78,64,29,91,84,67,92,100,54,66
    COUNT EQU 10
    RESULT DB 6 DUP (?)
    DATA ENDS

    ;------------------
    CODE SEGMENT
    ASSUME CS:CODE,DS:DATA
    MAIN PROC FAR
    PUSH DS
    XOR AX,AX
    PUSH AX
    MOV AX,DATA
    MOV DS,AX
    START: MOV CX,COUNT
    MOV AH,0
    MOV BX,0
    MOV DX,0
    MOV SI,OFFSET SCORE
    LOP: MOV AL,[SI]
    CMP AL,60
    JB FAIL
    CMP AL,70
    JB CHA
    CMP AL,80
    JB ZHONG
    CMP AL,90
    JB LIANG
    YOU: INC AH ;优秀(90-100)
    JMP DONE
    LIANG: INC BH ;良好(80-89)
    JMP DONE
    ZHONG: INC BL ;中(70-79)
    JMP DONE
    CHA: INC DH ;差(60-69)
    JMP DONE
    FAIL: INC DL ;不及格(59-0)
    DONE: INC SI
    LOOP LOP
    MOV DI,OFFSET RESULT
    MOV [DI],AH
    MOV [DI+1],BH
    MOV [DI+2],BL
    MOV [DI+3],DH
    MOV [DI+4],DL
    MOV CX,COUNT ;求平均
    MOV DX,0
    MOV SI,OFFSET SCORE
    LOP1: MOV AL,[SI]
    MOV AH,0
    ADD DX,AX
    INC SI
    LOOP LOP1
    MOV AX,DX
    MOV BL,COUNT
    DIV BL
    MOV DI,OFFSET RESULT
    MOV [DI+5],AL
    RET
    MAIN ENDP
    CODE ENDS
    END MAIN
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2024-4-22 14:49
  • 签到天数: 11 天

    [LV.3]偶尔看看II

     楼主| 发表于 2004-12-14 10:50:47 | 显示全部楼层

    从键盘上输入一串字符,计算每个字符出现的次数,并在屏幕上显示这个数字

    ;count.asm
    DATA SEGMENT
    BUFFER DB 100
    DB ?
    DB 100 DUP(?)
    CHARS DB 'INPUT:$'
    DATA ENDS
    CODE SEGMENT
    ASSUME CS:CODE,DS:DATA
    MAIN PROC FAR
    PUSH DS
    SUB AX,AX
    PUSH AX
    MOV AX,DATA
    MOV DS,AX
    START: MOV DX,OFFSET CHARS
    MOV AH,9
    INT 21H
    MOV DX,OFFSET BUFFER
    MOV AH,0AH
    INT 21H
    MOV DL,0AH
    MOV AH,2
    INT 21H
    MOV DL,0DH
    MOV AH,2
    INT 21H
    MOV SI,OFFSET BUFFER
    INC SI
    MOV AL,[SI]
    INC SI
    MOV DL,[SI]
    MOV DH,[SI]
    MOV DI,SI
    MOV CL,AL
    MOV CH,0
    MOV BL,1
    MOV BH,0
    DEC CL
    GO1: INC SI
    CMP DL,[SI]
    JNE TO1
    INC BL
    TO1: LOOP GO1
    CALL OUTPUT
    MOV BL,1
    TO5: INC DI
    DEC AL
    CMP AL,1
    JE TO3
    CMP DH,[DI]
    JE TO5
    MOV DL,[DI]
    MOV SI,DI
    MOV CL,AL
    MOV CH,0
    DEC CL
    GO2: INC SI
    CMP [SI],DL
    JNE TO2
    INC BL
    MOV [SI],DH
    TO2: LOOP GO2
    CALL OUTPUT
    MOV BL,1
    JMP TO5

    TO3: CMP DH,[DI]
    JE TO4
    MOV DL,[DI]
    MOV BL,1
    CALL OUTPUT
    TO4: RET
    MAIN ENDP

    ;--------------------------
    OUTPUT PROC
    PUSH AX

    PUSH CX
    PUSHF
    MOV AH,2
    INT 21H
    MOV DL,20H
    MOV AH,2
    INT 21H
    MOV AL,BL
    MOV AH,0
    MOV CL,10
    DIV CL
    ADD AH,30H
    ADD AL,30H
    MOV CH,AH
    MOV DL,AL
    MOV AH,2
    INT 21H
    MOV DL,CH
    MOV AH,2
    INT 21H
    MOV DL,0AH
    MOV AH,2
    INT 21H
    MOV DL,0DH
    MOV AH,2
    INT 21H
    POPF
    POP CX
    POP AX
    RET
    OUTPUT ENDP
    CODE ENDS
    END MAIN
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2024-4-22 14:49
  • 签到天数: 11 天

    [LV.3]偶尔看看II

     楼主| 发表于 2004-12-14 10:51:14 | 显示全部楼层

    从键盘上获得若干个十进制数,求他们的平均值,并输出到屏幕上 。

    DATA SEGMENT

    INPUT DB 4

    DB ?

    DB 4 DUP (?)

    DB '$'

    NUM DW 20 DUP(?)

    AVE DB ?

    OUTPUT1 DB 'INPUT A NUMBER',0DH,0AH,'$'

    OUTPUT2 DB 'INPUT AGAIN(END WITH #)',0DH,0AH,'$'

    OUTPUT3 DB 'AVERAGE IS:','$'

    DATA ENDS

    ;----------------

    CODE SEGMENT

    ASSUME CS:CODE,DS:DATA

    MAIN PROC FAR

    PUSH DS

    XOR AX,AX

    PUSH AX

    MOV AX,DATA

    MOV DS,AX

    START:MOV DX,OFFSET OUTPUT1

    MOV AH,9

    INT 21H

    MOV BL, 0

    MOV DI,OFFSET NUM

    MOV DX,OFFSET INPUT

    MOV AH,0AH

    INT 21H

    MOV DX,OFFSET INPUT+2

    MOV AH,9

    INT 21H

    MOV SI,OFFSET INPUT+1

    MOV CL,[SI]

    INC SI

    MOV CH,0

    CALL ADECXB

    MOV [DI],AX

    INC BL

    INC DI

    INC DI

    INN: MOV DX,OFFSET OUTPUT2

    MOV AH,9

    INT 21H

    MOV DX,OFFSET INPUT

    MOV AH,0AH

    INT 21H

    MOV SI,OFFSET INPUT+1

    MOV CL,[SI]

    INC SI

    CMP BYTE PTR [SI],'#'

    JZ DONE

    MOV CH, 0

    CALL ADECXB

    MOV [DI],AX

    INC BL

    INC DI

    INC DI

    JMP INN

    DONE: MOV DX, 0

    PUSH BX

    MOV DI,OFFSET NUM

    R: MOV AX,[DI]

    ADD DX,AX

    INC DI

    INC DI

    DEC BL

    CMP BL,0

    JNZ R

    MOV AX,DX

    MOV DX,OFFSET OUTPUT3

    PUSH AX

    MOV AH,9

    INT 21H

    POP AX

    POP BX

    DIV BL

    MOV AH,0

    MOV BL,100

    DIV BL

    MOV BH,AL

    ADD BH,30H

    MOV DL,BH

    PUSH AX

    MOV AH,2

    INT 21H

    POP AX

    MOV AL,AH

    MOV AH,0

    MOV BL,10

    DIV BL

    ADD AL,30H

    MOV DL,AL

    PUSH AX

    MOV AH,2

    INT 21H

    POP AX

    ADD AH,30H

    MOV DL,AH

    MOV AH,2

    INT 21H

    RET

    MAIN ENDP

    ;-------------

    ADECXB PROC

    PUSH BX

    PUSH CX

    PUSH DX

    PUSH SI

    MOV BH,0

    XOR AX,AX

    AGAIN:ADD AX,AX

    MOV DX,AX

    ADD AX,AX

    ADD AX,AX

    ADD AX,DX

    MOV BL,[SI]

    AND BL,0FH

    ADD AX,BX

    INC SI

    LOOP AGAIN

    POP SI

    POP DX

    POP CX

    POP BX

    RET

    ADECXB ENDP

    CODE ENDS

    END MAIN
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2024-4-22 14:49
  • 签到天数: 11 天

    [LV.3]偶尔看看II

     楼主| 发表于 2004-12-14 10:51:40 | 显示全部楼层

    16位无符号数排序

    DATA SEGMENT
    ARRAY DW 67 ,32,2,11,501

    COUNT EQU $ -ARRAY

    WORK DW ?

    DATA ENDS

    CODE SEGMENT

    ASSUME CS:CODE,DS:DATA

    STR PROC FAR

    PUSH DS

    SUB AX,AX

    PUSH AX

    MOV AX,DATA

    MOV DS,AX

    MOV BL,0FFH

    ABC: CMP BL,0

    JE LAST

    XOR BL,BL

    MOV SI,COUNT-2

    MOV AX,SI

    MOV DL, 2

    DIV DL

    MOV AH,0

    MOV CX,AX

    ABD: MOV AX,ARRAY[SI]

    CMP AX,ARRAY[SI-2]

    JBE DONE

    XCHG ARRAY[SI-2],AX

    MOV ARRAY[SI],AX

    MOV BL,0FFH

    DONE: DEC SI

    DEC SI

    LOOP ABD

    JMP ABC

    LAST: RET

    STR ENDP

    CODE ENDS

    END STR
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2024-3-21 21:06
  • 签到天数: 1489 天

    [LV.10]以坛为家III

    发表于 2005-4-14 22:22:22 | 显示全部楼层
    支持一下。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-6-18 14:34:20 | 显示全部楼层
    学习学习!
    PYG19周年生日快乐!
    zhupf 该用户已被删除
    发表于 2005-7-31 20:20:53 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-2-22 17:11
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    发表于 2006-6-16 19:40:16 | 显示全部楼层
    贴这么多,也不给一个一个分析分析。
    不懂
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-6-22 09:51:20 | 显示全部楼层
    超级无敌不懂
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-6-22 11:18:02 | 显示全部楼层
    支持一下。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表