PDA

View Full Version : [ASSEMBLY] Esercizi con codice


-Ivan-
06-07-2006, 15:55
Devo fare degli esercizi di assembly, ce ne sono alcuni che non mi riescono perchè non ho molto chiare delle cose, ad esempio il seguente:

Mat=3642.
Vetb è un vettore[100] di unsigned char.
Alla fine devo dire cosa è contenuto in ris2.

LEA ESI,Vetb
MOV AX,Mat
ADD ESI,10
MOV ECX,32
L2: MOV [ESI+ECX*2],AX
LOOP L2
ADD ESI,5
LEA EDI,Vetb
SUB ESI,EDI
MOV EBX,ESI
MOV CX,WORD PTR Vetb[EBX]
MOV Ris2,CX


Esi punta in pratica all'inizio del vettore. Quando io sommo 10 ad esi vuol dire che mi sposto nel vettore a destra di 10 bit? In questo caso facendo esi+ecx*2 poi non sarei più all'inizio di un byte se non sbaglio.

wingman87
06-07-2006, 16:01
Se sommi 10 ti sposti di 10 byte, non bit.

-Ivan-
11-07-2006, 14:05
Ho cannato l'esame al primo appello, adesso però punto al 30 :D e speriamo che vada.
Mi mancano giusto un paio di cose, una ve la chiedo qui:
in memoria come vengono memorizzati i numeri negativi? Con il complemento a 2?

Ad esempio se io faccio una sottrazione con segno di 3 e -8 il risultato -5 in memoria come viene memorizzato?

come 011 in complemento a 2 oppure con grandezza e segno oppure ancora in eccesso?

andbin
11-07-2006, 14:51
in memoria come vengono memorizzati i numeri negativi? Con il complemento a 2?Esatto, in complemento a 2.

Ad esempio se io faccio una sottrazione con segno di 3 e -8 il risultato -5 in memoria come viene memorizzato?Ma ... se dici sottrazione vuol dire che fai 3 - (-8), quindi 5. ;) O forse volevi fare 3 - 8??? (spiegati meglio eh)

Facciamo l'esempio su 8 bit di 3 - 8.
00000011 - (3)
00001000 (8)
========
11111011 (-5)

-Ivan-
11-07-2006, 18:31
Si scusa intendevo 3-8 ovviamente :D.
Ora ho capito grazie mille.

sirus
11-07-2006, 18:57
E ricorda che quando durante un operazione ottieni un valore negativo il BIT di STATO che indica che si tratta di numeri negativi (solitamente N) viene posto a 1 ;)

andbin
11-07-2006, 21:00
E ricorda che quando durante un operazione ottieni un valore negativo il BIT di STATO che indica che si tratta di numeri negativi (solitamente N) viene posto a 1 ;)Sui processori 80x86, il flag di stato che indica il segno è il bit 7 del registro EFLAGS e si chiama SF (Sign Flag). Si può ovviamente usare per fare dei salti condizionati:
MOV AX, 3
SUB AX, 8
JS ...... ; salta se il risultato è negativo