Программное адресное пространство

Документированное значение для адресов программы – 105 ячеек. На практике сложнее. Напомним, что адресация ячеек использует только две цифры, поэтому для адресов свыше адреса 99 используются шестнадцатеричные цифры..

Адрес формальныйАдрес фактическийДоп. адрес
0000
0101
9999
A0A0
A1A1
A2A2
A3A3
A4A4
A500
A601
A702
A803
A904
B005
B106
B200
B301
B402
B503
B604
B705
B806
B907
C008
C109
C210
C311
C412
C513
C614
C715
C816
C917
D018
D119
D220
D321
D422
D523
D624
D725
D826
D927
E028
E129
E230
E331
E432
E533
E634
E735
E836
E937
F038
F139
F240
F341
F442
F543
F644
F745
F846
F947
FA4801
FB4902
FC5003
FD5104
FE5205
FF5306

Первая побочная ветвь, с возвратом на нулевой адрес, короткая – адреса A5…B1, которые отображаются на адреса 00…06.

Вторая побочная ветвь длинней – адреса B2…F9, которые отображаются на адреса 00…47. Причём адреса C0…F9 тёмные. Например, если выполнить БП10FПРГ, и по адресам 10…12 ввести команды КНОПКНОПКНОП, то увидим 54 54 54 13. Но если затем перейти на адрес C5 (FАВТБПC5FПРГ), то визуально получим C5, как будто без кода, хотя это будет тот же программный код, только затенённый.

На супертёмные адреса FA…FF возможно перейти только косвенно, т. к. впрямую адрес, который начинается с цифры F не вбить. Впрочем, есть нестандартные последовательности команд, описанные в приложении Команды с кодом F. А также для владельцев МК-52 есть штатный способ – сделать логическое or команд с отдельного модуля, с получением кодов с цифрой F.
Так вот, особенность супертёмного адреса такая, что после перехода на него выполняется только одна (!) команда, а затем идёт переход на дополнительный адрес, который указан в последней колонке.

Если в адресе перехода вторая цифра тоже шестнадцатеричная, то как указано в предисловии, она прибавляется как есть (E = 14 и т. п.). Таким образом переход на адреса 9F (90 + 15) или A5 (100 + 5) или AC (100 + 12 = 110 + 2 = B2) или B2, будет эквивалентен переходу на адрес 00, только потом порядок команд будет отличаться.

Если сама команда двойная, т. е. с адресом перехода, например, БП, Fx<0, FL1, и при этом идёт разрыв адресации, то вторая часть команды, сам адрес перехода, считывается из нового места. Т. е. если по адресу 06 стоит команда БП, то в обычном потоке адрес перехода будет по адресу 07, но если попали сюда как на адрес B1, то адрес перехода будет по адресу 00.


Практическое применение