2015-04-01 63 views
-2

多個輸入我需要閱讀的輸入和存儲,但輸入需要有超過1個位數,如45或55閱讀86

我已經使它工作,但我認爲這是可能的使其更好。我這樣做了:

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 

這可能嗎?我不能以其他方式做到這一點。

+1

DOS函數0Ah – 2015-04-01 22:44:27

回答

2

有在你的代碼

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 

一些問題,但是如果你需要的是一個2輸入字符時請考慮以下

mov  ah, 1 
int  21h   
mov  cl, 0Ah 
sub  al, 30h 
mul  cl 
mov  bl, al 
mov  ah, 1 
int  21h  
sub  al, 30h 
add  bl, al ; Largest number is 99 so it fits in BL 

或者即使不使用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 
+0

Fifoernik,非常感謝你!用一個很好的解釋解決了我的問題 – niarb 2015-04-02 17:23:19