3. Пример программы на АССЕМБЛЕРЕ MACRO-11 - Алиса: Это же так важно знать

3. Пример программы на АССЕМБЛЕРЕ MACRO-11 - Алиса: Это же так важно знать



^ 3. Пример программы на АССЕМБЛЕРЕ MACRO-11


.NLIST SEQ,BIN,COM,CND

.LIST MEB

.REM /

*************************************************************************************************

ПРИМЕР ПРОГРАММЫ НА АССЕМБЛЕРЕ С ДЕМОНСТРАЦИЕЙ

ИСПОЛЬЗОВАНИЯ ДИРЕКТИВ ЯЗЫКА

*************************************************************************************************/


.TITLE PATERN

.IDENT /V01A/

.MCALL .EXIT,.TTYOUT


; Макроопределение сохранения произвольных регистров в стеке

.MACRO SREG FLAG,RG0,RG1,RG2,RG3,RG4,RG5

.IRP REG,<,,,,,>

.IF NB ; Параметр в "REG" есть ?

.IF IDN SAVE ; Команда "SAVE" ?

MOV REG,-(SP) ; Да — положим указанные регистры в стек

.IFF

MOV (SP)+,REG ; Иначе — вынем указанные регистры из стека

.ENDC ; Конец блока условной трансляции (2 ур.)

.ENDC ; Конец блока условной трансляции (1 ур.)

.ENDM ; Конец области неопределенных повторений

.ENDM ; Конец макроопределения


; ***************************** СОБСТВЕННО ПРОГРАММА *******************************


.PSECT DATA ; Указание о расположении секций

.PSECT PROGR

START:: ; НАЧАЛО ПРОГРАММЫ

MOV #TEXT1,R1

MOV #TEXT2,R0

.SAVE ; Сохранить контекст секции PROGR

.PSECT DATA ; Тексты в другой секции и

TEXT1: .ASCII / ПРОГРАММА/ ; программе не мешают.

TEXT2: .ASCII / ЗАВЕРШЕНА. /

.RESTORE ; Восстановить контекст секции PROGR

MOV #25.,R2

1$: CALL TYPE

SOB R2,1$

.EXIT ; Выход

TYPE: SREG SAVE,R0,R1,R2 ; Сохранить R0—R2 в стеке

MOV #26.,R3 ; Вывести 41—R2 предваряющих пробела

SUB R2,R3

MOVB #40,R0 ; Программный вызов .TTYOUT #40

1$: EMT 341

BCS 1$

SOB R3,1$

MOV R1,R0 ; Вывести первую половину сообщения

EMT 351

ASL R2 ; Вывести 2*R2 межсловных пробела

MOVB #40,R0 ; Программный вызов .TTYOUT #40

2$: EMT 341

BCS 2$

SOB R2,2$

SREG RESTOR,R2,R1,R0 ; Восстановить R0—R2 из стека

EMT 351 ; Вывести вторую половину сообщения

RETURN


.END START

^ Управляющие последовательности терминала


Код

Клавиша

Функция

7




Гудок, длиной 16 тиков.

10




Курсор влево (VT-52); курсор в левый верхний угол (15ИЭ-00-013).

12




Перевод строки.

13




Сброс конца строки.

14




Сброс экрана.

15




Возврат каретки.

16




"РУС"

17




"ЛАТ"

22




Скроллинг экрана вверх.

23




Сдвиг конца строки вправо.

24




Сдвиг конца строки влево.

25




Возврат каретки и перевод строки.

26




Скроллинг экрана вниз.

27




Переключение на эмуляцию VT-52.

31




Курсор вправо.

32




Курсор влево.

33



Символ начала ESC-последовательности.

34




Курсор вверх.

35




Курсор вниз (перевод строки).

37




Сброс конца строки.

75



Вкл. дополнительной клавиатуры.

76

>

Выкл. дополнительной клавиатуры.

11



Резерв.

101



Курсор вверх.

102



Курсор вниз.

103



Курсор вправо.

104



Курсор влево.

105



Переход к 15ИЭ-00-013.

110



Курсор в левый верхний угол экрана.

111



Курсор вверх.

112



Сброс конца экрана.

113



Сброс конца строки.

114



Используется в графическом режиме.

115






120




Программирование знакогенератора и ключей.

122






124






125






131



Установка курсора по координатам. (33 131 Y+40 X+40).

132



Опрос наличия принтера.

133



33 133 62 150 — Блокировать клавиатуру; —!!— 154 — Разблокир.

200




Курсор вверх.

201




Курсор вниз.

202




Курсор влево.

203




Курсор вправо.

204




Курсор в верх экрана.

205




Курсор в низ экрана.

206




Курсор в начало строки.

207




Курсор в конец строки.

210




Резерв (сдвиг конца экрана вверх).

211




Резерв (сдвиг конца экрана вниз).

212




Сдвиг конца строки влево.

213




Сдвиг конца строки вправо.

214




Скроллинг экрана вниз.

215




Скроллинг экрана вверх.

216




Резерв (Сдвиг экрана вправо).

217




Резерв (Сдвиг экрана влево).

220




Курсор вправо вверх.

221




Курсор влево вниз.

222




Курсор влево вверх.

223




Курсор вправо вниз.

224




Курсор в левый верхний угол экрана.

225




Сброс экрана.

226




Сброс конца экрана.

227




Сброс конца строки.

230




Возврат каретки и перевод строки.

231




Установка курсора по координатам (33 231 Y+40 X+40).

232




Резерв (Выключить экран).

233




Резерв (Запись в СС).

234




Резерв (Запись в ИС).

240



Установка / отмена цвета символов. *(3)

241



Установка / отмена знакоместа. *(3)

242



Установка / отмена экрана. *(3)

243



Установка / отмена инверсии символов. *(2),*(3)

244



Установка / отмена подчеркивания символов. *(2),*(3)

246



Установка формата экрана (33 246 N+61 (N:0—3)).

247



Установка цвета курсора.

250



Резерв (Включить СС).

251



Резерв (Включить ИС)

252



Резерв (Установить клавиатуру).

253



Резерв (Установить символ).

267



Включить / выключить сетевой таймер ЦП. *(3)

274



Выход в меню загрузки.

275



Режим ЦП "USER" / "HALT". *(3)

276



Тест периферийной машины.

277



Ключ отмены функции.

1490099811347244.html
1490165521604004.html
1490317745991154.html
1490342069407651.html
1490593698271737.html