两个多位十进制数相乘,并将结果送屏幕显示

; 两个多位十进制数相乘,并将结果送屏幕显示
DATAS SEGMENT
    X        DB    
4 , 5 , 6 , 7          ; 定义被乘数
    N1        EQU    $-X
    Y        DB    
1 , 2 , 3 , 4          ; 定义乘数
    N2        EQU    $-Y
    Z        DB    30H    DUP(?)
    P        DB    '4567X1234
= '
    Q        DB    30H    DUP(?)
DATAS ENDS

STACKS SEGMENT    STACK    'STACK'        
    DW        50H    DUP(?)
    TOP        LABEL    WORD
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES
, DS:DATAS , SS:STACKS
MAIN    PROC    FAR
START:
    MOV     AX
, DATAS
    MOV     DS
, AX
    MOV        AX
, STACKS
    MOV        SS
, AX
    MOV        SP
, OFFSET    TOP
    MOV        CL
, 4
    MOV        SI
, 0
    MOV        BX
, N2
LOOP1:
    MOV        CH
, Y [ BX-1 ]
    CALL    MMUL
    INC        SI
    DEC        BX
    JNZ        LOOP1
    MOV        SI
, DX
    MOV        BX
, 0
ASC:
    MOV        AL
, Z [ SI ]
    AND        AL
, 0FH
    OR        AL
, 30H
    MOV        Q
[ BX ] , AL
    INC        BX
    DEC        SI
    CMP        SI
, 0
    JNL        ASC
    MOV        Q
[ BX ] , '$'
DISP:
    MOV        AH
, 9
    MOV        DX
, OFFSET    P
    INT        21H
    MOV        AH
, 4CH
    INT        21H
    RET
MAIN    ENDP
MMUL    PROC    NEAR        
; 两个多位十进制数相乘,并输出结果
    PUSH    SI
    PUSH    BX
    MOV        BX
, N1
LOOP2:
    MOV        AL
, X [ BX-1 ]
    CALL    MULS
    CALL    DOUT
    INC        SI
    DEC        BX
    JNZ        LOOP2
    POP        BX
    POP        SI
    RET
MMUL    ENDP
MULS    PROC    NEAR
    PUSH    BX
    MOV        BL
, CH
    AND        AL
, 0FH
    AND        BL
, 0FH
    MUL        BL
    AAM
    POP        BX
    RET
MULS    ENDP
DOUT    PROC    NEAR
    PUSH    SI
NEXT:
    ADD        AL
, Z [ SI ]
    AAA
    MOV        Z
[ SI ] , AL
    MOV        AL
, AH
    XOR        AH
, AH
    INC        SI
    MOV        DX
, SI
    CMP        AL
, 0
    JNZ        NEXT
    POP        SI
    RET
DOUT    ENDP

CODES ENDS
    END START
Posted on 2010-11-02 16:02 JimmyZhang 阅读(421) 评论(0)   编辑  收藏 引用

你可能感兴趣的:(两个多位十进制数相乘,并将结果送屏幕显示)