1 \ 2 | _0 | _1 | _2 | _3 | _4 | _5 | _6 | _7 | _8 | _9 | _A | _B | _C | _D | _E | _F |
0_ | NOP | LXI B,& | STAX B | INX B | INR B | DCR B | MVI B,# | RLC | __ | DAD B | LDAX B | DCX B | INR C | DCR C | MVI C,# | RRC |
1_ | __ | LXI D,& | STAX D | INX D | INR D | DCR D | MVI D,# | RAL | __ | DAD D | LDAX D | DCX D | INR E | DCR E | MVI E,# | RAR |
2_ | RIM | LXI H,& | SHLD* | INX H | INR H | DCR H | MVI H,# | DAA | __ | DAD H | LHLD * | DCX H | INR L | DCR L | MVI L,# | CMA |
3_ | SIM | LXI SP,& | STA * | INX SP | INR M | DCR M | MVI M,# | STC | __ | DAD SP | LDA * | DCX SP | INR A | DCR A | MVI A,# | CMC |
4_ | MOV B,B | MOV B,C | MOV B,D | MOV B,E | MOV B,H | MOV B,L | MOV B,M | MOV B,A | MOV C,B | MOV C,C | MOV C,D | MOV C,E | MOV C,H | MOV C,L | MOV C,M | MOV C,A |
5_ | MOV D,B | MOV D,C | MOV D,D | MOV D,E | MOV D,H | MOV D,L | MOV D,M | MOV D,A | MOV E,B | MOV E,C | MOV E,D | MOV E,E | MOV E,H | MOV E,L | MOV E,M | MOV E,A |
6_ | MOV H,B | MOV H,C | MOV H,D | MOV H,E | MOV H,H | MOV H,L | MOV H,M | MOV H,A | MOV L,B | MOV L,C | MOV L,D | MOV L,E | MOV L,H | MOV L,L | MOV L,M | MOV L,A |
7_ | MOV M,B | MOV M,C | MOV M,D | MOV M,E | MOV M,H | MOV M,L | HLT | MOV M,A | MOV A,B | MOV A,C | MOV A,D | MOV A,E | MOV A,H | MOV A,L | MOV A,M | MOV A,A |
8_ | ADD B | ADD C | ADD D | ADD E | ADD H | ADD L | ADD M | ADD A | ADC B | ADC C | ADC D | ADC E | ADC H | ADC L | ADC M | ADC A |
9_ | SUB B | SUB C | SUB D | SUB E | SUB H | SUB L | SUB M | SUB A | SBB B | SBB C | SBB D | SBB E | SBB H | SBB L | SBB M | SBB A |
A_ | ANA B | ANA C | ANA D | ANA E | ANA H | ANA L | ANA M | ANA A | XRA B | XRA C | XRA D | XRA E | XRA H | XRA L | XRA M | XRA A |
B_ | ORA B | ORA C | ORA D | ORA E | ORA H | ORA L | ORA M | ORA A | CMP B | CMP C | CMP D | CMP E | CMP H | CMP L | CMP M | CMP A |
C_ | RNZ | POP B | JNZ * | JMP * | CNZ * | PUSH B | ADI # | RST | RZ | RET | JZ * | __ | CZ * | CALL * | ACI # | RST |
D_ | RNC | POP D | JNC * | OUT N | CNC * | PUSH D | SUI # | RST | RC | __ | JC * | IN N | CC * | __ | SBI # | RST |
E_ | RPO | POP H | JPO * | XTHL | CPO * | PUSH H | ANI # | RST | RPE | PCHL | JPE * | XCHG | CPE * | __ | XRI # | RST |
F_ | RPO | POP PSW | JP * | DI | CP * | PUSH PSW | ORI # | RST | RM | SPHL | JM * | EI | CM * | __ | CPI # | RST |
N - номер порта ввода-вывода (D8) ПРИМЕРЫ: Команда STAX D имеет код операции 12;
& - двухбайтовый операнд (D16) код операции CA соответствует команде JZ ADR.
* - двухбайтовый операнд (ADR) PSW включает аккумулятор A и регистр флагов F
# - однобайтовый операнд (D8) Команды SIM и RIM относятся только к i8085
ФОРМАТ РЕГИСТРА ФЛАГОВ F
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
S | Z | - | AC | - | P | - | CY |
знак | нуль | вспомог. перенос | четность | перенос |
ПРИЛОЖЕНИЕ 2 отладчики DDT и SID. Справочные данные
DDT
ddt загружается вместо ccp
Форматы команды:
ddt
ddt имя файла.hex
ddt имя файла.com
Управляющие символы:
rubout стирание последнего введенного символа
ctrl-u стирание введеной строки
ctrl-c перезагрузка cp/m
Команды:
as выдача ассемблерной мнемоники с операндами, s-стартовый адрес
d вывод содержимого памяти в шестнадцатеричных кодах; начиная с данного адреса; выводится 16 строк.
ds вывод содержимого памяти, начиная с адреса s
ds,f вывод содержимого памяти, начиная с адреса s и кончая f.
fs,f,c заполнить область памяти, начиная с адреса s и кончая адресом f шестнадцатеричной константой c.
g начать выполнение программы с текущего адреса
gs начать выполнение программы с адреса s.
gs,b начать выполнение программы с адресаs и остановиться по адресу b.
gs,b,c здесь заданы две точки остановки: b и c.
g,b начать выполнение программы с текущего адреса с остановкой по адресу b.
g,b,c начать выполнение программы с текущего адреса с остановкой по адресу b или c.
i имя файла занести в управляющий блок файла заданное имя файла.
i имя файла.тип файла занести в управляющий блок файла заданное имя и тип файла.
l распечатать 12 строк дизассемблированных машинных кодов, начиная с текущего адреса.
ls распечатать 12 строк, начиная с адреса s.
ls,f распечатать строки дизассемблирования, начиная с адреса s и кончая адресом f.
ms,f,d переслать в область памяти, начинающуюся с адреса s и кончающуюся адресом f, область памяти начинающуюся с адреса d.
r[b] считать с диска файл с заданным в fcb именем (см. Команду i) в tpa; b-необязательный параметр смещения.
ss просмотр и модификация области памяти, начиная с адреса s.
t трассировать один шаг программы.
tn трассировать n шагов программы.
x вывести на консоль содержимое всех регистров.
xr вывести на консоль (и возможно изменить) содержимое регистра r.
SID
A Assemble M Move
C Call P Pass Point
D Display R Read
F Fill Memory S Set Memory
G Go T Trace
H Hex U Untrace
I Input Line X Examine
L List Mnemonics
ПРИЛОЖЕНИЕ 3 Ассемблер ASM и макроассемблер MAC. Справочные данные
ASM
Вызов двухпроходного ассемблера и трансляция файла с заданным именем.
Вызов команды:
asm имя файла (1)
asm имя файла.p1p2p3 (2)
В любом случае файл должен иметь тип asm.
p1 - диск,содержащий исходный файл
p2 - диск,на который будет записываться hex файл
(если p2=z,то hex файл не создается)
p3 - диск,на который будет записываться prn файл,
т.е. файл с листингом (если p3=x,то листинг
выводится на консоль;если p3=z,то prn файл
не создается)
Программа состоит из последовательности строк вида:
номер метка операция операнд;примечания
типы меток: идентификатор или
идентификатор:
Идентификатор состоит из букв и цифр и начинается с буквы, длина
идентификатора не должна превышать 16 знаков. Знак * игнорируется.
типы констант:
b двоичная константа
q восьмеричная константа
d десятичная константа
h шестнадцатеричная константа
Строковые константы представляют собой набор знаков ascii,
заключенный в апострофы.
Зарезервированные имена:имена всех регистров,имена машинных
инструкций и директив ассемблера.
Арифметические и логические операторы:
a+b беззнаковое сложение a и b
a-b беззнаковое вычитание b из a
+b унарный плюс
-b унарный минус
a*b беззнаковое умножение a на b
a/b беззнаковое деление a на b
a mod b остаток от деления a на b
not b логическая инверсия b
a and b логическое ''и''
a or b логическое ''или''
a xor b логическое ''исключающее или''
a shl b сдвиг а влево на в битов, дополнение нулями
a shr b сдвиг а вправо на в битов, ополнение нулями
Приоритет операторов
* / mod shl shr - + not and or xor
Директивы ассемблера
org установить значение счетчика адреса
end конец программы, может присутствовать стартовый адрес
equ числовое ''приравнять''
set числовое ''установить''
if начало условного ассемблирования
endif конец условного ассемблирования
db задать байт данных
dw задать слово данных
ds отвести область памяти
Список инструкций совпадает со списком инструкций микропроцессора
intel 8080
Сообщения об ошибках:
d ошибка в данных: элемент данных не может быть помещен
в указанную область памяти
e неверное выражение: выражение неверно образовано и не
может быть вычислено в процессе ассемблирования
l неверная метка: метка не может появиться в данном
контексте(может быть двойное определение)
n не реализовано:возможности, которые будут присутство-
вать в следующих версиях asm
o переполнение: очень сложное выражение
p ошибка фазы: метка получает разные значения при двух
последовательных проходах по программе
r регистровая ошибка: значение заданное в качестве ре-
гистра, не соответствует коду инструкции
v ошибка значения: операнд, вычисленный в выражении, не-
верно образован
no source file present файл заданный в команде asm, не существует на диске
no directory space каталог диска заполнен
source file name error неверно задано имя файла asm
source file read error ошибка при чтении исходного файла
output file write error ошибка при записи выходного файла
cannot close file выходной файл не может быть закрыт