|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2003
Città: Tunaland
Messaggi: 509
|
[Assembly] allocare variabile in registro
salve ragazzi!
Sto cercando di capire qualcosa di assembly... ma a volte non so da che parte girarmi... ho questo problema Codice:
La variabile Conta è da allocare in un registro (niente area dati!).
Il valore di AH e AL è fornito dalla costante run-time @data, il cui valore va strascritto nel sorgente.
Conta = 0
mentre AH >= AL
Conta ++
AH = AH -10
ripeti
domanda: cosa significa allocare una variabile in un registro? sarà una fesseria ma non trovo la risposta... intanto ho scritto questo: Codice:
.model small
.stack 100h
.data
conta db 0
.code
mov ax,@data
mov ds,ax
prog:
cmp ah,al
jae continua
mov ax,4c00h
int 21h
continua:
inc conta
sub ah,10
loop prog
end
Scusate, so che è un esercizio infantile... ma non so più dove sbatter la testa..
__________________
Ho fatto un prog Java per cellulari |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2009
Città: Varès
Messaggi: 658
|
a me non sembra nemmeno assembly il tuo...per che architettura stai facendo l'esercizio ?
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Feb 2003
Città: Tunaland
Messaggi: 509
|
8086... se non è assembly che cos'è?
__________________
Ho fatto un prog Java per cellulari |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2009
Città: Varès
Messaggi: 658
|
siccome ogni architettura ha il proprio assembly, ed essendo il tuo molto diverso dall'assembly canonico, non mi sembrava assembly...
comunque manca una condizione per uscire dal loop... personalmente sostituirei il loop con un salto condizionato, che è più efficiente |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Feb 2003
Città: Tunaland
Messaggi: 509
|
si si, il dubbio era mio... magari non si chiama assembly... è che sto aiutando un ragazzo a scuola lui mi ha detto che è assembly e io mi fido
ok poi mi guardo meglio il loop che non so usare... sai mica dirmi cosa significa "La variabile Conta è da allocare in un registro"? Grazie
__________________
Ho fatto un prog Java per cellulari |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
![]() a me il codice del primo post sembra perfettamente comprensibile come assembly x86. |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jul 2009
Città: Varès
Messaggi: 658
|
a volte mi chiedo se sei iscritto solo per polemizzare con la gente o anche per dare una mano ogni tanto ?! O.o
comunque io con assembly intendo il MIPS, essendo quello che a livello universitario, almeno dove studio io e molti miei amici, è quello incluso nei corsi di studio. l'x86 avendo avuto numerose evoluzioni, e continuando tuttora a cambiare, e avendo architettura di tipo CISC, non ho ancora trovato nessuno che la studi. tornando al problema... riguardo alla variabile conta, non sono sicuro di cosa possa voler dire la frase ma provo a darti una mia interpretazione. l'assembly che conosco io pone le variabili unicamente nei registri, si vede che l'x86 permette di registrare variabili in registri non del processore; forse devi evitare questo.. |
|
|
|
|
|
#8 | ||||
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
Quote:
![]() Quote:
comunque in genere negli ITIS studiano x86. Quote:
|
||||
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Come assembly va bene, e' proprio assembly x86 (che e' anche quello insegnato nel mio corso di studi).
Il programma pero' e' errato: 1. Non hai utilizzato "Il valore di AH e AL è fornito dalla costante run-time @data" Ovvero dovrebbe esserci una zona di memoria, una variabile, da cui caricare il valore nei registi AH e AL (AX) 2. Hai invece tenuto la variabile conta in memoria, mentre andava risolta a livello di registro come da indicazione (usa uno degli altri registri a disposizione che non sono utilizzati) 3. l'istruzione loop e' usata male, e serve per fare altro. Se devi semplicemente saltare, usa la jmp Resta che e' un programma assolutamente inutile. Mi spiego, non e' inutile di per se'. E' inutile il fatto che ti facciano calcolare il numero di iterazioni (il "conta") e poi non te lo facciano usare per niente. Come se fosse normale far fare qualcosa che non serve poi a nulla. Tantle' che i compilatori di alto livello ti avvisano (warning) che stai facendo qualcosa su una variabile, ma che non viene usata mai.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
In effetti un processore senza qualche possibilità di eseguire load/store è leggermente poco utile.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#12 | ||||
|
Senior Member
Iscritto dal: Feb 2003
Città: Tunaland
Messaggi: 509
|
dai ragazzi non litigate! su su su!!
Quote:
Quote:
Quote:
Quote:
Grazie mille Gugo, molto gentile
__________________
Ho fatto un prog Java per cellulari |
||||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:50.





















