Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[31]

вательности. При Х<0 происходит запуск псевдослучайной последовательности (своей для каждого X), при Х=0 - повторение последнего результата;

SGN (X) - 1 при Х<0; 0 при Х=0; 1 при XX);

ABS (X) - модуль X;

SQR (X) - положительный квадратный корень X;

EXP (X) - экспонента X;

LOG (X) - натуральный логарифм X.

ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ АССЕМБЛЕРА

Управление ассемблированием (работой ассемблера). Фрагмент программы

*{СМЕШЕНИЕ. } АДРЕС: используется для входа в режим ассемблирования.

АДРЕС - выражение, задающее начальный адрес записи формируемого кода при ассемблировании.

СМЕЩЕНИЕ - выражение, задающее начальное значение адреса, используемого для ссылок на формируемый код (адрес программы при исполнении). Например, в результате выполнения

*ft 1234, й 1100:! МЕТКА: = МЕТКА!:

по адресу ft 1100 будет записано слово ft 3412.

Если указано одно выражение, адрес и смещение совпадают.

! - сигнал входа в ассемблер и разделитель команд ассемблирования внутри строки; он должен предшествовать каждой команде ассемблера;

!: - пустая команда ассемблера, служит сигналом перехода на второй проход или сигналом конца ассемблирования.

Ассемблирование проводится в два прохода. На первом проходе определяются форматы операндов и значения меток, форматы команд записываются на место объектного кода. Просмотр текста происходит в порядке исполнения строк интерпретатора языка БЕЙСИК, содержащих команды ассемблера. При исполнении на первом проходе пустого оператора управление передается (аналогично GOTO) первому встреченному после входа в режим ассемблирования оператору со знаком

Программа должна обеспечивать второй проход операторов ассемблирования в том же порядке, что и на первом проходе (все операторы интерпретатора языка БЕЙСИК при этом исполняются второй раз). На втором проходе формируется двоичный код, значения меток сохраняются и могут быть в дальнейшем использованы в качестве операндов CALL и USR для исполнения участков кода, а также отладочными директивами для просмотра и модификации кодовых участков.

Команды ассемблера могут быть помечены. Метками служат целые и вещественные переменные языка БЕЙСИК, например:

5 КОН = FDDF

10 ! DM1:M2% : LDA ft 55! STA ft 666 20 ! JSR KON RTS 30 !:

Команды ассемблера подразделяются на программные команды и константы. Константы ассемблера. Имеется восемь констант ассемблера: 1)! (выражение) - загружает пять байтов вещественным значением выражения, вычисленным на втором проходе, в представлении интерпретатора;


2)< (выражение) - загружает один байт старшим байтом целого значения выражения;

3)> (выражение) - то же, но загружает младший байт;

4)= (выражение) - загружает два байта целым значением в порядке "младший, старший", т.е. в формате адреса системы команд процессора;

5)@ (выражение) - то же, что и константа », но в порядке "старший, младший", т.е. в формате данных интерпретатора;

6)Д {hex, hex} (четное число шестнадцатеричных цифр) - шестнадцатерич-ная загрузка области;

7)! ("строка длиной") - загружает байт кодами КОИ-7 символов строки (старший бит "О");

8)# (выражение) - увеличивает значение счетчиков адреса и смещения на значение выражения.

На рис. 5.3 приведен пример, иллюстрирующий применение констант.

Программные команды ассемблера. Первое поле программной команды -мнемокод операции, затем может следовать операнд.

Мнемокоды и виды адресации записываются так, же как описано п. 5.1.

В качестве содержимого операнда могут применяться константы типа 2JL - 4), а в непосредственных операндах - также и типа 7) длиной в один символ.

При использовании в качестве операндов констант типа < и > формат адресации однобайтный, типа = - двубайтный.

В случае отсутствия перед операндом знаков >, <,= формат адресации определяется следующим образом. Бели в выражении имеется идентификатор, значение которого не определено на первом проходе к данному моменту, то формат адресации двубайтный. В противном случае формат адресации определяется значением выражения: при значении выражения, меньшем 256, формат адресации однобайтный; в остальных случаях - двубайтный.

Предусмотрены дополнительные возможности введения комментариев в любой команде от символа ";" до конца команды или конца строки. Текст комментария при выполнении игнорируется.

Пример использования комментариев приведен на рис. 5.4.

Средства отладки. Здесь и в дальнейшем под адресом ячейки памяти будем понимать значение выражения. К средствам отладки относятся команды:

*(выражение) - осмотр содержимого ячейки памяти по заданному адресу; например:

*Д 1000 1000-ВВ

*(выражение 1). (выражение 2) - осмотр интервала памяти по заданным начальному и конечному адресам; например, после

директивы: * ft 100. Д 127 на экране появится следующая информация: 0100 - АААААААААААААААА 0118 - 10 10 10 10 10 10 10 10 0120 - ID ID ID ID ID ID ID 1D

*(выражение) # (выражение 2) • (выражение 3) М - передвижение интервала памяти;

