Ciao a tutti, stavo cercando di fare questo esercizio di assembler: chiede di calcolare il massimo comune divisore tra due numeri dati in memoria, applicando l'algoritmo di euclide; ho provato a implementarlo ma ho riscontrato un problema nella procedura. infatti alla riga:
non so perchè ma quando bx diventa zero si pianta su questa istruzione! non vorrei aver sbagliato istruzione, ma mi pare che jz stia per "JUMP IF ZERO", quindi se bx è zero dovrebbe saltare all'etichetta fine! Invece rimane su quella istruzione e tipo va avanti fino a quando non da questo errore:
Posto qua sotto tutto il programma sviluppato:
PS: programmo con emu86 su winXP.
codice:
.model small
.stack
.data
var1 dw 6
var2 dw 4
tmp dw ?
mcd dw 0
.code
.startup
mov ax, var1
mov bx, var2
call max_cm_div
mov mcd, ax
.exit
max_cm_div proc
ciclo: cmp bx, 0
jz fine
mov tmp, bx
xor dx, dx
div bx
mov bx, dx
mov ax, tmp
jmp ciclo
fine:
endp
end