PDP11 портирование с Z80: различия между версиями
Nzeemin (обсуждение | вклад) Нет описания правки |
Nzeemin (обсуждение | вклад) Нет описания правки |
||
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 15: | Строка 15: | ||
Типичные команды: | Типичные команды: | ||
<pre> | <pre> | ||
JP addr JMP addr | JP addr JMP addr либо BR addr | ||
JR addr BR addr либо JMP addr | |||
JR C, addr BLO addr | JR C, addr BLO addr | ||
JR NC, addr BHIS addr | JR NC, addr BHIS addr | ||
Строка 33: | Строка 33: | ||
</pre> | </pre> | ||
Битовые операции: | |||
<pre> | <pre> | ||
BIT 0,A BIT #1, R0 | BIT 0,A BIT #1, R0 | ||
Строка 43: | Строка 43: | ||
BIT 6,A BIT #64., R0 | BIT 6,A BIT #64., R0 | ||
BIT 7,A BIT #128., R0 | BIT 7,A BIT #128., R0 | ||
SET 0,A BIS #1, R0 | |||
... | |||
SET 7,A BIS #128., R0 | |||
RES 0,A BIC #1, R0 | |||
... | |||
RES 7,A BIC #128., R0 | |||
</pre> | </pre> | ||
Строка 52: | Строка 58: | ||
</pre> | </pre> | ||
LDI: | |||
<pre> | |||
MOVB (R3)+, (R2)+ | |||
DEC R1 | |||
</pre> | |||
LDIR: | LDIR: | ||
<pre> | <pre> | ||
Строка 60: | Строка 71: | ||
SOB R1, 1$ | SOB R1, 1$ | ||
</pre> | </pre> | ||
LDI: | |||
<pre> | |||
MOVB (R3), (R2) | |||
DEC R3 | |||
DEC R2 | |||
DEC R1 | |||
</pre> | |||
LDDR: | |||
<pre> | |||
1$: MOVB (R3), (R2) | |||
DEC R3 | |||
DEC R2 | |||
SOB R1, 1$ | |||
</pre> | |||
LDDR более короткий вариант, но нужно перед этим увеличить R3 и R2 на единицу: | |||
<pre> | |||
1$: MOVB -(R3), -(R2) | |||
SOB R1, 1$ | |||
</pre> | |||
EX DE,HL -- через регистр R5, который обычно не занят: | EX DE,HL -- через регистр R5, который обычно не занят: | ||
<pre> | <pre> | ||
MOV R3, R5 | MOV R3, R5 | ||
MOV R2, R3 | MOV R2, R3 | ||
MOV R5, R2 | MOV R5, R2 | ||
</pre> | </pre> | ||
EX DE,HL -- тремя XOR: | |||
<pre> | |||
XOR R3, R2 | |||
XOR R2, R3 | |||
XOR R3, R2 | |||
</pre> | |||
Чтение DE из (HL), для случая когда в HL может быть нечётный адрес: | |||
<pre> | |||
CLR R2 ; | |||
BISB R2, (R3)+ ; LD E,(HL) | |||
SWAB ; INC HL | |||
BISB R2, (R3) ; LD D,(HL) | |||
SWAB ; | |||
</pre> | |||
[[Категория:PDP-11 совместимые]] | [[Категория:PDP-11 совместимые]] |
Текущая версия от 20:19, 30 марта 2024
Этот документ создан для Emuverse и распространяется на условиях лицензии CC-BY-SA-3.0. |
Маппинг регистров и команд при портировании с процессора Z80 на PDP-11.
Маппинг регистров:
A R0 BC R1 DE R2 HL R3 IX R4 IY R5
Типичные команды:
JP addr JMP addr либо BR addr JR addr BR addr либо JMP addr JR C, addr BLO addr JR NC, addr BHIS addr JR Z, addr BEQ addr JR NZ, addr BNE addr CP $xx CMP R0, #xx / CMPB R0, #xx SRL xx ASR xx PUSH rr MOV rr, -(SP) POP rr MOV (SP)+, rr RET RETURN
Битовые операции:
BIT 0,A BIT #1, R0 BIT 1,A BIT #2, R0 BIT 2,A BIT #4, R0 BIT 3,A BIT #8., R0 BIT 4,A BIT #16., R0 BIT 5,A BIT #32., R0 BIT 6,A BIT #64., R0 BIT 7,A BIT #128., R0 SET 0,A BIS #1, R0 ... SET 7,A BIS #128., R0 RES 0,A BIC #1, R0 ... RES 7,A BIC #128., R0
DJNZ:
1$: ... SOB R1, 1$
LDI:
MOVB (R3)+, (R2)+ DEC R1
LDIR:
MOV #LDB05, R3 ; 97DF LD HL,$DB05 MOV #LEB00, R2 ; 97E2 LD DE,$EB00 MOV #4096., R1 ; 97E5 LD BC,$1000 1$: MOVB (R3)+, (R2)+ ; 97E8 LDIR SOB R1, 1$
LDI:
MOVB (R3), (R2) DEC R3 DEC R2 DEC R1
LDDR:
1$: MOVB (R3), (R2) DEC R3 DEC R2 SOB R1, 1$
LDDR более короткий вариант, но нужно перед этим увеличить R3 и R2 на единицу:
1$: MOVB -(R3), -(R2) SOB R1, 1$
EX DE,HL -- через регистр R5, который обычно не занят:
MOV R3, R5 MOV R2, R3 MOV R5, R2
EX DE,HL -- тремя XOR:
XOR R3, R2 XOR R2, R3 XOR R3, R2
Чтение DE из (HL), для случая когда в HL может быть нечётный адрес:
CLR R2 ; BISB R2, (R3)+ ; LD E,(HL) SWAB ; INC HL BISB R2, (R3) ; LD D,(HL) SWAB ;