🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.asm
3 messages
3 total messages Started by "Pszemol" Tue, 10 Jul 2012 09:36
8051 - Archimedes Assembler
#2479
Author: "Pszemol"
Date: Tue, 10 Jul 2012 09:36
103 lines
3685 bytes
Witam - szukam kogo� kto mia� kiedy� do czynienia ze starszym softem dla
8051...
Mam tu do rozgryzienia kod napisany w assemblerze 8051 Archimedes z 1990
roku.

Nie mog� nigdzie znale�� dokumentacji do tego asemblera, do sk�adni makro
-instrukcji itp. Sk�adni� ma dosy� dziwn�, cz�� mo�na si� domy�li�, cz��
nie.

Kto� wie mo�e co oznaczaj� w poni�szym przyk�adzie odno�niki do "\0+1"?
Albo jak rozumie� "\0_TL0_2"? No i kto widzia� nazw� etykiety conv2\.:    ?

Przyk�ad:

       MACRO   %convert_data   ;
       mov     a,\0+1          ; If tl0 = ff and next read of tl0
       cjne    a,#0ffh,conv1\@ ; = 00 then dec th0.
            ;
       mov     a,\0_TL0_2   ;
       jnz     conv1\.      ;
            ;
       mov     a,\0_TH0_2      ; Jump if th0 2nd reading <> th0.
       cjne    a,\0,conv1\.    ;
            ;
       setb    c      ;
       sjmp    conv2\.         ; Jump to decrement TH0.
            ;
conv1\.:         ;

       mov     a,\0+2          ;zb.  P1 (LC04-LC11) to A
       anl     a,#0f0h         ;zb.  Mask off lower 4 bits; leave LC11-LC8
       cjne    a,#0f0h,conv4\. ;zb. if not equal to 0x0F
       sjmp    conv5\.         ;zb. if equal to 0x0F jump to decrement T0
counter, (to fast overflow)

conv4\.:
       mov     a,\0_ROC        ;
       jnb     acc.5,conv3\.   ; Jump if ROC not set.
            ;
       mov     a,\0_TL0_2      ;
       cjne    a,\0+1,conv3\.  ; Jump if not equal.
            ;
       mov     a,\0+2       ; Jump if p1  = 0   if p1 = 0 then internal
       jz      conv3\.      ; counter have rolled over. ignore p3.5.
            ;
conv5\.:
       clr     c            ; Decrement Timer 0.
       mov     a,\0+1       ; Sub 1 from low order.
       subb    a,#1         ;
       mov     \0+1,a       ; Resave low count.
            ;
conv2\.:         ; Decrement TH0.
       mov     a,\0+0      ; Sub 0 with borrow from high count.
       subb    a,#0        ;
       mov     \0+0,a      ; Resave high count.
       mov     a,\0_overflow   ; Clear overflow if still borrowed.
       subb    a,#0        ;
       mov     \0_overflow,a   ; Resave overflow.
       sjmp    conv\.      ;
            ;
conv3\.:         ;
conv\<:            ;
       anl     \0+3,#0fh   ; Mask off upper 4 bits of P2 data.
       mov     a,\0+2      ; Get low byte from p1.
       anl     A,#0fh      ; Mask off upper 4 bits.
       swap    a      ; Move lower 4 bits to upper 4 bits.
       orl     \0+3,A      ; Create lsb byte of count.
            ;
       mov     a,\0+2      ; Get high count from P1 data.
       swap    a      ;
       anl     a,#0fh      ;
       mov     \0+2,a      ; Moved to lsb.
       mov     a,\0+1      ; Get low byte from timer 0 msb.
       anl     A,#0fh      ; Mask off upper 4 bits.
       swap    a      ; Move lower 4 bits to upper 4 bits.
       orl     \0+2,A      ; Create next significant bit of data.
            ;
       mov     a,\0+1      ; Get high count from timer 0 data.
       swap    a      ;
       anl     a,#0fh      ;
       mov     \0+1,a      ; Moved to lsb.
       mov     a,\0+0      ; Get low byte from timer 0 high.
       anl     A,#0fh      ; Mask off upper 4 bits.
       swap    a      ; Move lower 4 bits to upper 4 bits.
       orl     \0+1,A      ; Create next significant bit of data.
            ;
       mov     a,\0      ;
       swap    a      ;
       anl     a,#0fh      ;
       mov     \0,a      ;
            ;
       mov     a,\0_overflow   ;
       cjne    a,#TRUE,conv\@   ;
            ;
       mov     \0_overflow,#00   ;
conv\<:            ;
       nop         ;
            ;
       ENDMAC




Re: 8051 - Archimedes Assembler
#2480
Author: "Pszemol"
Date: Tue, 10 Jul 2012 17:13
40 lines
1234 bytes
"Pszemol" <Pszemol@PolBox.com> wrote in message
news:jtheks$edm$1@inews.gazeta.pl...
> Kto� wie mo�e co oznaczaj� w poni�szym przyk�adzie odno�niki do "\0+1"?
> Albo jak rozumie� "\0_TL0_2"? No i kto widzia� nazw� etykiety conv2\.:
> ?
>
> Przyk�ad:
>
>       MACRO   %convert_data   ;
>       mov     a,\0+1          ; If tl0 = ff and next read of tl0
>       cjne    a,#0ffh,conv1\@ ; = 00 then dec th0.
>            ;
>       mov     a,\0_TL0_2   ;

Ju� si� wykapowa�em. Te "makra" dzia�aj� tak jak definicje z preprocesora.
Te moje makra s� makrami z parametrami i odno�niki do \0 lub \1 to
dos�owne odniesienie si� do pierwszego lub drugiego argumentu z jego
wywo�ania. Makra s� rozwijane dos�ownie, wi�c te moje

mov   a,\0_TL0_2  ;

przy wywo�aniu

%convert_data  pupa

b�dzie rozwini�te do

mov a,pupa_THO_2;

:-)))

A etykiedy z ko�c�wk� \. to po prostu lokalne etykiety makra,
rozwijane potem w kodzie na unikalne skoki tyle razy ile razy
makro jest wywo�ane.

OK, jestem w domu. Teraz wystarczy to r�cznie przet�umaczy�
na sk�adni� nowocze�niejszego kompilatora Keil kt�ry p�jdzie
pod Windows i zadzia�a z debuggerem i emulatorem proca :-)


Re: 8051 - Archimedes Assembler
#2482
Author: "Remek"
Date: Tue, 17 Jul 2012 04:30
9 lines
164 bytes
U�ytkownik "Pszemol" napisa�:

> Kto� wie mo�e co oznaczaj� w poni�szym przyk�adzie odno�niki do "\0+1"?

Komentarze nic Ci nie m�wi�?

Remek


Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads