Ciao a tutti, sto avendo un problema con un esercizio sull'assembler, che non mi effettua l'addizione con i numeri contenuti nei vettori, (uso emu8086 come programma).
La trama è:
- Scrivere un programma assembler che calcoli la media di 4 cifre (0..9) inserite in un vettore definito nel segmento dati.
il codice è questo:
; calcolo media di 4 cifre (0..9) inserite in un vettore definito nel segmento dati
data segment
numeri db 2,2,2,2 ; cifre definite di cui calcolare la media
quattro db 4; dividendo
data ends
code segment
assume CS:CODE,SS:STACK,DS:DATA
inizioprogramma:
MOV AX,DATA
MOV DS,AX
MOV AX,0; inizializzo ax
MOV SI,0; inizializzo il contatore si
MOV BX,offset numeri; carico l'offset nel vettore BX
sommatot:
CMP SI,4
JE dividi; se si e' uguale a 4 salta a dividi
ADD AL,byte ptr[bx+si] ; sommo i numeri
INC SI; incrementa il contatore si
JMP sommatot ;salta sempre a sommatot
dividi:
DIV quattro; divido AX:QUATTRO
code ends
Vi metto alcuni screenshot di quello che esce nei registri:
- Qui esce direttamente 70 (invece dovrebbe essere inserito 2) in AL.


- qui invece va da 70 a 71 (invece di 4):

- infine nell'ultimo ciclo di ADD AL,byte ptr[bx+si] va direttamente a 65:

Non capisco l'errore dove sia. Mi potete aiutare?