回 帖 发 新 帖 刷新版面

主题:搞了N久为什么还是错的啊??谁来帮我下啊?一个初级问题

[color=FF0000]输入8个两位十六进制无符号数,将不大于平均数的数字输出。[/color]

STACK SEGMENT PARA STACK'STACK'
    DB 256 DUP(00H)
STACK ENDS
DATA SEGMENT PARA PUBLIC'DATA'
A DB 8 DUP (00H)
B DB DUP 0000H
DATA ENDS
CODE SEGMENT PARA PUBLIC'CODE'
    ASSUME CS:CODE,DS:DATA
    MAIN PROC FAR
        MOV AX,DATA
        MOV DS,AX
        MOV CX,0
        CALL GETCHAR 
        MOV BH,AL
        CALL GETCHAR
        MOV AH,BH
        CALL ASCTOHEX
        MOV DL,','
        CALL DISPCHAR
        MOV AH,0
        ADD CX,AX
        
        MOV BL,2
        
     L1:CALL GETCHAR 
        MOV BH,AL
        CALL GETCHAR
        MOV AH,BH
        CALL ASCTOHEX
        MOV DL,','
        CALL DISPCHAR
        MOV AH,0
        
        ADD CX,AX
        DEC BL
        JNZ L1
        
        MOV AX,CX
        MOV BL,3
        DIV BL
        
        MOV BX,0
     L2:INC BX
        CMP AL,A[BX]
        
        MOV AL,A[BX]
        MOV DL,AH
        CALL DISPCHAR
        MOV DL,AL
        CALL DISPCHAR
        MOV DL,','
        CALL DISPCHAR
        JNC L2
        MOV AH,4CH
        INT 21H
MAIN ENDP
DISPCHAR PROC NEAR
    PUSH AX
    MOV AH,02H
    INT 21H
    POP AX
    RET
DISPCHAR ENDP
GETCHAR PROC NEAR
    MOV AH,01H
    INT 21H
    RET
GETCHAR ENDP
ASCTOHEX PROC NEAR
    CMP AL,41H
    JC ASC1
    SUB AL,07H
    ASC1:SUB AL,30H
    CMP AH,41H
    JC ASC2
    SUB AH,07H
    ASC2:SUB AH,30H
    SHL AH,1
    SHL AH,1
    SHL AH,1
    SHL AH,1
    ADD AL,AH
    RET
ASCTOHEX ENDP
HEXTOASC PROC NEAR
    MOV AH,AL
    AND AL,0FH
    CMP AL,0AH
    JC HEX1
    ADD AL,07H
    HEX1:ADD AL,30H
    SHR AH,1
    SHR AH,1
    SHR AH,1
    SHR AH,1
    CMP AH,0AH
    JC HEX2
    ADD AH,07H
    HEX2:ADD AH,30H
    RET
HEXTOASC ENDP
CODE ENDS
END MAIN

回复列表 (共1个回复)

沙发

啊,眼睛都看花了。

等我复制到记事本里放大了字体看。

楼主也不在源程序中加个注释什么的,哎。
让我慢慢研究一下先。

我来回复

您尚未登录,请登录后再回复。点此登录或注册