CASM46¶
CASM46 (Cawas Assembler for i8046) - ассемблер для процессора i8046. Работает с 24-битным кодом Big Endian и сразу выдаёт плоский бинарник.
| Параметр | Значение |
|---|---|
| Целевой процессор | i8046 (24 бита) |
| Порядок байтов | Big Endian |
| Формат вывода | .bin + .hex |
| Язык | Python 3 |
| Файл | CASM46.py |
| Статус | Архивный (I8046 заморожен) |
Использование¶
Опции:
| Опция | Описание |
|---|---|
-o file |
Имя выходного файла (по умолчанию output.hex) |
На выходе получаются два файла: output.hex (Logisim v2.0 raw) и output.bin (сырой бинарник).
Синтаксис¶
- Комментарии -
;. - Метки - идентификатор с
:. - Сегменты
.TEXT,.DATA,.RODATA,.BSSподдерживаются, но сливаются в один поток (объектный режим отсутствует). - Директивы
.ORG,.DB,.DW,.DD,.DA(24-битные адреса).
Регистры¶
| Имя | Адрес | Имя | Адрес |
|---|---|---|---|
R0 |
00h |
IX |
10h |
X1 |
01h |
IY |
11h |
XL1 |
02h |
SP |
12h |
XH1 |
03h |
BP |
13h |
X2 |
04h |
CS |
14h |
XL2 |
05h |
DS |
15h |
XH2 |
06h |
SS |
16h |
X3 |
07h |
ES |
17h |
XL3 |
08h |
SCS |
18h |
XH3 |
09h |
SDS |
19h |
X4 |
0Ah |
SSS |
1Ah |
XL4 |
0Bh |
SES |
1Bh |
XH4 |
0Ch |
A0 |
1Ch |
X5 |
0Dh |
A1 |
1Dh |
XL5 |
0Eh |
FL |
1Eh |
XH5 |
0Fh |
IC |
1Fh |
Система команд¶
Полный список - в разделе Система команд i8046. Кратко:
- Арифметика:
ADD,ADC,SUB,SBB,MUL,IMUL,DIV,IDIV. - Логика:
AND,OR,XOR,NOT,INC,DEC,LSL,LSR,ASR,ROL,ROR. - Сравнение:
CMP,ICMP. - Переходы:
JMP(с условиями.C,.Z,.NZ,.GR,.GE,.LS,.LE,.EQ,.NEи т.д.). - Память:
MOV,LDI.b/w/a,STR.b/w/a,LOD.b/w/a. - Стек:
PUSH,POP,CALL,RET. - Система:
NOP,HALT,CLI,STI,INT,IRET,WRINT,LOCK,UNLOCK.
Адресация STR/LOD¶
Ассемблер сам выбирает режим по синтаксису операнда:
| Режим | Пример | Формат |
|---|---|---|
| Flat | [0x00020018] |
D2F / D3F |
| Segment | [rB:rA] |
D2S / D3S |
| Register | [rA] |
D2R / D3R |