|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Dec 2001
Città: Lecce
Messaggi: 3936
|
[asm] somma
nella speranza che ci sia qualche anima pia che capisca qualcosa di asm 8086 vi posto il mio problema:
ho un vettore: vettore db 0F1h, 03Bh, 052h, 07Eh, 096h; devo fare la somma di tutti gli elementi, e dividirla per il loro numero (8), avevo pensanto a un qualcosa del tipo: mov si,4h ;contatore xor ax,ax som: add al,vettore[si] dec si cmp si,0 jne som mov bl,08h div bl il problema è che, ovviamente, quando sommo perdo il riporto inizialmente avevo pensato a una somma a 16 bit, add ax,vettore[si] il problema è che invece di sommare mi scriveil primo elemento nella parte bassa, il primo nella parte alta e poi inizia a sommare |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
Per il riporto usa adc e non add...........
ciao |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Dec 2001
Città: Lecce
Messaggi: 3936
|
Quote:
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
devi lavorare con registrpo a 16 bit ax
...... il totale della somma di al è 532, ma al può contenere al massimo 255, per questo fai overfloow 2 volte, il ltoale dopo la divisione con al, ti considera: 20/8 = 2.5..... (ovvero 2, in quanto naturalmente non considera la virgola) quindi 532-512 = 20 (risultato di al dopo i due overfloow) ...quindi devi usare adc per ricordare il riporto e ax e bx a 16 bit per avere il numero sotto 65535 ciao |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Dec 2001
Città: Lecce
Messaggi: 3936
|
Quote:
add al,vettore[bx] adc ah,0 |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:56.



















