注册 登录
编程论坛 汇编论坛

任意五个数字相加 要求判断 求助!!!!

陛下 发布于 2010-12-24 17:26, 541 次点击
程序代码:
这个是我做的 但是我不知道怎么回事输进去的数字相加错误
求解...
DATA SEGMENT
    X      DB 5 DUP(?)
    Y      DB 5 DUP(?)
    Z      DB 5 DUP(?)
    STR    DB "Please input the string numbers$"
   
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
    MOV AX,DATA
    MOV DS,AX
GO:     LEA DX,STR
        MOV AH,09H
        INT 21H
    MOV SI,0
    MOV CX,5
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
BG:
    MOV AH,01H
    INT 21H
    CMP AL,3O  ;判断al减去30h是否大于等于0
    JS GO       ;小于0继续跳到输入BG
    CMP AL,3AH
    JNS GO
    SUB AL,3O
    MOV X[SI],AL
    INC SI
    LOOP BG
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
    MOV DL,2BH   ;'+'
    MOV AH,02H
    INT 21H
;++++++++++++++++++++++++++++++++++++++++++++++++++++
BG1:   
    MOV SI,0
    MOV CX,5
;+++++++++++++++++++++++++++++++++++++++++++++++++++
BG2:
    MOV AH,01H
    INT 21H
    CMP AL,30H
    JS BG1
    CMP AL,3AH
    JNS BG1
    SUB AL,30H
    MOV Y[SI],AL
    INC SI
    LOOP BG2
;++++++++++++++++++++++++++++++++++++++++++++++++++
    MOV DL,3DH
    MOV AH,02H
    INT 21H
;++++++++++++++++++++++++++++++++++++++++++++++++++
    MOV SI,4
    MOV CX,5
    MOV AH,0
OPR1:    MOV AL,X[SI]
    MOV BL,Y[SI]
    ADD AL,BL
    AAA
    MOV Z[SI],AL
    DEC SI
    LOOP OPR1
;+++++++++++++++++++++++++++++++++++++++++++++++++++
    SUB AH,0
    JNZ OPR2
    JMP OPR3
OPR2:
    MOV DL,AH   
    ADD DI,30H
    MOV AH,02H
    INT 21H
OPR3:
    MOV SI,0
    MOV CX,5
FINAL:    MOV AL,Z[SI]
    ADD AL,30H
    INC SI
    MOV DL,AL
    MOV AH,02H
    INT 21H
    LOOP FINAL
    JMP   $
CODE ENDS
    END START
   
;+++++++++++++++++++++++++++++++++++++++++++++++++++   
   


1 回复
#2
xiaomarn2010-12-24 21:23
程序代码:
DATA SEGMENT
    X      DB 5 DUP(?)
    Y      DB 5 DUP(?)
    Z      DB 5 DUP(?)
    STR    DB "Please input the string numbers",'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
    MOV AX,DATA
    MOV DS,AX
GO:     LEA DX,STR
        MOV AH,09H
        INT 21H
    MOV SI,0
    MOV CX,5
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
BG:
    MOV AH,01H
    INT 21H
    CMP AL,30h  ;判断al减去30h是否大于等于0
    JS GO       ;小于0继续跳到输入BG
    CMP AL,3AH
    JNS GO
    SUB AL,30h
    MOV X[SI],AL
    INC SI
    LOOP BG
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
    MOV DL,2BH   ;'+'
    MOV AH,02H
    INT 21H
;++++++++++++++++++++++++++++++++++++++++++++++++++++
BG1:  

    MOV SI,0
    MOV CX,5
;+++++++++++++++++++++++++++++++++++++++++++++++++++
BG2:
    MOV AH,01H
    INT 21H
    CMP AL,30H
    JS BG1
    CMP AL,3AH
    JNS BG1
    SUB AL,30H
    MOV Y[SI],AL
    INC SI
    LOOP BG2
;++++++++++++++++++++++++++++++++++++++++++++++++++
    MOV DL,3DH    ;'='
    MOV AH,02H
    INT 21H
;++++++++++++++++++++++++++++++++++++++++++++++++++
    MOV SI,4
    MOV CX,5
    MOV AH,0
   

OPR1:    MOV AL,X[SI]
    MOV BL,Y[SI]
    add AL,BL
    add al,ah
    cmp al,0ah
    jb oop
    mov ah,1
    sub al,0ah
    jmp oop2
oop:
    xor ah,ah
oop2:
    MOV Z[SI],AL
    DEC SI
    LOOP OPR1
;+++++++++++++++++++++++++++++++++++++++++++++++++++
    SUB AH,0
    JNZ OPR2
    JMP OPR3
OPR2:
    MOV DL,AH  

    ADD DI,30H
    MOV AH,02H
    INT 21H
OPR3:
    MOV SI,0
    MOV CX,5
FINAL:    MOV AL,Z[SI]
    ADD AL,30H
    INC SI
    MOV DL,AL
    MOV AH,02H
    INT 21H
    LOOP FINAL
    mov ah,4ch
    int 21h
CODE ENDS
    END START
ok,输入时不要换行,没加入输入了非数字不显示的功能
1