Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
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


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Space Pioneer starebbe realizzando un pr...
SpaceX ritirerà ''a breve'' il Fa...
La Luna ha un nuovo cratere di grandi di...
ROG Cronox: ASUS alza l'asticella dei ca...
Lenovo annuncia nuovi sistemi per la vir...
M6 e M5 Ultra, i primi benchmark conferm...
La nuova falla della cybersecurity &egra...
The Blood of Dawnwalker, il sequel potre...
Colpiti i data center Amazon: irrecupera...
Google Wallet, nuova interfaccia in arri...
iPhone Duo, problemi di produzione per i...
Firefox diventa più veloce con PDF e JPE...
WhatsApp, arriva su iOS la nuova scorcia...
Snap presenta Specs: realtà aumentata, c...
SteamOS verso un cambiamento epocale: ar...
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: 21:19.


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