Torna indietro   Hardware Upgrade Forum > Software > Programmazione

 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco
Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco
MiniLED di fascia media con local dimming a 192 zone, 144 Hz nativi e audio firmato Devialet. La prova strumentale riscontra colori affidabili e gaming reattivo, per un prodotto molto accessibile e convincente. Ma la soundbar aggiuntiva è quasi d'obbligo
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto
Amazon porta i colori sul suo Kindle da scrittura più grande: schermo Colorsoft a 11 pollici, processore quad-core, penna premium più reattiva e strumenti IA per le note, sono le note salienti. Il salto di prezzo rispetto al modello in bianco e nero si fa sentire, anche se la percezione è quella di trovarsi di fronte a un prodotto di fascia altissima, per veri appassionati
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
Abbiamo intervistato Sumit Dhawan, CEO di Proofpoint, per capire come stia cambiando il mondo della sicurezza con l'avvento dell'intelligenza artificiale e con il ritmo sempre più serrato a cui vengono trovate vulnerabilità nel software. Un problema significativo, che richiederà del tempo per essere risolto (o quantomeno arginato)
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 15-04-2007, 09:26   #1
pmhwp
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 453
programmazione assembly Istruzione ADC

Salve a tutti,
Volevo capire bene come funziona l'istruzione ADC in assembly...
Qualcuno puo' farmi un esempio numerico?

Grazie.
pmhwp è offline   Rispondi citando il messaggio o parte di esso
Old 15-04-2007, 09:39   #2
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Quote:
Originariamente inviato da pmhwp Guarda i messaggi
Salve a tutti,
Volevo capire bene come funziona l'istruzione ADC in assembly...
Qualcuno puo' farmi un esempio numerico?

Grazie.
il mio libro di sistemi dice: l'istruzione ADC esegue l'addizione tenendo conto anche del riporto nell'istruzione precedente.

ADC operando1, operando 2

destinazione=destinazione+sorgente+valore del flag di carry

purtroppo esempi non ce ne sono..
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 15-04-2007, 11:05   #3
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da pmhwp Guarda i messaggi
Salve a tutti,
Volevo capire bene come funziona l'istruzione ADC in assembly...
ADC – Add with Carry
DEST <— DEST + SRC + CF

Quote:
Originariamente inviato da pmhwp Guarda i messaggi
Qualcuno puo' farmi un esempio numerico?
In genere una ADC è molto utile per fare somme a "precisione multipla". Esempio:

Codice:
VAL1            DD      12345678h
VAL2            DD      0000ABCDh
RES             DD      ?

....

                MOV     AX,[WORD PTR VAL1]
                MOV     DX,[WORD PTR VAL1+2]

                ADD     AX,[WORD PTR VAL2]
                ADC     DX,[WORD PTR VAL2+2]

                MOV     [WORD PTR RES],AX
                MOV     [WORD PTR RES+2],DX
In RES si ottiene il valore 12350245h. La somma dei 16 bit bassi ha prodotto un carry che è stato aggiunto con la ADC nella somma dei 16 bit alti.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-04-2007, 17:21   #4
pmhwp
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 453
Ciao,
nn sono molto esperto di assembly come avrete capito...
Volevo capire meglio il funzionamento di questa istruzione...

Ad esempio se ho tre variabili:
var1= 10100000
var2= 01011001
var3= 11100001

facendo :

add var1,var2
mov ax,var1
adc ax,var3

Quale sara' il risultato??
In pratica che faccio quando ce adc...addiziono i due termini e se ce riporto aggiungo uno???

Grazie.
pmhwp è offline   Rispondi citando il messaggio o parte di esso
Old 16-04-2007, 19:56   #5
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da pmhwp Guarda i messaggi
Ciao,
nn sono molto esperto di assembly come avrete capito...
Volevo capire meglio il funzionamento di questa istruzione...

Ad esempio se ho tre variabili:
var1= 10100000
var2= 01011001
var3= 11100001

facendo :

add var1,var2
mov ax,var1
adc ax,var3

