我將嘗試對 Bases 進行編碼,我正在嘗試使用 bases 進行編碼,但是當我編碼時,會出現正確的等效值,但會出現更多不正確的等效項。我的代碼有什么問題?
我的代碼:需要輸入 2 位數字并根據所需的基數范圍,將出現等效的基數。如果您注意到我沒有任何比較來確定是否需要輸入基數 3 或所需的基數,我會在下一個,但首先我必須考慮我的代碼邏輯有什么問題。
我在記事本 中的代碼:
.model small
.stack 100h
.data
Spc db 0dh,0ah, " $" ;New Line
;Bases Conversion
ConT db 0dh,0ah, " Conversion $" ;Conversion Title
ConBs3 db 0dh,0ah, "Base 3 to Base 5 "
db 0dh,0ah,0dh,0ah, "Base 3 [00 to 22] : $" ;Enter Base 03 Number
EqBs3 db 0dh,0ah, "Base 5 Equivalent : $" ;Equivalent Base 05
ConBs4 db 0dh,0ah, "Base 4 to Base 5 "
db 0dh,0ah,0dh,0ah, "Base 4 [00 to 33] : $" ;Enter Base 04 Number
EqBs4 db 0dh,0ah, "Base 5 Equivalent : $" ;Equivalent Base 05
ConBs5 db 0dh,0ah, "Base 5 to Base 4 "
db 0dh,0ah,0dh,0ah, "Base 5 [00 to 44] : $" ;Enter Base 05 Number
EqBs5 db 0dh,0ah, "Base 4 Equivalent : $" ;Equivalent Base 04
.code
main proc
mov ax,@data ;initialize ds
mov ds,ax
Base3:
mov ah,09h
lea dx, Spc ;new line
int 21h
lea dx, ConT
int 21h
lea dx, ConBs3
int 21h
mov ah,01h
int 21h ;1st Digit
sub al,30h
mov ch,al
mov ah,01h
int 21h ;2nd Digit
sub al,30h
mov cl,03h
mul cl
mov bx,ax
Con1:
add ch,bl
mov ax,0000h
mov al,ch
mov bh,05h
div bh
mov cx,ax
add cx,3030h
mov ah,09h
lea dx, EqBs3
int 21h
mov ah,02
mov dl,cl
int 21h
mov dl,ch
int 21h
Base4:
mov ah,09h
lea dx, Spc ;new line
int 21h
lea dx, ConBs4
int 21h
mov ah,01h
int 21h ;1st Digit
sub al,30h
mov ch,al
mov ah,01h
int 21h ;2nd Digit
sub al,30h
mov cl,04h
mul cl
mov bx,ax
Con2:
add ch,bl
mov ax,0000h
mov al,ch
mov bh,05h
div bh
mov cx,ax
add cx,3030h
mov ah,09h
lea dx, EqBs4
int 21h
mov ah,02
mov dl,cl
int 21h
mov dl,ch
int 21h
Base5:
mov ah,09h
lea dx, Spc ;new line
int 21h
lea dx, ConBs5
int 21h
mov ah,01h
int 21h ;1st Digit
sub al,30h
mov ch,al
mov ah,01h
int 21h ;2nd Digit
sub al,30h
mov cl,05h
mul cl
mov bx,ax
Con3:
add ch,bl
mov ax,0000h
mov al,ch
mov bh,04h
div bh
mov cx,ax
add cx,3030h
mov ah,09h
lea dx, EqBs5
int 21h
mov ah,02
mov dl,cl
int 21h
mov dl,ch
int 21h
mov ah,4Ch ;end here
int 21h
main endp
end main
等效輸出誤差:

uj5u.com熱心網友回復:
建號有問題
mov ah,01h int 21h ;1st Digit sub al,30h mov ch,al mov ah,01h int 21h ;2nd Digit sub al,30h mov cl,03h mul cl mov bx,ax
您輸入它的第一個數字是最高有效數字,這是您需要乘以數字基數的數字。您的代碼錯誤地將最低有效數字相乘!
mov ah, 01h
int 21h ; 1st Digit
sub al, 30h
mov cl, 3 ; Radix
mul cl
mov ch, al ; -> CH = MostSignificantDigit * Radix
mov ah, 01h
int 21h ; 2nd Digit
sub al, 30h
add ch, al ; -> CH = MostSignificantDigit * Radix LeastSignificantDigit
其他數基也一樣。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/486388.html
上一篇:匯編x86x的b次方
