|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2003
Città: Bruxelles
Messaggi: 3888
|
programma assembler elementare :(
ciao a tutti,
sono alla disperazione...devo fare un programme in assembler per un processore intel 8051 che mi trovi il minimo tra 4 numeri e lo metta in un registro...questa è la traccia in sintesi: A <- min(A,B,R0,R1) il programma dovrebbe essere molto facile solo che nn riesco a fare l'if...ho provato a usare i jmp solo che cmq poi lui mi svolge l'ultima parte e quindi nn funziona come diavolo si fa???? vi prego di aiutarmi...per chi ci capisce dovrebbe essere una cosa di poki minuti...ma a noi ci hanno dato da fare sto programma senza averci spiegato niente...riesco a fare gli altri ma questo con la scelta del maggiore o minore nn lo riesco a fare! la linea che ho provato a seguire è stata quella di fare la sottrazione tra a e b...di vedere se aggiungendo 128 (lo scrivo in decimale solo per comodità) al risultato il numero andava in overflow o no...se nn andava allora a>b...altrimenti b>a...solo che cmq nn riesco a fargli prendere la decisione! spero che qualcuno mi aiuti a fare questa cosa grazie a tutti ciao |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
8051 ????? Mai visto microprocessore con questa sigla... Forse è un micrcontrollore ?
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ah...trovato... Ma viene usato come microcontrollore...
http://www.cs.ucr.edu/~dalton/8051/ |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Sep 2003
Città: Bruxelles
Messaggi: 3888
|
Quote:
si è un microcontrollore della intel...non sai aiutarmi?? |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
No
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Sep 2003
Città: Bruxelles
Messaggi: 3888
|
Quote:
ma il linguaggio nn dovrebbe essere molto molto simile? perkè il programma x chi sa l'assembler dovrebbe essere una cosa da fare in 10 secondi |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
L'assembly può essere molto diverso da chip a chip , probabilmente anche se è un chip Intel l'assembly per i8051 sarà molto diverso da quello di un qualsiasi altro chip x86 (che è l'assembly che la maggiorparte della gente qua conosce) .
Bisognerebbe avere info sulle istruzioni che questo chip riconosce , sui registri che possiede , su come usa la memoria .... Ciao
__________________
GPU Compiler Engineer |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Sep 2003
Città: Bruxelles
Messaggi: 3888
|
Quote:
vi prego aiutatemi che nn so che fare |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Posta quello che hai scritto... Guardiamo se ti possiamo aiutare...
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Sep 2003
Città: Bruxelles
Messaggi: 3888
|
Quote:
diciamo che devo trovare solo il minimo tra 2 numeri per comodià: mov a,r0 mov b,r1 mov c,r2 (qui nel registro metto un numero che sarà in decimale 128, cioè un numero che sommato al risultato mi da un numero negaivo, iniziante per 1, se il risultato era positivo; mentre mi va in overflow se il risultato era negativo...in questo modo so se il risultato della differenza è maggiore o minore di 0 e quindi stabilisco se A è + grande di B o no) subb a,r1 add a,r2 jnc nocar1 mov a,r0 nocar1: mov a,r1 il minore lo scrivo cmq in a! la cosa che mi frega...è che lui cmq fa sempre l'ultima operazione !mentre io vorrei invece che la facesse solo in un caso...cioè quando il carry nn c'è! probabilmente ragiono in c++...e vorrei fare qualcosa come if/esle...solo che qua nn riesco a fargli fare una cosa o l'altra...lui le fa sempre cmq entrambe...a meno che nn fa il jump e va alla fine come devo fare? PS: se nn è chiara qualcosa (come sicuramente sarà)...ditelo che provo a spiegarvi meglio! HELP!!! |
|
|
|
|
|
|
#11 |
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Ultima modifica di repne scasb : 03-02-2005 alle 16:56. |
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Sep 2003
Città: Bruxelles
Messaggi: 3888
|
Quote:
allora sembra tutto ok...solo che alla fine c'è qualcosa che nn va...infatti nel label 2 lui l'ultima operazione che fa è quella di scrivere a in r4...dove a xò è diventata a-r3...quindi nn mi scrive il risultato del minimo ma quello della sottrazione come va modificato? |
|
|
|
|
|
|
#13 |
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Ultima modifica di repne scasb : 03-02-2005 alle 16:53. |
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Sep 2003
Città: Bruxelles
Messaggi: 3888
|
Quote:
ho già controllato intanto grazie davvero...sei stato gentilissimo! il prog funziona solo che in un caso c'è un errore...nel caso a sia il + piccolo lui alla fine del label 2 copia a in r4 dove a xò è la differenza di a-r3 e quindi sballa il risulato! poi devo fare delle piccole modifiche ai nomi xchè il tuo programma verifica i numeri scritti da registro...mentre il mio deve prendere 2 numeri da registro e 2 da accumulatore( a e b)...e poi il risultato lo devo mettere in a e non in r4! ma dimmi una cosa...come fa a vedere dal carry se la differenza è positiva o negativa? |
|
|
|
|
|
|
#15 |
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Ultima modifica di repne scasb : 03-02-2005 alle 16:52. |
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Sep 2003
Città: Bruxelles
Messaggi: 3888
|
Quote:
mov a,r4 subb a,r3 jc label_03 mov a,r4 è quello il problema...che alla fine io copio r4 in a...quindi ci metto il risultato sbagliato |
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Sep 2003
Città: Bruxelles
Messaggi: 3888
|
allora ho fatto le prove ed hai ragione...avevo sbagliato a leggere...pardon!
mi spiehi un pò come fa a capire dal carry se la differenza è un numero positivo o negativo??? altra cosa...io alla fine devo scrivere il risultato in a (così dice la traccia)...come faccio visto che a lo usi come accumulatore? la traccia precisa è: dati A,B,r0, r1...trovare il minimo e metterlo in A. come modifico il programma? scusa ancora ma il prof nn è che ci ha spiegato molto e ieri ci siamo scervellati |
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Sep 2003
Città: Bruxelles
Messaggi: 3888
|
allora
scusa ma ho ricontrollato tutto e nn funziona...infatti l'ultima istruzione di ogni label copia a in r4...ma a è la differenza nno è + il numero di partenza...quindi in r4 nn mi ritrovo il numero minore la differenza! |
|
|
|
|
|
#19 |
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Ultima modifica di repne scasb : 03-02-2005 alle 16:52. |
|
|
|
|
|
#20 |
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Ultima modifica di repne scasb : 03-02-2005 alle 16:52. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:58.


















