mynumber1 db ?
mynumber2 db ?
mov ah,01h
int 21h
sub al, 30h <- ASCII to value
mov bl, 0Ah
mul bl <- multiply al with 10
mov mynumber1, al <- mynumber1 now stores the tens (i.e. if you entered 8 it's now 80)
mov ah,01h
int 21h
sub al, 30h <- ASCII to value, al now stores the ones
add mynumber1, al <- now your two-digit number is completely in mynumber1
現在重複相同的mynumber2
。然後:
mov al, mynumber1
mov bl, mynumber2
mul bl
現在該產品是在AX
。如果您真的需要,繼續將AX
的內容轉換回BCD。
下面的代碼將打印數量與存儲在AX 最多4位數:
xor dx,dx
mov bx,03E8h
div bx
call printdig
mov ax,dx
xor dx,dx
mov bx,0064h
div bx
call printdig
mov ax,dx
xor dx,dx
mov bx,000Ah
div bx
call printdig
;remainder from last div still in dx
mov al,dl
call printdig
請注意,您需要以下輔助函數,它從al
打印一個單一的數字:
printdig proc
push dx
mov dl,al
add dl,30h
mov ah,02h
int 21h
pop dx
ret
printdig endp
這個問題目前很不清楚。你的輸入是什麼樣的?輸出應該是什麼樣子?是否需要使用BCD?發佈代碼的相關部分。 – Michael
@Denson由於您正在閱讀來自鍵盤的輸入,因此無論如何您都需要從ASCII轉換,您並沒有被綁定到輸入格式。在我看來,在BCD中進行計算沒有任何優勢。如果你真的需要的話,用標準二進制進行計算,然後將結果轉換成BCD。 – us2012
如果可能,你可以詳細說明你的解決方案嗎? – Denson