Quale sara' il risultato??
Innanzitutto due cose: le istruzioni x86 con 2 operandi non possono avere entrambi gli operandi in memoria, quindi una add var1,var2 non esiste e non è fattibile. Seconda cosa, i valori binari di esempio che hai indicato sono su 8 bit e usando i registri a 16 bit non ottieni alcun carry.

Come ho già detto nel post precedente, uno degli utilizzi più tipici della ADC è nelle somme a "precisione multipla".
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-04-2007, 20:34   #6
pmhwp
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 453
Quindi allora....(scusami ma nn sono molto ferrato)
Ti spiego ho un compito e tra i possibili spezzoni di codice ci sarà anche il calcolo di un valore finale che passa per un adc.

Ho due valori a 16 bit...
Io faccio la somma tra questi valori e se ce un carry sommo uno al risultato??

Non so potresti farmi un esempio proprio numerico semplice semplice giusto per vedere l'operazione da fare??


Ti faccio un esempio per farti capire meglio...
Codice:
W11 dw 0123h
W12 dw 1102h
W21 dw 0012h
W31 dw ?
W32 dw ?

mov ah,bch
mov a1,10h
add a1,02h
sub ax,W12
add ax,W22
mov W32,ax
mov ax,W11
ADC AX,W21
MOV W31,AX
E chiede i valori finali di W31 e W32...
Quindi arrivato a ADC che faccio matematicamente?Li sommo e...

Ti Ringrazio nuovamente.

Ultima modifica di pmhwp : 16-04-2007 alle 20:39.
pmhwp è offline   Rispondi citando il messaggio o parte di esso
Old 16-04-2007, 20:39   #7
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da pmhwp Guarda i messaggi
Ho due valori a 16 bit...
Io faccio la somma tra questi valori e se ce un carry sommo uno al risultato??
Ma ti è chiaro il concetto del "carry", cioè del riporto??
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-04-2007, 20:45   #8
pmhwp
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 453
Credo di si...
dovrebbe essere quando ad esempio abbiamo
10000000+
10000000=
------------
e quindi si ha il carry no??

pmhwp è offline   Rispondi citando il messaggio o parte di esso
Old 16-04-2007, 20:57   #9
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da pmhwp Guarda i messaggi
Credo di si...
dovrebbe essere quando ad esempio abbiamo
10000000+
10000000=
------------
e quindi si ha il carry no??
Esatto, in generale la somma dei due bit più significativi con in più il carry dal bit precedente genera un nuovo carry, che è quello che poi viene memorizzato nel flag CF.

Anche situazioni del tipo:
Codice:
   11
    01000000
    11000000
   ---------
   100000000
   |
 carry
Capisci quindi che non ha molto senso sommare 2 valori qualunque e poi fare una ADC tra due altri valori che non hanno alcuna relazione particolare con i primi due.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-04-2007, 21:00   #10
pmhwp
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 453
Si ma il problema è questo...ho un esame e tra i vari esercizi ce ne sarà uno simile a quello che ti ho fatto vedere...
Come devo comportarmi quando arrivo a ADC???
Sommo semplicemente i due valori e vado avanti aggiungendo il carry se ce??

Vorrei solo una spiegazione di come svolgerlo su carta...giusto per risolvere questo esercizio...

Scusami per la mia poca pratica
Ancora Grazie.
pmhwp è offline   Rispondi citando il messaggio o parte di esso
Old 16-04-2007, 21:15   #11
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da pmhwp Guarda i messaggi
Come devo comportarmi quando arrivo a ADC???
Sommo semplicemente i due valori e vado avanti aggiungendo il carry se ce??
In che senso??? ADC già di per sé aggiunge il carry se c'è.

Per esempio se date 4 variabili volessi sommarle tutte insieme e poi "accumulare" i carry su un'altra variabile, potrei fare così:
Codice:
VAL_A   DW      6234h
VAL_B   DW      9657h
VAL_C   DW      8234h
VAL_D   DW      9893h
RES     DW      ?
CARRY   DW      ?

