Assembly 在x86中读取多个输入

Assembly 在x86中读取多个输入,assembly,x86,Assembly,X86,我需要读取一个输入并存储它,但输入需要有超过1个数字,比如45或55 我已经做到了,但我认为有可能做得更好。我是这样做的: mov ah, 1 int 21h mov ah, 0 mov cl, 0Ah sub al, 30h ; mul cl mov bx, ax mov ah, 1 int 21h sub al, 30h ; '0' add bx, ax mov

我需要读取一个输入并存储它,但输入需要有超过1个数字,比如45或55

我已经做到了,但我认为有可能做得更好。我是这样做的:

mov     ah, 1
int     21h           
mov     ah, 0
mov     cl, 0Ah
sub     al, 30h ; 
mul     cl
mov     bx, ax
mov     ah, 1
int     21h     
sub     al, 30h ; '0'
add     bx, ax
mov     temp_val, bl
retn

可能吗?我不能用其他方法来做。

您的代码中有一些问题

mov     ah, 1
int     21h           
mov     ah, 0   ; <-- Here MOV AH,0 is useless because ...
mov     cl, 0Ah
sub     al, 30h
mul     cl      ; <-- ... MUL changes AH anyway
mov     bx, ax
mov     ah, 1
int     21h     
sub     al, 30h
                ; <-- Here you forgot MOV AH,0 so you can ...
add     bx, ax  ; <-- ... correctly add AX to BX
甚至不使用MUL指令和更短的

mov     ah, 1
int     21h           
mov     bl, al
mov     ah, 1
int     21h     
mov     ah,bl
sub     ax, 3030h
aad
mov     bl, al   ; Largest number is 99 so it fits in BL

菲弗尼克,非常感谢你!很好的解释解决了我的问题
mov     ah, 1
int     21h           
mov     bl, al
mov     ah, 1
int     21h     
mov     ah,bl
sub     ax, 3030h
aad
mov     bl, al   ; Largest number is 99 so it fits in BL