axx で8048のハンドリング　HELLO WORLD

axxで、8048のハンドリングです。

##### パターンファイル

8048の命令をフルカバーしています。

```8048.axx
ADD    A,\@R!n  ::       n>1;5         ::       n|0x60
ADD    A,#!d    ::       d>0xFF;1      ::       0x03,d
ADD    A ,R!n   ::       n > 7 ; 5     ::       n | 0x68
ADDC   A,\@R!n  ::     n>1;5           ::          n|0x70
ADDC   A,R!n    ::       n>7;5         ::          n|0x78
ADDC   A,\#!d   ::       d>0xFF;1      ::          0x13,d
ANL    A,\@R!n  ::       n>7;5         ::          n|0x58
ANL    A,R!n    ::       n>1;5         ::          n|0x50
ANL    A,\#!d   ::       d>0xFF;1      ::          0x5,d
ANL    BUS,\#!d ::       d>0xFF;1        ::        0x98,d
ANL    P!c,\#!d ::       c!=1&&c!=2;6,d>0xFF;1  :: (c|0x98),d
ANLD   P!c,A    ::       c<4||c>7;6        ::      (c&3)|0x9C
CALL   !a       ::       a>0xFFF;2         ::      (((a&0x7FF)>>3)&0xE0)|0x14,a
CPL    A        ::                               0x37

CLR    A         ::                              0x27
CLR    C         ::                              0x97
CLR    F!f       ::      f>1;7           ::        (f<<5)|0x85
DB     !d                                ::      d
DA     A                                 ::      0x37
DEC    A                                 ::     0x07
DEC    R!n       ::       n>7;5          ::     n|0xC8
DIS    I         ::                              0x15
DIS    TCNTI     ::                              0x35
DJNZ   R!n,!a    ::                              n|0xE8,a
EN     I         ::                              0x05
EN     TCNTI     ::                              0x25
ENT0    CLK      ::                              0x75
IN      A,P!c    ::       c<1||c>2;6     ::      c|0x08
INC     A        ::                              0x17
INC     \@R!n    ::       n>1;5          ::      n|0x10
INC     R!n      ::     n>7;5            ::      n|0x18
INS     A,BUS    ::                              0x08
JB!n    !a       ::       n>7;5          ::      (0x20*n)+0x12,a
JC      !a       ::                              0xF6,a
JF0     !a       ::                              0xB6,a
JF1     !a       ::                              0x76,a
JNC     !a       ::                              0xE6,a
JNI     !a       ::                              0x86,a
JNT0    !a       ::                              0x26,a
JNT1    !a       ::                              0x46,a
JNZ     !a       ::                              0x96,a
JTF     !a       ::                              0x16,a
JT0     !a       ::                              0x36,a
JT1     !a       ::                              0x56,a
JZ      !a       ::                              0xC6,a
JMPP    \@A      ::                              0xB3
JMP     !a       ::       a>0xFFF;2      ::      (((a&0x7FF)>>3)&0xE0)|4,a
MOV     A,PSW    ::                              0xC7
MOV     PSW,A    ::                              0xD7
MOV     A,T      ::                              0x42
MOV     A,\@R!n  ::     n>1;5            ::      n|0xF0
MOV     A,R!n    ::     n>7;5            ::      n|0xF8
MOV     A,\#!d    :: d>0xFF;1           ::      0x23,d
MOV     \@R!n,A     :: n>1;5              ::      n|0xA0
MOV     \@R!n,\#!d  ::  n>7;5,d>0xFF;1    ::      n|0xB0,d
MOV     R!n,A       ::    n>7;5           ::      n|0xA8
MOV     R!n,\#!d    ::   n>7;5,d>0xFF;1   ::      n|0xB8,d
MOV     T,A        ::                            0x62
MOVD    P!c,A      ::                            (c&3)|0x3C
MOVD    A,P!c      ::                            (c&3)|0x0C
MOVP    A,\@A      ::                            0xA3
MOVP3   A,\@A      ::                            0xE3
MOVX    A,\@R!n    ::     n>1;5          ::      n|0x80
MOVX    \@R!n,A    ::     n>1;5          ::      n|0x90
NOP                                      ::      0x00
ORL     A,R!n      ::     n>7;5          ::      n|0x48
ORL     A,\@R!n    ::     n>1;5          ::      n|0x40
ORL     A,\#!d     ::     d>0xFF;1       ::      0x43,d
ORL     BUS,\#!d   ::     d>0xFF;1       ::      0x88,d
ORL     P!c,\#!d   ::     c<1||c>2;5     ::      c|0x88,d
ORLD    P!c,A      ::     c<4||c>7;6     ::      (c&3)|0x8C
OUTL    BUS,A      ::                            0x02
OUTL    P!c,A      ::     c<1||c>2;6     ::      c|0x38
RET                ::                            0x83
RETR               ::                            0x93
RL      A          ::                            0xE7
RLC     A          ::                            0xF7
RR      A          ::                            0x77
RRC     A          ::                            0x67
SEL     MB0        ::                            0xE5
SEL     MB1        ::                            0xF5
SEL     RB0        ::                            0xC5
SEL     RB1        ::                            0xD5
STOP    TCNT       ::                            0x65
STRT    CNT        ::                            0x45
STRT     T         ::                            0x55
SWAP    A          ::                            0x47
SWAP    R!n        ::                            0x28|n
HALT               ::                            0x01
XCH     A,\@R!n    ::      n>1;5        ::       n|0x20
XCH    A,R!n       ::      n>7;5        ::       n|0x28
XCHD    A,\@R!n    ::      n>1;5        ::       n|0x30
XRL     A,\@R!n    ::      n>1;1        ::       n|0xD0
XRL    A,R!n       ::      n>7;5        ::       n|0xD8
XRL    A,\#!d      ::      d>0xFF;1     ::       0xD3,d
```

