撰寫一個將整數作為引數的程式集宏。繼續將數字除以 10,直到它達到零。然后計算該數字中奇數位數的百分比。(例如如果 num=73458? 那么百分比是 = 3/5=0.6)
我的代碼
.model small
.code
.data
x dd 73458
MOV AX,@DATA
MOV DS,AX
mov si,offset x
mov ax,[si]
mov dx,[si 2]
mov cx,0
start:
cmp ax,0
je l2
mov bx,10
div bx
mov dl,al
mov dh,0
mov al,0
mov bl,2
div bl
cmp ah,0
jne l3
je l4
l4:
mov ax,dx
jmp start
l3:
inc cx
mov ax,dx
jmp start
l2:
mov dl,'0'
mov ah,2
int 21h
mov dl,','
mov ah,2
int 21h
mov ax,5
mov bh,0
mov bx,cx
div bl
mov dl,ah
mov ah,2
int 21h
end
但是上面有錯誤你能幫我避免錯誤嗎
uj5u.com熱心網友回復:
您已將 73458 加載到 DX:AX。第一次執行 DIV BX 后,DX 將是余數 (8),AX 將是結果 (7345)。您可以測驗余數是否為奇數,如下所示:
mov bx,10
start:
div bx
test dl, 1
jz l1 ; Bit zero is zero so the digit is even
inc cx ; Count up odd digit
l1:
test ax, ax ; If ax is zero, we are done
jz l2
xor dx, dx ; Set dx to zero for next divide
jmp start
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/352216.html
