Ata Postat Octombrie 22, 2012 Partajează Postat Octombrie 22, 2012 Salutare .Cum pot scapa de urmatoarea eroare care i-mi apare la asamblarea unui fisier .asm,linia este urmatoarea:retlw .18D ---- eroare : Illegal digit (D in decimal).Daca scriu in hexretlw 18Dh ---- eroare : Argument out of range. Least significant bits used.Toate cele bune. Link spre comentariu
nico_2010 Postat Octombrie 22, 2012 Partajează Postat Octombrie 22, 2012 Cred ca corect ar fi: "retlw .18" sau retlw D'18' Link spre comentariu
Ata Postat Octombrie 22, 2012 Autor Partajează Postat Octombrie 22, 2012 Nu este corect , ca i-mi da alt -rezultat-In decimal .18D , in hex 18DhLa 18Dh este 397, daca ar fi 18 ar da 24. Link spre comentariu
costi002 Postat Octombrie 22, 2012 Partajează Postat Octombrie 22, 2012 cu .18 ai incercat? Link spre comentariu
Liviu M Postat Octombrie 22, 2012 Partajează Postat Octombrie 22, 2012 Da' tu de fapt ce numar vrei sa folosesti? Mesajele din primul post spun ca folosesti "cifra D" intr-un numar zecimal (primul mesaj) si ca numarul nu incape - registrul W e pe 8 biti si 0x18D (18Dh) are 9 biti (in al doilea mesaj). In ambele cazuri compilatorul/asamblorul are dreptate. RETLW Return with Literal in W Syntax: [ label ] RETLW k Operands: 0 ≤ k ≤ 255 Operation: k → (W); TOS → PC Status Affected: None Description: The W register is loaded with the eight bit literal 'k'. The program counter is loaded from the top of the stack (the return address). This is a two-cycle instruction. Link spre comentariu
Ata Postat Octombrie 22, 2012 Autor Partajează Postat Octombrie 22, 2012 I-mi trebuie o intarziere de 39.7mS.Daca introduc in programul care i-mi calculeaza intarzierea, 18Dh, i-mi da ce doresc.Dar la asamblarea in hex i-mi da eroarile de care zic. Am incercat in ambele variante ca sa vad daca accepta sa asambleze.Unde trebuie modificat si cum daca se poate.Atasez fisierul.Multumesc. asm.txt Link spre comentariu
10vid Postat Octombrie 22, 2012 Partajează Postat Octombrie 22, 2012 Sistemul de numerotatie folosit se cheama RADIX. Sintaxa corecta pentru diferite radix-uri in MPASM este: Dar daca scrii mult intr-un anume format, de exemplu sunt unii care scriu totul in hex, si varsta si-o scrie in hex, pentru aia exista directiva radix hex ce se da la inceputul programului. Daca scrii in principal in zecimal, vei pune directiva radix dec si atunci scapi de scris apostroafele si litera de la inceput. Alternativ se poate da din pereastra MPASM-ului ce format sa fie interpretat, daca nu se specifica cu litera si apostrof. Daca se bifeaza optiunea Default, radixul folosit va fi cel dat de directiva din program, iar daca nu exista, atunci hex. Link spre comentariu
Ata Postat Octombrie 22, 2012 Autor Partajează Postat Octombrie 22, 2012 Am schimbat in cele 4 alternative; Default, Hexadecimal, Decimal, Octal si da aceleasi erori.Acolo am valori ce depasesc ff=255 si acelea merg, doar cele care contin o litera nu merg, as putea modifica 18Dh=decimal 397 in 190h=decimal 400, dar atunci se mareste retardul si nu as vrea. Link spre comentariu
10vid Postat Octombrie 22, 2012 Partajează Postat Octombrie 22, 2012 M-am uitat prin acel program, si intradevar cum spunea si Liviu, valoarea de returnat depaseste 8 biti. Rezuma-te cumva la 0xFF. Link spre comentariu
Ata Postat Octombrie 22, 2012 Autor Partajează Postat Octombrie 22, 2012 Am modificat postul anterior. Link spre comentariu
10vid Postat Octombrie 22, 2012 Partajează Postat Octombrie 22, 2012 Nu da erori dar da warning: argument out of range, least significant bits used. La toate care depasesc 0ffh, nu doar la cele cu litera. Link spre comentariu
Ashky Postat Octombrie 22, 2012 Partajează Postat Octombrie 22, 2012 Am schimbat in cele 4 alternative; Default, Hexadecimal, Decimal, Octal si da aceleasi erori.Acolo am valori ce depasesc ff=255 si acelea merg, doar cele care contin o litera nu merg, as putea modifica 18Dh=decimal 397 in 190h=decimal 400, dar atunci se mareste retardul si nu as vrea.Cum au spus si colegii nu poti depasi .255 sau 0xff, nu litera il deranjeaza ci faptul ca vrei sa bagi intr-un registru de 8 biti un numar mai mare Link spre comentariu
Ata Postat Octombrie 22, 2012 Autor Partajează Postat Octombrie 22, 2012 Dar cum pot scrie ca sa am acelasi rezultat?Dupa cum se vede in fisier sunt linii care depasesc 255 si nu dau erori. Link spre comentariu
Liviu M Postat Octombrie 22, 2012 Partajează Postat Octombrie 22, 2012 Daca cu 18Dh merge da' se vaita ca e prea lung si "Least significant bits used", atunci o sa mearga si cu 8Dh.Elementary my dear Watson. Link spre comentariu
Ata Postat Octombrie 22, 2012 Autor Partajează Postat Octombrie 22, 2012 Nu am zis ca merge cu 18Dh, si nici nu este tot una cu 8Dh, am rotunjit 18Dh in 190 si merge, dar am diferenta la intarziere(250uS). Am rotunjit toate liniile cu litera in ele si merg toate acum, cu toate ca nu am rezolvat problema cu datele care le vroiam, poate pana la urma stie cineva cum se poate rezolva pentru ca la simulare in Isis nu lucreaza bine. Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum