Podłączę się pod ten wątek, bo też mam pytanie odnośnie Bascoma i asemblera, a nie ma sensu chyba tworzyć przy każdej okazji podobnych tematów.
Ostatnio - po kilku latach przerwy - postanowiłem trochę odświeżyć sobie pamięć odnośnie techniki mikroprocesorowej i wyciągnąłem z szafy komputerek edukacyjny AVT-2250 (nawiasem mówiąc rewelacyjny sprzęcik

).
Asembler '51 znam bardzo dobrze, w sumie nieźle znam też BASCOM, ale akurat nie łączyłem raczej jednego z drugim. Jak jednak wspomniałem wyżej odświeżam sobie wiedzę i pobawiłem się kilkoma swoimi starymi programami z BASCOMa próbując przerobić je tak, aby mogły wystartować w komputerku. Nie zawsze jest to łatwe i czasem trzeba właśnie zrezygnować z pewnej automatyki BASCOMa i jego procedur na rzecz wstawek asemblerowych i zdziwiłem się bardzo widząc, że BASCOM chyba nie rozpoznaje mnemonika z poniższego przykładu:
Kod: Zaznacz cały
$asm
anl tmod,#&B00001111
orl tmod,#&B00010000
mov &H72,#&Hc0
$end Asm
Konkretnie chodzi o rozkaz mov. Chcę po prostu wpisać konkretną wartość bezpośrednio do komórki pamięci o adresie &H72. Tak wpisany mnemonik powoduje błąd kompilatora
Error 124: Illegal asm-command
Dopiero poniższe obejście daje oczekiwany rezultat (a przynajmniej kompilator przechodzi bez błędu).
Kod: Zaznacz cały
$asm
anl tmod,#&B00001111
orl tmod,#&B00010000
mov R0,#&H72
mov @R0,#&Hc0
$end Asm
Co najlepsze, przykłady zawarte w helpie też nie podają jasno jak wpisać wartość bezpośrednio do komórki pamięci. Wszystkie są przez rejestry, albo akumulator. Trochę to jest bez sensu.
Czy ja coś robię źle? Dysponuję BASCOMem w wersji demo 2.0.14.0 (ograniczenie kodu do 4kB).