PDP11 портирование с Z80: различия между версиями
Nzeemin (обсуждение | вклад) Нет описания правки |
Nzeemin (обсуждение | вклад) Нет описания правки |
||
Строка 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> | ||
Строка 64: | Строка 70: | ||
1$: MOVB (R3)+, (R2)+ ; 97E8 LDIR | 1$: MOVB (R3)+, (R2)+ ; 97E8 LDIR | ||
SOB R1, 1$ | SOB R1, 1$ | ||
</pre> | |||
LDI: | |||
<pre> | |||
MOVB (R3), (R2) | |||
DEC R3 | |||
DEC R2 | |||
DEC R1 | |||
</pre> | </pre> | ||
LDDR: | LDDR: |
Версия от 20:03, 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