該彙編代碼應該計算10個用戶輸入的4位數字的平均值,但我不知道爲什麼輸入的數字總是以2340作爲平均值。彙編中10個用戶輸入數字的平均值
data segment
sum dw 2dup(0)
msg1 db 'Enter 10 numbers:', 0dh,0ah,'$'
msg2 db 'Average= ','$'
ends
stack segment
dw 10dup(0)
ends
code segment
assume cs:code,ds:data,ss:stack
main proc far
mov ax, data
mov ds, ax
mov ax, stack
mov ss, ax
mov ah, 09h
mov dx, offset msg1
int 21h
mov ch, 10
NextNumber:
mov cl, 4
mov di, 0
get:
mov ah, 07h
int 21h
cmp al, 30h
jb get
cmp al, 39h
ja get
mov ah, 02h
mov dl, al
int 21h
sub al, 30h
mov bl, al
mov ax, 10
mul di
mov bh, 0
add ax, bx
mov di, ax
dec cl
jnz get
add sum, di
mov sum+2, 0
adc sum+2, 0
mov ah, 02h
mov dl, 0ah
int 21h
mov dl, 0dh
int 21h
dec ch
jnz NextNumber
mov dx, sum+2
mov ax, sum
mov bx, 10
div bx
mov ah, 09h
mov dx, offset msg2
int 21h
mov cx, 4
mov bx, 10
next1: mov dx, 0
div bx
push dx
dec cx
jnz next1
mov cx,4
next2: pop dx
add dl, 30h
mov ah, 02h
int 21h
dec cx
jnz next2
mov ah, 4ch
int 21h
main endp
ends
end main
如果您不能使用調試器來做到這一點,那麼您可以在方法中添加一些打印件以查看您的值變差的時間。輸入後打印'al'並在分割後打印,等等。對於這樣一個小程序,你應該能夠用幾個打印快速調試它。 –
謝謝你,我調試它並發現問題。 – Asnira