Assembly 如何在汇编语言中显示总和和乘积?

Assembly 如何在汇编语言中显示总和和乘积?,assembly,x86-16,Assembly,X86 16,我试图用汇编语言显示所有的和和数和积数,但每当我试图得到积数时,它只是复制和数 .model small .stack .data a1 db"1st Input: $" a2 db"2nd Input: $" a3 db"The Sum of numbers: $" a4 db"The product of 3 numbers: $" space db"

我试图用汇编语言显示所有的和和数和积数,但每当我试图得到积数时,它只是复制和数

.model small
.stack
.data
    a1 db"1st Input: $"
    a2 db"2nd Input: $"
    a3 db"The Sum of numbers: $"
    a4 db"The product of 3 numbers: $"
    
    space db"                                                                    $"
.code

open:

    mov ax, @data
    mov ds, ax
    
    mov ah, 9
    mov dx, offset a1         
    int 21h
    
    mov ah, 1
    int 21h
    mov ch, al
    mov bh, al
    
    mov ah, 9
    mov dx, offset space         
    int 21h
    
    mov ah, 9
    mov dx, offset a2         
    int 21h
    
    mov ah, 1
    int 21h
    mov cl,al

    add ch, cl
    sub ch, 48
    
    mov al, cl
    mul bh
    
    mov ah, 9
    mov dx, offset space         
    int 21h
    
    mov ah, 9
    mov dx, offset a3         
    int 21h
    
    mov dl, ch
    mov ah,2
    int 21h

    mov ah, 9
    mov dx, offset space         
    int 21h
    
    mov ah, 9
    mov dx, offset a4         
    int 21h

    mov dl, al
    mov ah,2    
    int 21h
    
    mov ah, 4ch
    int 21h
    
end open

你的大部分代码都被打印的东西弄得乱七八糟。(如
space
与其他字符串没有明显的区别;您可以在其他字符串中放置空格或CR、LF。有时,一个字符带有
int 21h
/
ah=2
)。使用调试器检查寄存器值。并注释您的代码,这样其他人就不必浪费时间去弄清楚,在所有其他DOS调用之后,您的产品显然仍然应该在
al
中。(不会的;有些是垃圾,我没有注意到任何代码可以处理整型->ASCII转换,即使是一位数的转换。)