MOV     CX,0
MOV     AX,VAL_A
ADD     AX,VAL_B
ADC     CX,0
ADD     AX,VAL_C
ADC     CX,0
ADD     AX,VAL_D
ADC     CX,0
MOV     RES,AX
MOV     CARRY,CX
Alla fine in RES ho 1352h e in CARRY ho 0002h. Vuol dire che la somma dei 4 valori ha dato un valore complessivo di 21352h.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-04-2007, 21:22   #12
pmhwp
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 453
aaaah ma allora nn ce niente di complicato....basta scrivere il risultato no?
Quindi se ce questo carry io lo scrivo normalmente e vado avanti...
Giusto??

Mentre il solo add se incontra questo carry da errore???

Ci sto arrivando sembra...ehehe
pmhwp è offline   Rispondi citando il messaggio o parte di esso
Old 16-04-2007, 21:29   #13
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da pmhwp Guarda i messaggi
Mentre il solo add se incontra questo carry da errore???
Ma no. Sia ADD che ADC generano un carry, la differenza è che ADC "riceve" un carry che aggiunge nella somma.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-04-2007, 21:35   #14
pmhwp
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 453
Quote:
la differenza è che ADC "riceve" un carry che aggiunge nella somma.
mentre add nn se ne fa di niente??
pmhwp è offline   Rispondi citando il messaggio o parte di esso
Old 16-04-2007, 21:40   #15
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da pmhwp Guarda i messaggi
mentre add nn se ne fa di niente??
Infatti non tiene in considerazione il flag di carry prima della somma.

Per farti capire meglio le somme a precisione multipla: tu hai 2 numeri a 32 bit che sono 12648932h e 42737793h. La loro somma è 54D800C5h. Volendo fare la somma solo con operandi a 16 bit, si deve fare:
Codice:
         _
        / \
       1  |
    1264  |  8932 +
    4273  |  7793 =
   ------ | -------
    54D8  | 100C5
          \_/
Per fare la somma di 8932h + 7793h usi una ADD (che ci frega del carry??) mentre per fare la somma di 1264h + 4273h usi una ADC, perché così il riporto si "propaga" nella parte alta.
Chiaro adesso?
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-04-2007, 21:47   #16
pmhwp
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 453
Si! ci sono!

Quindi per la parte alta e la parte bassa io divido in due il numero e li identifico pero' con quale registri (per esempio ax con ah e al giusto?)

Sei un mago sto capendo...

pmhwp è offline   Rispondi citando il messaggio o parte di esso
Old 16-04-2007, 21:50   #17
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da pmhwp Guarda i messaggi
Quindi per la parte alta e la parte bassa io divido in due il numero e li identifico pero' con quale registri (per esempio ax con ah e al giusto?)
Che registri usare, dipende da dove sono i valori (se in memoria o in altri registri), questo lo devi vedere tu.
Non credo di riuscire a spiegare l'uso della ADC meglio di quanto ho fatto con il "disegnino" della somma che ho riportato sopra.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-04-2007, 21:53   #18
pmhwp
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 453
Si si dai comunque ora ho capito...
e poi con quel disegno sei stato proprio un fenomeno!

Ti Ringrazio davvero.
Ciaoooo
pmhwp è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto Kindle Scribe Colorsoft: riduce le cornici e div...
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint L'IA cambia tutte le regole della sicurezza tra ...
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
Visa, Mastercard e Coinbase lanciano Ope...
PS Plus Essential: nei giochi 'gratis' d...
LEGO lo ha fatto ancora! Ecco le 22 mini...
Google perde il ricorso: la Corte UE con...
Basta un tocco, così qualsiasi oggetto d...
Intel ha rivisto al rialzo i prezzi cons...
Batterie domestiche, boom da record nei ...
Lenovo Idea Tab Plus: 12,1 pollici e Dol...
Fiat svela Multiplina Concept: l’erede e...
Facebook e Instagram sono progettati per...
Amazon lancia la sfida dei chip AI: semi...
The Elder Scrolls VI: lo sviluppo c...
Samsung Galaxy S25 Edge 256GB al minimo ...
Un pianeta sette volte più grande della ...
Fastweb, quinta rimodulazione del 2026: ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 13:37.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v