Sari la conținut
ELFORUM - Forumul electronistilor

Eroare la asamblare fisier asm.


Ata

Postări Recomandate

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
  • Răspunsuri 39
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • Ata

    16

  • 10vid

    6

  • Liviu M

    4

  • costi002

    4

Top autori în acest subiect

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

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

Sistemul de numerotatie folosit se cheama RADIX.

Sintaxa corecta pentru diferite radix-uri in MPASM este:

 

Posted Image

 

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

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

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

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

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări