Thread View: pl.comp.lang.asm
3 messages
3 total messages
Started by "Pszemol"
Tue, 10 Jul 2012 09:36
8051 - Archimedes Assembler
Author: "Pszemol"
Date: Tue, 10 Jul 2012 09:36
Date: Tue, 10 Jul 2012 09:36
103 lines
3685 bytes
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
Author: "Pszemol"
Date: Tue, 10 Jul 2012 17:13
Date: Tue, 10 Jul 2012 17:13
40 lines
1234 bytes
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
Author: "Remek"
Date: Tue, 17 Jul 2012 04:30
Date: Tue, 17 Jul 2012 04:30
9 lines
164 bytes
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