Алгоритм

Пример

(A):=(A)Å((Ri)), где iÎ{0,1}

;(A)=22H, (R0)=55H,

;в РПД (55H)=33H

XRL A,@R0 ;(A)=11H,

;(R0)=55H, в РПД (55H)=33H

XRL A, direct

0 1 1 0 0 1 0 1

direct

Команда "логическое ИСКЛЮЧАЮЩЕЕ ИЛИ" выполняет поразрядное сложение по модулю 2 содержимого аккумулятора A с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именем direct. Результат помещается в A. Содержимое используемой ячейки или используемого регистра не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(A):=(A)Å(direct)

;(A)=23H, (PSW)=34H

XRL A, PSW ;(A)=17H, (PSW)=34H

XRL A,#data8

0 1 1 0 0 1 0 0

data8

Команда "логическое ИСКЛЮЧАЮЩЕЕ ИЛИ" выполняет поразрядное сложение по модулю 2 содержимого аккумулятора A с байтом данных data8, непосредственно указанным в команде. Результат размещается в A. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(A):=(A)Ådata8

;(A)=36H

XRL A,#22H ;(A)=14H

XRL direct, A

0 1 1 0 0 0 1 0

direct

Команда "логическое ИСКЛЮЧАЮЩЕЕ ИЛИ" выполняет поразрядное сложение по модулю 2 содержимого аккумулятора A с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именем direct. Результат помещается соответственно в используемую ячейку или используемый регистр. Содержимое A не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

НЕ нашли? Не то? Что вы ищете?

Алгоритм

Пример

(direct):=(A)Å(direct)

;(A)=55H, (P2)=63H

XRL P2,A ;(A)=55H, (P2)=36H

XRL direct,#data8

0 1 1 0 0 0 1 1

direct

data8

Команда "логическое ИСКЛЮЧАЮЩЕЕ ИЛИ" выполняет поразрядное сложение по модулю 2 байта данных data8, непосредственно указанного в команде, с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именем direct. Результат помещается соответственно в используемую ячейку или используемый регистр. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм

Пример

(direct):=(direct)Ådata8

;(P1)=0FFH

XRL P1,#11H ;(P1)=0EEH

2.2.2. Директивы языка АСМ51

Директивы в отличие от команд ассемблерного языка не преобразуются в объектный код и применяются для управления процессом трансляции исходной МК-программы.

Рассмотрим основные директивы языка АСМ51.

ASCII <операнды>

Директива последовательно размещает в ячейках памяти программ (ПП) коды ASCII символов строки, указанной в поле <операнды> и заканчивающейся возвратом каретки.

Пример

;MT1 соответствует адресу

;20FH в ПП

MT1 ASCII PEN

;в ПП (20FH)=50H,

;(210H)=45H, (211H)=4EH

DB <операнды>

Директива последовательно размещает в ячейках памяти программ (ПП) байтовые константы, перечисленные через запятую в поле <операнды>. Если указанное поле отсутствует, то используется одна ячейка ПП, в которую заносится "0".

Пример

;MT1 соответствует адресу

;1FFH в ПП

MT1 DB 12H,<.NOT.11H+1

DB 10100101B,32

;в ПП (1FFH)=12H, ;(200H)=0EFH,

;(201H)=0A5H, (202H)=20H

DS <операнды>

Директива резервирует ячейки памяти программ (ПП), причем количество этих ячеек определяется значением, указанным в поле <операнды>.

Пример

;MT2 соответствует адресу

;200H в ПП

MT2 DS 12H ;(PC)=212H

DW <операнды>

Директива последовательно размещает в ячейках памяти программ (ПП) 2-байтовые константы, перечисленные через запятую в поле <операнды>. Если указанное поле отсутствует, то используются две ячейки ПП, в которые заносится "0".

Пример

;MT1=20FH

MT1 DW 3212H

DW

;в ПП (20FH)=32H,

;(210H)=12H,

;(211H)=(212H)=00H

END

Директива определяет конец МК-программы.

ENDM

Директива определяет конец макроопределения.

<метка> EQU <операнды>

Директива присваивает символическому имени, размещенному в поле <метка>, байтовое или 2-байтовое значение, указанное в поле <операнды>. Это имя не может быть переопределено.

Пример

SS EQU 25H

ZZ EQU SS+2

PP EQU ZZ-1

MOV A,#PP ;(A)=26H

EXTERN <операнды>

Директива объявляет символические имена, указанные через запятую в поле <операнды>, как внешние, то есть определяемые в другой (других) МК-программе (МК-программах).

INCLUDE <операнды>

Директива включает в трансляцию файл, имя которого вместе с расширением указаны в поле <операнды>. Включения не могут подвергаться вложению.

LIST

Директива разрешает вывод листинга следующего за ней текста МК-программы. По умолчанию выполняется директива NLIST.

LONG <операнды>

Директива последовательно размещает в ячейках памяти программ (ПП) 4-байтовые константы, перечисленные через запятую в поле <операнды>. Если указанное поле отсутствует, то используются четыре ячейки ПП, в которые заносится "0".

Пример

;MT1 соответствует адресу

;4EEH в ПП

MT1 LONG 11223344H

;в ПП (4EEH)=11H,

;(4EFH)=22H, (4F0H)=33H,

;(4F1H)=44H

<метка> MACRO <операнды>

Директива начинает макроопределение, которое составляется из операторов языка АСМ51 (строк исходного текста МК-программы) и должно заканчиваться директивой ENDM. Любое поле включенных в макроопределение операторов (кроме поля <комментарий>) может быть представлено формальным параметром, которые перечисляются через запятую в поле <операнды>. В поле <метка> указывается символическое имя макрокоманды, которая будет определяться данным макроопределением. Макрокоманда может использоваться в МК-программе произвольное число раз и при трансляции заменяется на тело своего макроопределения, причем фактические параметры, перечисленные через запятую в поле <операнды> макрокоманды подставляются вместо соответствующих формальных параметров макроопределения.

До трансляции

После трансляции

TC MACRO x, y,z

MOV A,#z

x A,#y

ENDM

MOV R0,#25

TC ORL,15H,10

MOVX @R0,A

END

1 TC MACRO x,y,z

2 MOV A,#z

3 x A,#y

4 ENDM

5 0000 7819 MOV R0,#25

6 0002 TC ORL,15H,10

7 0002 740A MOV A,#10

8 0004 4415 ORL A,#15H

9 0006 ENDM

10 0006 F2 MOVX @R0,A

11 0007 END

NLIST

Директива запрещает вывод листинга следующего за ней текста МК-программы, если ранее выполнялась директива LIST.

ORG <операнды>

Директива устанавливает значение программного счетчика PC, причем указанное значение определяется содержимым поля <операнды>. При отсутствии директивы исходное значение PC принимается равным нулю.

Пример

;(PC)=1234H

ORG 12H

;(PC)=0012H

PUBLIC <операнды>

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22