##### プログラム

```8048hw.s
    .org 0x0000        ; プログラム開始アドレス

; 文字列の定義
TABLE:
    DB 0x48       ; 'H'
    DB 0x45       ; 'E'
    DB 0x4C       ; 'L'
    DB 0x4C       ; 'L'
    DB 0x4F       ; 'O'
    DB 0x20       ; ' '
    DB 0x57       ; 'W'
    DB 0x4F       ; 'O'
    DB 0x52       ; 'R'
    DB 0x4C       ; 'L'
    DB 0x44       ; 'D'


START:
    MOV R0, #TABLE          ; R0に文字列テーブルのアドレスをロード
    MOV R1, #11             ; 表示する文字数（11文字）

DISPLAY_LOOP:
    MOV A, @R0              ; R0が指すアドレスの値をAにロード
    OUTL P1, A              ; P1ポートにAの値を出力
    CALL DELAY              ; 適切なディレイを挿入
    INC R0                  ; R0をインクリメント（次の文字へ）
    DJNZ R1, DISPLAY_LOOP   ; R1をデクリメントし、0でなければループ

    RET

DELAY:
    ; 適切な遅延ルーチンをここに実装
    ; 例として単純なループを使用
    MOV R2, #0xFF
DELAY_LOOP:
    MOV A,PSW
    DJNZ R2, DELAY_LOOP
    RET
```

##### アセンブル

```
0000000000000000 8048hw.s 1     .org 0x0000        ; プログラム開始アドレス 
0000000000000000 8048hw.s 2  
0000000000000000 8048hw.s 3 ; 文字列の定義 
0000000000000000 8048hw.s 4 TABLE: 
0000000000000000 8048hw.s 5     DB 0x48       ; 'H'  0x48
0000000000000001 8048hw.s 6     DB 0x45       ; 'E'  0x45
0000000000000002 8048hw.s 7     DB 0x4C       ; 'L'  0x4c
0000000000000003 8048hw.s 8     DB 0x4C       ; 'L'  0x4c
0000000000000004 8048hw.s 9     DB 0x4F       ; 'O'  0x4f
0000000000000005 8048hw.s 10     DB 0x20       ; ' '  0x20
0000000000000006 8048hw.s 11     DB 0x57       ; 'W'  0x57
0000000000000007 8048hw.s 12     DB 0x4F       ; 'O'  0x4f
0000000000000008 8048hw.s 13     DB 0x52       ; 'R'  0x52
0000000000000009 8048hw.s 14     DB 0x4C       ; 'L'  0x4c
000000000000000a 8048hw.s 15     DB 0x44       ; 'D'  0x44
000000000000000b 8048hw.s 16  
000000000000000b 8048hw.s 17  
000000000000000b 8048hw.s 18 START: 
000000000000000b 8048hw.s 19     MOV R0, #TABLE          ; R0に文字列テーブルのアドレスをロード  0xb8 0x00
000000000000000d 8048hw.s 20     MOV R1, #11             ; 表示する文字数（11文字）  0xb9 0x0b
000000000000000f 8048hw.s 21  
000000000000000f 8048hw.s 22 DISPLAY_LOOP: 
000000000000000f 8048hw.s 23     MOV A, @R0              ; R0が指すアドレスの値をAにロード  0xf0
0000000000000010 8048hw.s 24     OUTL P1, A              ; P1ポートにAの値を出力  0x39
0000000000000011 8048hw.s 25     CALL DELAY              ; 適切なディレイを挿入  0x14 0x17
0000000000000013 8048hw.s 26     INC R0                  ; R0をインクリメント（次の文字へ）  0x18
0000000000000014 8048hw.s 27     DJNZ R1, DISPLAY_LOOP   ; R1をデクリメントし、0でなければループ  0xe9 0x0f
0000000000000016 8048hw.s 28  
0000000000000016 8048hw.s 29     RET  0x83
0000000000000017 8048hw.s 30  
0000000000000017 8048hw.s 31 DELAY: 
0000000000000017 8048hw.s 32     ; 適切な遅延ルーチンをここに実装 
0000000000000017 8048hw.s 33     ; 例として単純なループを使用 
0000000000000017 8048hw.s 34     MOV R2, #0xFF  0xba 0xff
0000000000000019 8048hw.s 35 DELAY_LOOP: 
0000000000000019 8048hw.s 36     MOV A,PSW  0xc7
000000000000001a 8048hw.s 37     DJNZ R2, DELAY_LOOP  0xea 0x19
000000000000001c 8048hw.s 38     RET  0x83
```