*(выражение 1) Ф (выражение 2) • (выражение 3) V - сравнение двух интервалов памяти;


3LIST

JLIST

10

20

30 40 SO

60

70

80

90

91

92 93 94

95

96

97

98

HI - *100s LNGTH - li M2 У. - Ml - LNGTHiX -1.57 * *1000i

! ! SIN <X> + COS < X)

-Ml * 12 > Ml + 16 * LNGTH М2Я + 100

♦AAB6F7FD0001 OM1 + 256 + 80

-*FDF4 «81

"ТАБЛИЦА" Ki

REM ПОСЛЕ RUN СФОРМИРУ

ЕТСЯ КОД REM 1000 -81 00 1A 15

68 00 ОС 45 REM 1008 -AA B6 F7 FD

00 01 02 50 REM 1010 -F4 FD 81 74

61 62 ОС 69 REM 1018 -63 61 REM ГДЕ i

REM 1000-1004 -ПРЕДСТА

ВЛЕНИЕ ВЕЩЕСТВЕННОГО

1.00079601 REM 1005-1006 АДРЕС *C

00(12*236) REM 1007 -МЛАДШИЙ БАЙТ ЗНАЧЕНИЯ *100+*F0+*F

l+*64«*345 REM 1008-100D -ПОСЛЕДО

ВАТЕЛЬНОСТЬ БАЙТ AAB6

F7FD0001 REM 100E-100F -ЦЕЛОЕ П

РЕДСТАВЛЕНИЕ 592-*250

100 REM 1010-1011 -АДРЕС *FDF4

110 REM 1012-БАЙТ *

81

120 REM 1013-1019 -ТЕКСТ ТАБЛИЦА К ПОЛУЧИЛА ЗН АЧЕНИЕ «101А-4122

Рис. 5.3. Использование констант

5 GOTO 65

10 REM МАКРООПРЕДЕЛЕНИЕ 20 ! PLA

STA 10 PLA STA1 30 RETURN

4 0 REM МАКРООПРЕДЕЛЕНИЕ Д

ЛЯ ВОЗВРАТА 50! LDA1

РНА LDA 0 РНА RTS 60 RETURN 65 * 4096i

! BEGINiNOPlTPEByET СЯ ДЛЯ ПРАВИЛЬНОГО HA ЧАЛА ВТОРОГО ПРОХОДА 70 REM ПОДПРОГРАММА ПЕЧАТ И И ВЫБРАСЫВАНИЯ 3-Х БАЙТ ИЗ СТЕКА 80 GOSUB 10 90 FOR I - 1 ТО 3 100 ! PLA

! JSR*FDF4I ПОДПРОГР AMMA COUT СИСТЕМНОГО МОНИТОРА 110NEXT I GOSUB 4 0 130 MJ - Oi REM ИСПОЛЬЗОВ АНИЕ МАКРООПРЕДЕЛЕНИЯ С МЕТКАМИ 140 SR - 5000i DS « 8000i LN - 33IИСТОЧНИК,ПОЛ УЧАТЕЛЬ.ДЛИНАПЕРЕПИСИ

150 GOSUB 1000 160 SR - 5100: DS - 7000: LN - 99: GOSUB 1000 ! : END

MJ « MJ + 1 : REM HA ЧАЛО МАКРООПРЕДЕЛЕНИЯ ПЕРЕПИСИ

LDX**0SL< MJ)1 LDA - SR,XIПРИКАЖДОМНОВ ОММАКРОВЫЗОВЕМЕТКОЙБУ ДЕТОЧЕРЕДНОЙЭЛЕМЕНТМА ССИВА

STA - DS,X INX: CPX* > LN BNE - L< MJ)(ПЕРЕХ ОД ВНУТРИ МАКРООПРЕДЕ ЛЕНИЯ 1040 RETURN

170 1000

1010

1020

1030

Рнс.

5.4. Применение комментариев

4 Зак. 34 I



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28] [стр.29] [стр.30] [стр.31] [стр.32] [стр.33] [стр.34] [стр.35] [стр.36] [стр.37] [стр.38] [стр.39] [стр.40] [стр.41] [стр.42] [стр.43] [стр.44] [стр.45] [стр.46] [стр.47] [стр.48] [стр.49] [стр.50] [стр.51] [стр.52] [стр.53] [стр.54] [стр.55] [стр.56] [стр.57] [стр.58] [стр.59] [стр.60] [стр.61] [стр.62] [стр.63] [стр.64] [стр.65] [стр.66] [стр.67] [стр.68] [стр.69] [стр.70] [стр.71] [стр.72] [стр.73] [стр.74] [стр.75] [стр.76] [стр.77] [стр.78] [стр.79] [стр.80] [стр.81] [стр.82] [стр.83] [стр.84] [стр.85] [стр.86] [стр.87] [стр.88] [стр.89] [стр.90] [стр.91] [стр.92] [стр.93] [стр.94] [стр.95] [стр.96] [стр.97] [стр.98]