0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2025-01-28

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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?