КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Приложение 3. Фалй, содержащий информацию об элементах языка Макроассемблера для УУМ-32.
<?xml version="1.0" encoding="utf-8"?> <UUM32AssemblerKeywords> <Keywords type="Машинные команды"> <Keyword name="SIO" hint="Машинная команда.

Синтаксис:
 SIO

Действие:
 Старт канала B/B [не реализована]." /> <Keyword name="TIO" hint="Машинная команда.

Синтаксис:
 TIO

Действие:
 Тест канала В/В [не реализована]." /> <Keyword name="COMPR" hint="Машинная команда.

Синтаксис:
 COMPR r1, r2

Действие:
 {CC} ← r1(32) <>= r2(32) [Сравнение первого регистра со вторым].

Тактов ЦП: 2" /> <Keyword name="HIO" hint="Машинная команда.

Синтаксис:
 HIO

Действие:
 Стоп канала B/B [не реализована]." /> <Keyword name="JEQ" hint="Машинная команда.

Синтаксис:
 [+]JEQ [#|@]mem[[x]][[b]]

Действие:
 {PC} ← (mem) if {CC} == "EQ" [Переход к заданному адресу, если код условия установлен в "EQ" (равны)].

Тактов ЦП: 4" /> <Keyword name="AND" hint="Машинная команда.

Синтаксис:
 AND r1, r2

Действие:
 A ← r1 & r2 [Запись в регистр A результата побитовой конъюнкции двух регистров].

Тактов ЦП: 1" /> <Keyword name="MULR" hint="Машинная команда.

Синтаксис:
 MULR r1, r2

Действие:
 r1(32) ← r1(32) * r2(32) [Умножение первого регистра на второй].

Тактов ЦП: 2" /> <Keyword name="CLEAR" hint="Машинная команда.

Синтаксис:
 CLEAR r

Действие:
 r ← 0 [Обнуление регистра].

Тактов ЦП: 1" /> <Keyword name="RSB" hint="Машинная команда.

Синтаксис:
 [+]RSB r, [#|@]mem[[x]][[b]]

Действие:
 r1(32)[mem] ← 0 [Установка бита № mem регистра в нуль].

Тактов ЦП: 3" /> <Keyword name="ADDR" hint="Машинная команда.

Синтаксис:
 ADDR r1, r2

Действие:
 r1(32) ← r1(32) + r2(32) [Прибавление к первому регистру второго].

Тактов ЦП: 1" /> <Keyword name="JMP" hint="Машинная команда.

Синтаксис:
 [+]JMP [#|@]mem[[x]][[b]]

Действие:
 {PC} ← (mem) [Безусловный переход к заданному адресу].

Тактов ЦП: 3" /> <Keyword name="SB" hint="Машинная команда.

Синтаксис:
 [+]SB r, [#|@]mem[[x]][[b]]

Действие:
 r1(32)[mem] ← 1 [Установка бита № mem регистра в единицу].

Тактов ЦП: 3" /> <Keyword name="GC" hint="Машинная команда.

Синтаксис:
 [+]GC n, [#|@]mem[[x]][[b]]

Действие:
 mem → Контекст ядра n.

Тактов ЦП: 3" /> <Keyword name="LD" hint="Машинная команда.

Синтаксис:
 [+]LD[h|b] r, [#|@]mem[[x]][[b]]

Действие:
 r(32) ← mem(8,16,32) [Загрузка в регистр значения из памяти].

Тактов ЦП: 2" /> <Keyword name="LDH" hint="Машинная команда.

Синтаксис:
 [+]LD[h|b] r, [#|@]mem[[x]][[b]]

Действие:
 r(32) ← mem(8,16,32) [Загрузка в регистр значения из памяти].

Тактов ЦП: 2" /> <Keyword name="LDB" hint="Машинная команда.

Синтаксис:
 [+]LD[h|b] r, [#|@]mem[[x]][[b]]

Действие:
 r(32) ← mem(8,16,32) [Загрузка в регистр значения из памяти].

Тактов ЦП: 2" /> <Keyword name="RD" hint="Машинная команда.

Синтаксис:
 RD [#|@]mem[[x]][[b]]

Действие:
 A(8) ← Device_mem [Читать в младший байт регистра A из устройства mem]." /> <Keyword name="TD" hint="Машинная команда.

Синтаксис:
 TD [#|@]mem[[x]][[b]]

Действие:
 Проверка устройства n." /> <Keyword name="WD" hint="Машинная команда.

Синтаксис:
 WD [#|@]mem[[x]][[b]]

Действие:
 A(8) → Device_mem [Запиать из младшего байта регистра A в устройство mem]." /> <Keyword name="SHR" hint="Машинная команда.

Синтаксис:
 [+]SHR r, [#|@]mem[[x]][[b]]

Действие:
 r(32) << mem [Циклический сдвиг регистра влево].

Тактов ЦП: 3" /> <Keyword name="INT" hint="Машинная команда.

Синтаксис:
 INT n

Действие:
 Генерация прерывания с кодом n. Параметры прерывания указываются в регистрах общего назначения, по большей части в R0-R11. Но иногда, согласно описаниям прерываний могут брать значения и из других регистров.

Тактов ЦП: 1" /> <Keyword name="DIVR" hint="Машинная команда.

Синтаксис:
 DIVR r1, r2

Действие:
 r1(32) ← r1(32) / r2(32) [Целочисленное деление первого регистра на второй].

Тактов ЦП: 2" /> <Keyword name="SUB" hint="Машинная команда.

Синтаксис:
 [+]SUB[h|b] r, [#|@]mem[[x]][[b]]

Действие:
 r(32) ← r(32) - mem(8,16,32) [Вичитание из регистра значения из памяти].

Тактов ЦП: 3" /> <Keyword name="SUBH" hint="Машинная команда.

Синтаксис:
 [+]SUB[h|b] r, [#|@]mem[[x]][[b]]

Действие:
 r(32) ← r(32) - mem(8,16,32) [Вичитание из регистра значения из памяти].

Тактов ЦП: 3" /> <Keyword name="SUBB" hint="Машинная команда.

Синтаксис:
 [+]SUB[h|b] r, [#|@]mem[[x]][[b]]

Действие:
 r(32) ← r(32) - mem(8,16,32) [Вичитание из регистра значения из памяти].

Тактов ЦП: 3" /> <Keyword name="PUSH" hint="Машинная команда.

Синтаксис:
 PUSH[h|b] r

Действие:
 r(8,16,32) → Stack(8,16,32) [Заталкивание регистра в стек].

Тактов ЦП: 1" /> <Keyword name="PUSHH" hint="Машинная команда.

Синтаксис:
 PUSH[h|b] r

Действие:
 r(8,16,32) → Stack(8,16,32) [Заталкивание регистра в стек].

Тактов ЦП: 1" /> <Keyword name="PUSHB" hint="Машинная команда.

Синтаксис:
 PUSH[h|b] r

Действие:
 r(8,16,32) → Stack(8,16,32) [Заталкивание регистра в стек].

Тактов ЦП: 1" /> <Keyword name="DIV" hint="Машинная команда.

Синтаксис:
 [+]DIV[h|b] r, [#|@]mem[[x]][[b]]

Действие:
 r(32) ← r(32) / mem(8,16,32) [Целочисленное деление регистра на значение из памяти].

Тактов ЦП: 3" /> <Keyword name="DIVH" hint="Машинная команда.

Синтаксис:
 [+]DIV[h|b] r, [#|@]mem[[x]][[b]]

Действие:
 r(32) ← r(32) / mem(8,16,32) [Целочисленное деление регистра на значение из памяти].

Тактов ЦП: 3" /> <Keyword name="DIVB" hint="Машинная команда.

Синтаксис:
 [+]DIV[h|b] r, [#|@]mem[[x]][[b]]

Действие:
 r(32) ← r(32) / mem(8,16,32) [Целочисленное деление регистра на значение из памяти].

Тактов ЦП: 3" /> <Keyword name="ST" hint="Машинная команда.

Синтаксис:
 [+]ST[h|b] r, [#|@]mem[[x]][[b]]

Действие:
 r(8,16,32) → mem(8,16,32) [Сохранение регистра в ячейку памяти].

Тактов ЦП: 2" /> <Keyword name="STH" hint="Машинная команда.

Синтаксис:
 [+]ST[h|b] r, [#|@]mem[[x]][[b]]

Действие:
 r(8,16,32) → mem(8,16,32) [Сохранение регистра в ячейку памяти].

Тактов ЦП: 2" /> <Keyword name="STB" hint="Машинная команда.

Синтаксис:
 [+]ST[h|b] r, [#|@]mem[[x]][[b]]

Действие:
 r(8,16,32) → mem(8,16,32) [Сохранение регистра в ячейку памяти].

Тактов ЦП: 2" /> <Keyword name="SUBR" hint="Машинная команда.

Синтаксис:
 SUBR r1, r2

Действие:
 r1(32) ← r1(32) - r2(32) [Вычитание из первого регистра второго].

Тактов ЦП: 1" /> <Keyword name="MOV" hint="Машинная команда.

Синтаксис:
 MOV r1, r2

Действие:
 r1(32) ← r2(32) [Запись в первый регистр второго].

Тактов ЦП: 1" /> <Keyword name="JGT" hint="Машинная команда.

Синтаксис:
 [+]JGT [#|@]mem[[x]][[b]]

Действие:
 {PC} ← (mem) if {CC} == "GT" [Переход к заданному адресу, если код условия установлен в "GT" (больше)].

Тактов ЦП: 4" /> <Keyword name="EQV" hint="Машинная команда.

Синтаксис:
 EQV r

Действие:
 {CC} ← A & r1 <>= X & r1.

Тактов ЦП: 1" /> <Keyword name="JLT" hint="Машинная команда.

Синтаксис:
 [+]JLT [#|@]mem[[x]][[b]]

Действие:
 {PC} ← (mem) if {CC} == "LT" [Переход к заданному адресу, если код условия установлен в "LT" (меньше)].

Тактов ЦП: 4" /> <Keyword name="CALL" hint="Машинная команда.

Синтаксис:
 [+]CALL [#|@]mem[[x]][[b]]

Действие:
 {PC} → Stack; (mem) → {PC} [Вызов подпрограммы].

Тактов ЦП: 4" /> <Keyword name="POP" hint="Машинная команда.

Синтаксис:
 POP[h|b] r

Действие:
 r(32) ← Stack(8,16,32) [Выталкивание регистра из стека].

Тактов ЦП: 1" /> <Keyword name="POPH" hint="Машинная команда.

Синтаксис:
 POP[h|b] r

Действие:
 r(32) ← Stack(8,16,32) [Выталкивание регистра из стека].

Тактов ЦП: 1" /> <Keyword name="POPB" hint="Машинная команда.

Синтаксис:
 POP[h|b] r

Действие:
 r(32) ← Stack(8,16,32) [Выталкивание регистра из стека].

Тактов ЦП: 1" /> <Keyword name="RET" hint="Машинная команда.

Синтаксис:
 RET

Действие:
 Stack → {PC} [Возврат из подпрограммы. Если стек пуст – конец программы].

Тактов ЦП: 2" /> <Keyword name="INCM" hint="Машинная команда.

Синтаксис:
 [+]INCM[h|b] r, [#|@]mem[[x]][[b]]

Действие:
 r(32)++; {CC} ← r(32) <>= mem(8,16,32) [Инкремент регистра и последующее сравнение его со значением из памяти].

Тактов ЦП: 4" /> <Keyword name="INCMH" hint="Машинная команда.

Синтаксис:
 [+]INCM[h|b] r, [#|@]mem[[x]][[b]]

Действие:
 r(32)++; {CC} ← r(32) <>= mem(8,16,32) [Инкремент регистра и последующее сравнение его со значением из памяти].

Тактов ЦП: 4" /> <Keyword name="INCMB" hint="Машинная команда.

Синтаксис:
 [+]INCM[h|b] r, [#|@]mem[[x]][[b]]

Действие:
 r(32)++; {CC} ← r(32) <>= mem(8,16,32) [Инкремент регистра и последующее сравнение его со значением из памяти].

Тактов ЦП: 4" /> <Keyword name="SHL" hint="Машинная команда.

Синтаксис:
 [+]SHL r, [#|@]mem[[x]][[b]]

Действие:
 r(32) << mem [Циклический сдвиг регистра влево].

Тактов ЦП: 3" /> <Keyword name="COMP" hint="Машинная команда.

Синтаксис:
 [+]COMP[h|b] r, [#|@]mem[[x]][[b]]

Действие:
 {CC} ← r(32) <>= mem(8,16,32) [Сравнение регистра со значением из памяти].

Тактов ЦП: 3" /> <Keyword name="COMPH" hint="Машинная команда.

Синтаксис:
 [+]COMP[h|b] r, [#|@]mem[[x]][[b]]

Действие:
 {CC} ← r(32) <>= mem(8,16,32) [Сравнение регистра со значением из памяти].

Тактов ЦП: 3" /> <Keyword name="COMPB" hint="Машинная команда.

Синтаксис:
 [+]COMP[h|b] r, [#|@]mem[[x]][[b]]

Действие:
 {CC} ← r(32) <>= mem(8,16,32) [Сравнение регистра со значением из памяти].

Тактов ЦП: 3" /> <Keyword name="MUL" hint="Машинная команда.

Синтаксис:
 [+]MUL[h|b] r, [#|@]mem[[x]][[b]]

Действие:
 r(32) ← r(32) * mem(8,16,32) [Умножение регистра на значение из памяти].

Тактов ЦП: 3" /> <Keyword name="MULH" hint="Машинная команда.

Синтаксис:
 [+]MUL[h|b] r, [#|@]mem[[x]][[b]]

Действие:
 r(32) ← r(32) * mem(8,16,32) [Умножение регистра на значение из памяти].

Тактов ЦП: 3" /> <Keyword name="MULB" hint="Машинная команда.

Синтаксис:
 [+]MUL[h|b] r, [#|@]mem[[x]][[b]]

Действие:
 r(32) ← r(32) * mem(8,16,32) [Умножение регистра на значение из памяти].

Тактов ЦП: 3" /> <Keyword name="NOT" hint="Машинная команда.

Синтаксис:
 NOT r

Действие:
 A ← ~r [Запись в регистр A результата побитовой инверсии регистра].

Тактов ЦП: 1" /> <Keyword name="INCR" hint="Машинная команда.

Синтаксис:
 INCR r1, r2

Действие:
 r1(32)++; {CC} ← r1(32) <>= r2(32) [Инкремент регистра и последующее сравнение его с другим регистром].

Тактов ЦП: 2" /> <Keyword name="SC" hint="Машинная команда.

Синтаксис:
 [+]SC n, [#|@]mem[[x]][[b]]

Действие:
 Контекст ядра n → mem.

Тактов ЦП: 3" /> <Keyword name="NOP" hint="Машинная команда.

Синтаксис:
 NOP

Действие:
 Пустая команда. Не выполняет никаких действий.

Тактов ЦП: 1" /> <Keyword name="OR" hint="Машинная команда.

Синтаксис:
 OR r1, r2

Действие:
 A ← r1 | r2 [Запись в регистр A результата побитовой дезъюнкции двух регистров].

Тактов ЦП: 1" /> <Keyword name="ADD" hint="Машинная команда.

Синтаксис:
 [+]ADD[h|b] r, [#|@]mem[[x]][[b]]

Действие:
 r(32) ← r(32) + mem(8,16,32) [Прибавление к регистру значения из памяти].

Тактов ЦП: 3" /> <Keyword name="ADDH" hint="Машинная команда.

Синтаксис:
 [+]ADD[h|b] r, [#|@]mem[[x]][[b]]

Действие:
 r(32) ← r(32) + mem(8,16,32) [Прибавление к регистру значения из памяти].

Тактов ЦП: 3" /> <Keyword name="ADDB" hint="Машинная команда.

Синтаксис:
 [+]ADD[h|b] r, [#|@]mem[[x]][[b]]

Действие:
 r(32) ← r(32) + mem(8,16,32) [Прибавление к регистру значения из памяти].

Тактов ЦП: 3" /> </Keywords> <Keywords type="Машинные регистры"> <Keyword name="R7" hint="Регистр R7 (номер регистра: 11)" /> <Keyword name="R3" hint="Регистр R3 (номер регистра: 7)" /> <Keyword name="X" hint="Регистр X (номер регистра: 2)" /> <Keyword name="R4" hint="Регистр R4 (номер регистра: 8)" /> <Keyword name="R0" hint="Регистр R0 (номер регистра: 4)" /> <Keyword name="R8" hint="Регистр R8 (номер регистра: 12)" /> <Keyword name="R11" hint="Регистр R11 (номер регистра: 15)" /> <Keyword name="R10" hint="Регистр R10 (номер регистра: 14)" /> <Keyword name="R5" hint="Регистр R5 (номер регистра: 9)" /> <Keyword name="R1" hint="Регистр R1 (номер регистра: 5)" /> <Keyword name="R9" hint="Регистр R9 (номер регистра: 13)" /> <Keyword name="R6" hint="Регистр R6 (номер регистра: 10)" /> <Keyword name="R2" hint="Регистр R2 (номер регистра: 6)" /> <Keyword name="A" hint="Регистр A (номер регистра: 0)" /> <Keyword name="B" hint="Регистр B (номер регистра: 1)" /> </Keywords> <Keywords type="Директивы ассемблера"> <Keyword name="ALIAS" hint="Директива ассемблера, служащая для определения синонимов.

Синтаксис:
 label: ALIAS alias
 • label - метка синонима
 • alias - имя существующей метки

Пример:
 myArray: ALIAS array" /> <Keyword name="BYTE" hint="Директива ассемблера, служащая для формирования константы или массива типа byte (байт).

Синтаксис:
 [label:] BYTE N1[, N2, ...]
 • label - метка константы или массива
 • N1, N2, ... - список констант, возможно задание символьной строки, заключенной в одинарные кавычки

Пример:
 text: BYTE 'Hello, World', 33, 0xD, 0xA" /> <Keyword name="CSECT" hint="Директива ассемблера, задающая точку начала новой управляющей секции.

Синтаксис:
 label: CSECT addr
 • label - имя управляющей секции
 • addr - стартовый адрес управляющей секции

Пример:
 subPrograms: CSECT 0" /> <Keyword name="END" hint="Директива ассемблера, задающая точку конца программы.

Синтаксис:
 END

Пример:
 END" /> <Keyword name="EQU" hint="Директива ассемблера, служащая для определения имен.

Синтаксис:
 label: EQU expression
 • label - метка имени
 • expression - инициализирующее выражение

Пример:
 arrayHalfSize: EQU (*-arrayBegin)/2" /> <Keyword name="EXPORT" hint="Директива ассемблера, определяющая экспортируемые из текущей управляющей секции имена.

Синтаксис:
 EXPORT name1[, name2, name3, ...]
 • name1, name2 - экспортируемые из текущей управляющей секции имена

Пример:
 EXPORT array, text, maxValue" /> <Keyword name="IMPORT" hint="Директива ассемблера, определяющая импортируемые в текущую управляющую секцию имена.

Синтаксис:
 IMPORT name1[, name2, name3, ...]
 • name1, name2 - импортируемые в текущую управляющую секцию имена

Пример:
 IMPORT array, text, maxValue" /> <Keyword name="RESB" hint="Директива ассемблера, служащая для резервирования определенного числа байт (тип byte).

Синтаксис:
 [label:] RESB n
 • label - метка резервируемого блока памяти
 • n - количество резервируемых элементов

Пример:
 buffer: RESB 10" /> <Keyword name="RESH" hint="Директива ассемблера, служащая для резервирования определенного числа полуслов (тип half).

Синтаксис:
 [label:] RESH n
 • label - метка резервируемого блока памяти
 • n - количество резервируемых элементов

Пример:
 buffer: RESH 10" /> <Keyword name="RESW" hint="Директива ассемблера, служащая для резервирования определенного числа машинных слов (тип word).

Синтаксис:
 [label:] RESW n
 • label - метка резервируемого блока памяти
 • n - количество резервируемых элементов

Пример:
 buffer: RESW 10" /> <Keyword name="START" hint="Директива ассемблера, задающая точку начала главной секции.

Синтаксис:
 label: START addr
 • label - имя главной секции
 • addr - стартовый адрес главной секции

Пример:
 helloWorld: START 0" /> <Keyword name="WORD" hint="Директива ассемблера, служащая для формирования константы или массива типа word (машинное слово).

Синтаксис:
 [label:] WORD N1[, N2, ...]
 • label - метка константы или массива
 • N1, N2, ... - список констант или константных выражений

Пример:
 array: WORD 555, -100, 0xFE, 0b1010, *-1, (x1+x2-x3)/2" /> </Keywords> <Keywords type="Директивы макроассемблера"> <Keyword name="INCLUDE" hint="Директива макроассемблера, предназначенная для подключения макробиблиотек" /> <Keyword name="MACRO" hint="Директива макроассемблера, определяющая начало макроса" /> <Keyword name="MEND" hint="Директива макроассемблера, определяющая конец макроса" /> </Keywords> </UUM32AssemblerKeywords>
|