You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

汇编语言科目复习测验程序总分计算错误问题求助

汇编测验程序分数计算错误的修复方案

核心错误点

  • 答错分支错误加分:QSNW2到QSNW9的答错处理分支中,错误使用INC BL(加分),实际应为DEC BL(扣分),仅QSNW10处理正确,这是总分错误的主因。
  • 最终分支重复修改分数:EXIT和EXITW分支中再次执行INC BL/DEC BL,导致题目10的分数被重复计算,额外多加减1分。
  • 负数分数显示异常:分数为负数时,ADD BL,48会将负数转换为非ASCII数字字符,无法正确显示负分。
  • 题目2判断逻辑错误:原代码中QSNW2分支将题目2的正确答案误判为'A',但实际正确选项是'B',导致选对也会触发答错逻辑。

修正步骤

  1. 所有答错分支替换分数操作:将QSNW2到QSNW9中的INC BL改为DEC BL。
  2. 删除最终分支的重复分数修改:移除EXIT里的INC BL和EXITW里的DEC BL。
  3. 添加负分显示逻辑:新增DISPLAY_SCORE子程序,判断分数正负,负数先输出'-'再显示绝对值。
  4. 修正题目2的判断条件:将QSNW2中的CMP AL, 'A'改为CMP AL, 'B',匹配实际正确选项。

修正后的完整代码

org 100h

.data

MSG1 DB '..........WELCOME TO SUBJECT REVIEWER SYSTEM..........$'
MSG2 DB 'RULES : $'
MSG3 DB 'FOR EVERY CORRECT PLUS 1 POINT $'
MSG4 DB 'FOR EVERY INCORRECT MINUS 1 POINT $'   
MSG5 DB 'PRESS ENTER TO START THE QUIZ : $'
MSG6 DB 'RIGHT ANSWER $'
MSG7 DB 'WRONG ANSWER $'
MSG8 DB 'YOU SUCCESSFULLY COMPLETED THE QUIZ $'
MSG9 DB 'YOUR TOTAL POINTS IS: $'
MSG10 DB 'PRESS 1 TO REATTEMPT QUIZ $'
MSG11 DB '*******THANK YOU******* $'
Q1 DB '1. 1+1=? $'
QA1 DB 'A) 2 B) 5 C) 23 $' 
Q2 DB '2. 1+1=? $'
QA2 DB 'A) 3 B) 2 C) 65 $'
Q3 DB '3. 1+1=? $'
QA3 DB 'A) 2 B) 44 C) 23 $'
Q4 DB '4. 1+1=? $'
QA4 DB 'A) 2 B) 5 C) 45 $'
Q5 DB '5. 1+1=? $'
QA5 DB 'A) 2 B) 5 C) 56 $'
Q6 DB '6. 1+1=? $'
QA6 DB 'A) 2 B) 4 C) 5 $'
Q7 DB '7. 1+1=? $'
QA7 DB 'A) 2 B) 5 C) 23 $'
Q8 DB '8. 1+1=? $'
QA8 DB 'A) 2 B) 5 C) 7 $'
Q9 DB '9. 1+1=? $'
QA9 DB 'A) 2 B) 5 C) 23 $'
Q10 DB '10. 1+1=? $'
QA10 DB 'A) 2 B) 5 C) 4 $'

