С.Ю. СИНЯГИН

(г. Дубна)

ВЫВОД ТЕКСТОВ НА ЭКРАН

Я работаю не в машинных кодах, а в их более прогрессивном варианте - на Ассемблере. Ассемблер БК реализован во многих системах. Я же рекомендую две из них - систему МИРАЖ (С. Зильберштейна) и систему МИКРО (группы ASP).

Свои программы я оформил в варианте системы МИРАЖ. Они начинаются с символического адреса 0, но их можно расположить в любом месте ОЗУ. Обращаться к программам командой CALL (в системе МИРАЖ команда CALL заменяет команду JSR PC, а команда RET - команду RTS PC).

При обращении к программе «Вывод текстов на экран» нужно лишь в R3 указать номер выводимого текста в списке. В конце каждого текста должен стоять код 3 (клавиша КТ). Тексты располагаются друг за другом, первый имеет номер 1, следующий 2 и т.д. Не рекомендуется задавать номер большим, чем количество текстов в списке. В программе параметр «А» - начальный адрес текстов.

0)      MOV     #A,R1
4)      DEC     R3
6)      BLE     20
10)     СМРВ    (R1)+,#3
14)     BNE     10
16)     BR      4
20)     MOV     #1400,R2
24)     EMT     20
26)     RET

Комментарий рецензента

Так как практически любая несистемная программа имеет вывод на экран, то стремление упростить и унифицировать эту процедуру можно только приветствовать

В системе команд БК0010 имеется команда ЕМТ 20, позволяющая выводить строку текста на экран, но задание ей параметров сопряжено с некоторыми вычислениями в восьмеричной и двоичной системах счисления. Обычно программисты не задумываясь пишут её всякий раз, когда хотят что-нибудь вывести на экран, подготавливая для этого соответствующие параметры. Предложение С. Синягина позволяет несколько сэкономить память и уменьшить количество ошибок при отладке. Недостатком предложения является то, что при достаточно большом количестве символов в пакете текстов увеличивается время поиска выводимого на экран текста. Дополнительно к предложенной программе предлагаю текст этой уточнённой программы для версии ассемблера МИКРО 8 и соответствующий ему машинный код:

000000  012701      MOV   #A,R1
000002       A
000004  005303  4:  DEC   R3
000006  003404      BLE   20
000010  122721  10: CMPB  #3,(Rl)+
000012  000003
000014  001375      BNE   10
000016  000772      BR    4
000020  012702  20: MOV   #1400,R2
000022  001400
000024  104020      EMT   20
000026  000207      RTS   PC

ГОЛОС ВАШЕЙ ПРОГРАММЫ

Это программа обработки запросов по прерыванию TRAP. Чем больше аргумент команды TRAP, тем ниже тон звука. Несмотря на то что звуки разной тональности, их длительность одинакова - около 0,5 с. Перед обращением к программе в ячейку с адресом 34 следует занести адрес программы.

0)      MOV     R5,-(SP)
2)      MOV     2(SP),R5
6)      MOV     -(R5),R5
10)     BIC     #177400,R5
14)     ASL     R5
16)     ASL     R5
20)     JSR     R4,@ #110346
24)     MOV     #1000,R1
30)     SUB     R5,R1
32)     MOV     R5,R0
34)     BIS     #100,@ #177716
42)     SOB     R0,42
44)     MOV     R5,R0
46)     BIC     #100,@#177716
54)     SOB     R0,54
56)     SOB     R1,32
60)     JSR     (SP)+,R5
62)     MOV     R4,@#110362
66)     RTI

Комментарий рецензента

Предложенная программа может скрасить «серые будни» программистов при отладке программ на языках БЕЙСИК, Ассемблер или ФОКАЛ. Её можно использовать в качестве иллюстрации к обработке прерываний.

В №9/1988 в вашем журнале на стр. 26 указывалась программа работы с магнитофоном по адресу 100602. Но если покопаться в мониторе, можно обнаружить интересную программу по адресу 100536. Она запрашивает имя файла на чтение файла и загружает его. В R5 надо указать адрес для чтения. После определённых манипуляций можно заставить эту программу запрашивать имя для записи файла на плёнку.

ЕМТ 6
BICB #240,R0

Интересным свойством обладает последовательность команд. В каком бы режиме вы ни работали, в латинских или русских, заглавных или строчных буквах, при нажатии буквенной клавиши в младшем байте R0 будет код соответствующей заглавной латинской буквы.

Рецензию подготовил Л.Н. Жариков

 

Performed by © gid, 2012-2022.