.code      
MAIN PROC
    
    MOV AX,@DATA
    MOV DS,AX
    
    LEA DX,MSG1
    MOV AH,9
    INT 21H
    
    CALL NL 
    
    LEA DX,MSG2
    MOV AH,9
    INT 21H

    CALL NL  
    
    LEA DX,MSG3
    MOV AH,9
    INT 21H

    CALL NL 
    
    LEA DX,MSG4
    MOV AH,9
    INT 21H

    CALL NL   
    
    START:
    MOV BL, 0  
    CALL NL 
    
    LEA DX,MSG5
    MOV AH,9
    INT 21H

    MOV AH, 1
    INT 21H
    
    CMP AL, 0DH
    JE QSN1
    JNE START
    
    QSN1:
    CALL NL
    
    LEA DX,Q1
    MOV AH,9
    INT 21H  
    
    CALL NL
    
    LEA DX,QA1
    MOV AH,9
    INT 21H  
    
    CALL NL
    
    
    MOV AH, 1
    INT 21H
    CMP AL, 'A'
    JE QSN2
    JNE QSNW2
    
    
    QSN2:
    CALL NL
    
    LEA DX,MSG6
    MOV AH,9
    INT 21H  
    
    INC BL
    CALL NL
    
    CALL QN2
    
    CALL INPUT
    
    CMP AL, 'B'
    JE QSN3
    JNE QSNW3
    
    QSNW2:
    CALL NL
    
    LEA DX,MSG7
    MOV AH,9
    INT 21H  
    
    DEC BL  ; 修正:答错扣分
    CALL NL
    
    CALL QN2
    
    CALL INPUT
    
    CMP AL, 'B'  ; 修正:匹配题目2正确选项
    JE QSN3
    JNE QSNW3
    
    
    ; Q3
    
    QSN3:
    CALL NL
    
    LEA DX,MSG6
    MOV AH,9
    INT 21H  
    
    INC BL
    CALL NL
    
    CALL QN3
    
    CALL INPUT
    
    CMP AL, 'A'
    JE QSN4
    JNE QSNW4
    
    QSNW3:
    CALL NL
    
    LEA DX,MSG7
    MOV AH,9
    INT 21H  
    
    DEC BL  ; 修正:答错扣分
    CALL NL
    
    CALL QN3
    
    CALL INPUT
    
    CMP AL, 'A'
    JE QSN4
    JNE QSNW4   
    
    
    ; Q4
    
    QSN4:
    CALL NL
    
    LEA DX,MSG6
    MOV AH,9
    INT 21H  
    
    INC BL
    CALL NL
    
    CALL QN4
    
    CALL INPUT
    
    CMP AL, 'A'
    JE QSN5
    JNE QSNW5
    
    QSNW4:
    CALL NL
    
    LEA DX,MSG7
    MOV AH,9
    INT 21H  
    
    DEC BL  ; 修正:答错扣分
    CALL NL
    
    CALL QN4
    
    CALL INPUT
    
    CMP AL, 'A'
    JE QSN5
    JNE QSNW5
    
    ; Q5
    
    
    QSN5:
    CALL NL
    
    LEA DX,MSG6
    MOV AH,9
    INT 21H  
    
    INC BL
    CALL NL
    
    CALL QN5
    
    CALL INPUT
    
    CMP AL, 'A'
    JE QSN6
    JNE QSNW6
    
    QSNW5:
    CALL NL
    
    LEA DX,MSG7
    MOV AH,9
    INT 21H  
    
    DEC BL  ; 修正:答错扣分
    CALL NL
    
    CALL QN5
    
    CALL INPUT
    
    CMP AL, 'A'
    JE QSN6
    JNE QSNW6
    
    
    ; Q6
    
    
    QSN6:
    CALL NL
    
    LEA DX,MSG6
    MOV AH,9
    INT 21H  
    
    INC BL
    CALL NL
    
    CALL QN6
    
    CALL INPUT
    
    CMP AL, 'A'
    JE QSN7
    JNE QSNW7
    
    QSNW6:
    CALL NL
    
    LEA DX,MSG7
    MOV AH,9
    INT 21H  
    
    DEC BL  ; 修正:答错扣分
    CALL NL
    
    CALL QN6
    
    CALL INPUT
    
    CMP AL, 'A'
    JE QSN7
    JNE QSNW7
    
    
    ; Q7
    
    
    QSN7:
    CALL NL
    
    LEA DX,MSG6
    MOV AH,9
    INT 21H  
    
    INC BL
    CALL NL
    
    CALL QN7
    
    CALL INPUT
    
    CMP AL, 'A'
    JE QSN8
    JNE QSNW8
    
    QSNW7:
    CALL NL
    
    LEA DX,MSG7
    MOV AH,9
    INT 21H  
    
    DEC BL  ; 修正:答错扣分
    CALL NL
    
    CALL QN7
    
    CALL INPUT
    
    CMP AL, 'A'
    JE QSN8
    JNE QSNW8
    
    
    ; Q8
    
    
    QSN8:
    CALL NL
    
    LEA DX,MSG6
    MOV AH,9
    INT 21H  
    
    INC BL
    CALL NL
    
    CALL QN8
    
    CALL INPUT
    
    CMP AL, 'A'
    JE QSN9
    JNE QSNW9
    
    QSNW8:
    CALL NL
    
    LEA DX,MSG7
    MOV AH,9
    INT 21H  
    
    DEC BL  ; 修正:答错扣分
    CALL NL
    
    CALL QN8
    
    CALL INPUT
    
    CMP AL, 'A'
    JE QSN9
    JNE QSNW9 
    
    
    
    ; Q9
    
    
    QSN9:
    CALL NL
    
    LEA DX,MSG6
    MOV AH,9
    INT 21H  
    
    INC BL
    CALL NL
    
    CALL QN9
    
    CALL INPUT
    
    CMP AL, 'A'
    JE QSN10
    JNE QSNW10
    
    QSNW9:
    CALL NL
    
    LEA DX,MSG7
    MOV AH,9
    INT 21H  
    
    DEC BL  ; 修正:答错扣分
    CALL NL
    
    CALL QN9
    
    CALL INPUT
    
    CMP AL, 'A'
    JE QSN10
    JNE QSNW10 
    
    
    ; Q10
    
    
    QSN10:
    CALL NL
    
    LEA DX,MSG6
    MOV AH,9
    INT 21H  
    
    INC BL
    CALL NL
    
    CALL QN10
    
    CALL INPUT
    
    CMP AL, 'A'
    JE EXIT
    JNE EXITW
    
    QSNW10:
    CALL NL
    
    LEA DX,MSG7
    MOV AH,9
    INT 21H  
    
    DEC BL
    CALL NL
    
    CALL QN10
    
    CALL INPUT
    
    CMP AL, 'A'
    JE EXIT
    JNE EXITW
    
    EXIT:
    CALL NL
    
    LEA DX, MSG6
    MOV AH,9
    INT 21H
    
    CALL NL
    CALL NL
    
    LEA DX, MSG8
    MOV AH,9
    INT 21H
    
    CALL NL
    
    LEA DX, MSG9
    MOV AH,9
    INT 21H
    
    CALL DISPLAY_SCORE
    JMP EXIT1
    
    EXITW:
    CALL NL
    
    LEA DX, MSG7
    MOV AH,9
    INT 21H
    
    CALL NL
    CALL NL
    
    LEA DX, MSG8
    MOV AH,9
    INT 21H
    
    CALL NL
    CALL NL
    
    LEA DX, MSG9
    MOV AH,9
    INT 21H
    
    CALL DISPLAY_SCORE
    JMP EXIT1
    
    ; 新增分数显示子程序,支持负数
    DISPLAY_SCORE:
        MOV AL, BL
        CMP AL, 0
        JGE POSITIVE_SCORE
        ; 处理负数
        NEG AL
        MOV AH, 2
        MOV DL, '-'
        INT 21H
    POSITIVE_SCORE:
        ; 处理0-10的分数显示
        CMP AL, 10
        JE DISPLAY_TEN
        ADD AL, 48
        MOV AH, 2
        MOV DL, AL
        INT 21H
        RET
    DISPLAY_TEN:
        MOV AH,2
        MOV DL,"1"
        INT 21H
        MOV DL, "0"
        INT 21H
        RET
    
    NL:
    MOV AH,2
    MOV DL, 0AH
    INT 21H
    MOV DL, 0DH
    INT 21H
    RET
    
    QN2:
    LEA DX,Q2
    MOV AH,9
    INT 21H
    
    CALL NL
    
    LEA DX,QA2
    MOV AH,9
    INT 21H
    RET
    
    QN3:
    LEA DX,Q3
    MOV AH,9
    INT 21H
    
    CALL NL
    
    LEA DX,QA3
    MOV AH,9
    INT 21H
    RET
    
    QN4:
    LEA DX,Q4
    MOV AH,9
    INT 21H
    
    CALL NL
    
    LEA DX,QA4
    MOV AH,9
    INT 21H
    RET
    
    
    QN5:
    LEA DX,Q5
    MOV AH,9
    INT 21H
    
    CALL NL
    
    LEA DX,QA5
    MOV AH,9
    INT 21H
    RET

    
    QN6:
    LEA DX,Q6
    MOV AH,9
    INT 21H
    
    CALL NL
    
    LEA DX,QA6
    MOV AH,9
    INT 21H
    RET


    
    QN7:
    LEA DX,Q7
    MOV AH,9
    INT 21H
    
    CALL NL
    
    LEA DX,QA7
    MOV AH,9
    INT 21H
    RET
    
    
    QN8:
    LEA DX,Q8
    MOV AH,9
    INT 21H
    
    CALL NL
    
    LEA DX,QA8
    MOV AH,9
    INT 21H
    RET 
    
    
    QN9:
    LEA DX,Q9
    MOV AH,9
    INT 21H
    
    CALL NL
    
    LEA DX,QA9
    MOV AH,9
    INT 21H
    RET
    
    
    QN10:
    LEA DX,Q10
    MOV AH,9
    INT 21H
    
    CALL NL
    
    LEA DX,QA10
    MOV AH,9
    INT 21H
    RET 
    
    
    INPUT:
    CALL NL
    
    MOV AH, 1
    INT 21H
    RET
    
    EXIT1:
    CALL NL
    CALL NL
    
    LEA DX,MSG10
    MOV AH,9
    INT 21H  
    
    MOV AH,1
    INT 21H
    
    CMP AL,'1'
    JE START
    
    CALL NL
    CALL NL
    
    LEA DX,MSG11
    MOV AH,9
    INT 21H
    
    MOV AH, 4CH
    INT 21H
    
    MAIN ENDP
END MAIN

内容的提问来源于stack exchange,提问作者eddie bucad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 20:25:59