戻る | ADD Rd, Rs, Rt | Rd = Rs + Rt | Integer Add :レジスタ間の加算 | [000000][Rs:5][Rt:5][Rd:5][00000][100000] |
戻る | ADDI Rt, Rs, CONST16 | Rt = Rs + CONST16 | Integer Add Immediate Overflow例外可能 | [001000][rs:5][rd:5][CONST16:16] |
戻る | ADDIU Rt, Rs, CONST16 | Rt = Rs + CONST16 | Unsigned Integer Add Immediate (RsとCONST16の符号無し整数を加算値を、Rtレジスタに格納) | [001001][rs:5][rd:5][CONST16:16] |
戻る | ADDU Rd, Rs, Rt | Rd = Rs +Rt | Add Unsigned Word(レジスタ間の加算 | [000000][rs:5][rt:5][rd:5][00000][100001] |
戻る | AND Rd, Rs, Rt | Rd = Rs AND Rt | logical AND ( レジスタ Rs と Rt の内容のビットごとの AND演算結果をレジスタRd に格納する.) | [000000][Rs:5][Rt:5][Rd:5][00000][100100] |
戻る | ANDI Rt, Rs, immediate16 | Rt = Rs & immediate16 | Logical AND Immediate ( 16bitイミーディエトを符号拡張値とレジスタRsをビットANDした結果をレジスタRtに格納) | [001100][Rs:5][Rt:5][immediate16:16] |
戻る | B Unconditional Branch (Assembler idiom for: BEQ r0, r0, offset) PC += (int)offset | |||
戻る | BAL Branch and Link (Assembler idiom for: BGEZAL r0, offset) GPR[31> = PC + 8 PC += (int)offset | |||
戻る | BEQ Rs, Rt, offset16 | if Rs==Rt: PC+=offset |
Branch on Equal(Rs == Rtであれば相対分岐。offset16を符号拡張して2bit左シフトした値の加算で分岐先を計算する.) | [000100][Rs:5][Rt:6][offset:16] |
戻る | BEQL Rs, Rt, offset16 | if Rs==Rt: PC+=offset |
Branch on Equal(Rs == Rtであれば相対分岐。offset16を符号拡張して2bit左シフトした値の加算で分岐先を計算する.) | [010100][Rs:5][Rt:6][offset:16] |
戻る | BGEZ Rs, offset16 | if Rs>=0: PC+=offset |
Branch on Greater Than or Equal To Zero (Rs が0以上であれば相対分岐。offset16を符号拡張して2bit左シフトした値の加算で分岐先を計算する.) | [000111][Rs:5][00000][offset:16] |
戻る | BGEZL Rs, offset16 | if Rs>=0: PC+=offset |
Branch on Greater Than or Equal to Zero Likely (Rs が0以上であれば相対分岐。offset16を符号拡張して2bit左シフトした値の加算で分岐先を計算する.) | [010111][Rs:5][00000][offset:16] |
戻る | BGEZALL Branch on Greater Than or Equal To Zero And Link Likely GPR[31> = PC + 8 if !Rs[31> PC += (int)offset else Ignore Next Instruction | |||
戻る | BGEZL Branch on Greater Than or Equal To Zero Likely if !Rs[31> PC += (int)offset else Ignore Next Instruction | |||
戻る | BGTZ Rs, offset16 | if Rs > 0: PC += (int)offset |
Branch on Greater Than Zero (Rs が0より大きい場合に相対分岐。offset16を符号拡張して2bit左シフトした値の加算で分岐先を計算する.) | [000111][Rs:5][00000][offset:16] |
戻る | BGTZL Rs, offset16 | if Rs > 0: PC += (int)offset |
Branch on Greater Than Zero Likely(Rs が0より大きい場合に相対分岐。offset16を符号拡張して2bit左シフトした値の加算で分岐先を計算する.) | [010111][Rs:5][00000][offset:16] |
戻る | BLEZ Rs, offset16 | if Rs <= 0 PC += (int)offset | Branch on Less Than or Equal to Zero (Rs <= 0であれば相対分岐。offset16を符号拡張して2bit左シフトした値の加算で分岐先を計算する.) | [000110][Rs:5][00000][offset:16] |
戻る | BLEZL Rs, offset16 | if Rs <= 0 PC += (int)offset | Branch on Less Than or Equal to Zero Likely (Rs <= 0であれば相対分岐。offset16を符号拡張して2bit左シフトした値の加算で分岐先を計算する.) | [010110][Rs:5][00000][offset:16] |
戻る | BLTZ Rs, offset16 | if Rs < 0 PC += (int)offset | Branch on Less Than Zero(Rs < 0であれば相対分岐。offset16を符号拡張して2bit左シフトした値の加算で分岐先を計算する.) | [000001][Rs:5][00000][offset:16] |
戻る | BLTZAL Rs, offset16 | if Rs < 0 PC += (int)offset | Branch on Less Than Zero And Link (Rs < 0であれば相対分岐。offset16を符号拡張して2bit左シフトした値の加算で分岐先を計算する.) | [000001][Rs:5][10000][offset:16] |
戻る | BLTZALL Branch on Less Than Zero And Link Likely GPR[31> = PC + 8 if Rs[31> PC += (int)offset else Ignore Next Instruction | |||
戻る | BLTZL Branch on Less Than Zero Likely if Rs[31] PC += (int)offset else Ignore Next Instruction | |||
戻る | BNE Rs, Rt, offset16 | if Rs != Rt: PC += (int)offset16 |
Branch on Not Equal(Rs != Rtであれば相対分岐。offset16を符号拡張して2bit左シフトした値の加算で分岐先を計算する.) | [000101][Rs:5][Rt:5][offset16] |
戻る | BNEL rs, rt, offset16 | if Rs != Rt: PC += offset16<<2 |
Branch on Not Equal Likely「Branch Likely 命令」(Rs != Rtであれば相対分岐。offset16を符号拡張して2bit左シフトした値の加算で分岐先を計算する. | [010101][Rs:5][Rt:5][offset16] |
戻る | BREAK Breakpoint Break Exception | |||
戻る | CLO Count Leading Ones Rd = NumLeadingOnes(Rs) | |||
戻る | ||||
戻る | CLZ Count Leading Zeroes Rd = NumLeadingZeroes(Rs) | |||
戻る | COP0 Coprocessor 0 Operation See Software User’s Manual | |||
戻る | DERET Return from Debug Exception PC = DEPC Exit Debug Mode | |||
戻る | DI Atomically Disable Interrupts Rt = Status; StatusIE = 0 | |||
戻る | DIV Divide LO = (int)Rs / (int)Rt HI = (int)Rs % (int)Rt | |||
戻る | DIVU Unsigned Divide LO = (uns)Rs / (uns)Rt HI = (uns)Rs % (uns)Rt | |||
戻る | EHB Execution Hazard Barrier Stop instruction execution until execution hazards are cleared | |||
戻る | EI Atomically Enable Interrupts Rt = Status; StatusIE = 1 | |||
戻る | ERET Return from Exception if SR[2> PC = ErrorEPC else PC = EPC SR[1> = 0 SR[2> = 0 LL = 0 | |||
戻る | EXT Extract Bit Field Rt = ExtractField(Rs, pos, size) TABLE 3-1: PIC32MX3XX/4XX INSTRUCTION SET (CONTINUED) Instruction Description Function | |||
戻る | INS Rt,Rs,pos,size | Rt = InsertField(Rt, Rs, msb,lsb) | INS Insert Bit Field: レジスタ Rs の内容の下位 size ビットの領域を、レジスタ Rt の pos ビットから size ビットの領域に挿入する。 msb=pos+size-1, lsb=pos | [011111][Rs:5][Rt:5][msb:5][lsb:5][000100] |
戻る | J target | PC = PC+(target<<2) | Unconditional Jump (無条件ジャンプ:26bitのtargetアドレスを左に2ビット分シフトし, PC の上位4ビットと結合したアドレスへ,1命令遅れてジャンプする. ) | [000010][target: 26] |
戻る | JAL target | ra = PC + 8;PC = PC[31:28] || offset<<2 | Jump and Link (PC の上位4ビットとPC上位4ビットを結合したアドレスへ、ジャンプ) | [000011][offset:28] |
戻る | JALR Rd, Rs | Rd = PC + 8; PC = Rs | Jump and Link Register (Rdレジスタに戻り番地を記憶してジャンプする。1命令遅れてジャンプすることに注意) | [000000][Rs:5][00000][Rd:5][5:00000][001001] |
JALR Rs | $31 = PC + 8; PC = Rs | Jump and Link Register(上記のRdを省略した表記で、$31(=Ra)レジスタに戻り番地を記憶してジャンプする「関数呼び出しに使われる」。 1命令遅れてジャンプすることに注意) | [000000][Rs:5][00000][11111][5:00000][001001] | |
戻る | JALR.HB Jump and Link Register with Hazard Barrier Like JALR, but also clears execution and instruction hazards | |||
戻る | JALRC Jump and Link Register Compact ? do not execute instruction in jump delay slot (MIPS16e? only) Rd = PC + 2 PC = Rs | |||
戻る | JR Rs | PC = Rs | Jump Register (Rsレジスタ 内容のアドレスに,1命令遅れてジャンプする.関数のリターンで使われる。) | [000000][Rs:5][0000000000][00000][001000] |
戻る | JR.HB Jump Register with Hazard Barrier Like JR, but also clears execution and instruction hazards | |||
戻る | JRC Jump Register Compact ? do not execute instruction in jump delay slot (MIPS16e only) PC = Rs | |||
戻る | LB Rt, offset16(Rs) | Rt = (byte)Mem8[Rs+offset16] | Load Byte (符号拡張したoffset16とRsの加算値で得られるアドレスで指定されたバイトデータを、 符号拡張して、Rt にロードする. ) | [100000][Rs:5][Rt:5][offset:16] |
戻る | LBU Unsigned Load Byte Rt = (ubyte))Mem[Rs+offset> | |||
戻る | LH Load Halfword Rt = (half)Mem[Rs+offset> | |||
戻る | LHU rt, offset16(Rs) | Rt = Mem16[Rs+offset16] | Load Halfword Unsigned (符号拡張したoffset16とレジスタRsの加算値のアドレスが指し示すメモリ内容の ハーフワードデータをゼロ拡張して、レジスタ Rt にロードする。) | [100101][Rs:5][Rt:5][offset16:16] |
戻る | LL Load Linked Word Rt = Mem[Rs+offset> LL = 1 LLAdr = Rs + offset | |||
戻る | LUI Rt, const16 | Rt = const16 << 16 | Load Upper Immediate (16bitイミーディエトを 16bit左シフトして32bitに符号拡張してレジスタRt に格納する) | [001111][00000][Rt:5][const16:16] |
戻る | LW Rt, offset16(Rs) | Rt = Mem32(Rs + offset16) | Load Word (符号拡張したoffset16とレジスタRsの加算値のアドレスが指し示すメモリ内容をRtレジスタにロードする ) | [100011][Rs:5][Rt:5][offset16:16] |
戻る | LWPC Load Word, PC relative Rt = Mem[PC+offset> | |||
戻る | LWL Load Word Left See Architecture Reference Manual | |||
戻る | LWR Load Word Right See Architecture Reference Manual | |||
戻る | MADD Multiply-Add HI | LO += (int)Rs * (int)Rt | |||
戻る | MADDU Multiply-Add Unsigned HI | LO += (uns)Rs * (uns)Rt | |||
戻る | MFC0 Move From Coprocessor 0 Rt = CPR[0, Rd, sel> | |||
戻る | MFHI Move From HI Rd = HI | |||
戻る | MFLO Move From LO Rd = LO | |||
戻る | MOVN Move Conditional on Not Zero if Rt ? 0 then Rd = Rs | |||
戻る | MOVZ Move Conditional on Zero if Rt = 0 then Rd = Rs | |||
戻る | MSUB Multiply-Subtract HI | LO -= (int)Rs * (int)Rt | |||
戻る | MSUBU Multiply-Subtract Unsigned HI | LO -= (uns)Rs * (uns)Rt | |||
戻る | MTC0 Move To Coprocessor 0 CPR[0, n, Sel> = Rt | |||
戻る | MTHI Move To HI HI = Rs | |||
戻る | MTLO Move To LO LO = Rs | |||
戻る | MUL Multiply with register write HI | LO =Unpredictable Rd = ((int)Rs * (int)Rt)31..0 | |||
戻る | MULT Integer Multiply HI | LO = (int)Rs * (int)Rd | |||
戻る | MULTU Unsigned Multiply HI | LO = (uns)Rs * (uns)Rd TABLE 3-1: PIC32MX3XX/4XX INSTRUCTION SET (CONTINUED) Instruction Description Function | |||
戻る | NOP | No Operation | No Operation (Assembler idiom for: SLL r0, r0, r0) 何もしない | [000000][00000][00000][00000][000000] |
戻る | NOR Rd, Rs, Rt | Rd = Rs NOR Rt | logical NOT OR ( レジスタ Rs と Rt の内容のビットごとの NOR演算結果をレジスタRd に格納する.) | [000000][Rs:5][Rt:5][Rd:5][00000][100111] |
戻る | OR Rd,Rs,Rt | Rd = Rs OR Rt | Logical OR ( レジスタ Rs と Rt の内容のビットごとの OR演算結果をレジスタRd に格納する.) | [000000][Rs:5][Rt:5][Rd:5][00000][100101] |
戻る | ORI Rt, Rs, immediate16 | Rt = Rs | immediate16 | Logical OR Immediate ( 16bitイミーディエトを符号拡張値とレジスタRsをビットORした結果をレジスタRtに格納) | [001101][Rs:5][Rt:5][immediate16:16] |
戻る | RDHWR Read Hardware Register Allows unprivileged access to registers enabled by HWREna register | |||
戻る | RDPGPR Read GPR from Previous Shadow Set Rt = SGPR[SRSCtlPSS , Rd> | |||
戻る | RESTORE Restore registers and deallocate stack frame (MIPS16e? only) See Architecture Reference Manual | |||
戻る | ROTR Rotate Word Right Rd = Rtsa-1..0 || Rt31..sa | |||
戻る | ROTRV Rotate Word Right Variable Rd = RtRs-1..0 || Rt31..Rs | |||
戻る | SAVE Save registers and allocate stack frame (MIPS16e only) See Architecture Reference Manual | |||
戻る | SB Store Byte (byte)Mem[Rs+offset> = Rt | |||
戻る | SC Store Conditional Word if LL = 1 mem[Rs+offset> = Rt Rt = LL | |||
戻る | SDBBP Software Debug Break Point Trap to SW Debug Handler | |||
戻る | SEB Sign-Extend Byte Rd = (byte)Rs | |||
戻る | SEH Sign-Extend Half Rd = (half)Rs | |||
戻る | SH Rt, offset16(Rs) | Mem16(Rs + offset16) = Rt | Store Halfword 『符号拡張した offset をレジスタ base の内容に加算しアドレスを生成する。 アドレスで指定されたメモリに,レジスタ rt の最下位ハーフワードの内容をストアする。』 | [101001][Rs:5][Rt:5][Immed16:16] |
戻る | SLL Shift Left Logical Rd = Rt << sa | |||
戻る | SLLV Shift Left Logical Variable Rd = Rt << Rs[4:0> | |||
戻る | SLT Set on Less Than if (int)Rs < (int)Rt Rd = 1 else Rd = 0 | |||
戻る | SLTI Rt, Rs, Immed16 | if (int)Rs<(int)Immed16: Rt=1 else Rt=0 |
Set on Less Than Immediate (RsとImmed16を2の補数表現された符号付き整数のとして比較し、Rsが小さい場合みRtを1,そうでなければ0にする) | [001010][Rs:5][Rt:5][Immed16:16] |
戻る | SLTIU Rt, Rs, Immed16 | if (uint)Rs<(uint)Immed16: Rt=1 else Rt=0 |
Set on Less Than Immediate Unsigned (RsとImmed16を2の補数表現された符号無し整数として比較し、Rsが小さい場合みRtを1,そうでなければ0にする) | [001011][Rs:5][Rt:5][Immed16:16] |
戻る | SLTU Set on Less Than Unsigned if (uns)Rs < (uns)Immed Rd = 1 else Rd = 0 | |||
戻る | SRA Shift Right Arithmetic Rd = (int)Rt >> sa | |||
戻る | SRAV Shift Right Arithmetic Variable Rd = (int)Rt >> Rs[4:0> | |||
戻る | SRL Shift Right Logical Rd = (uns)Rt >> sa | |||
戻る | SRLV Shift Right Logical Variable Rd = (uns)Rt >> Rs[4:0> | |||
戻る | SSNOP Superscalar Inhibit No Operation NOP | |||
戻る | SUB Rd, Rs, Rt | Rd = (int)Rs - (int)Rt | Integer Subtract (レジスタ間の減算 オーバーフローで例外が発生) | [000000][Rs:5][Rt:5][Rd:5][00000][100010]( ) |
戻る | SUBU Rd, Rs, Rt | Rd = (uns)Rs - (uns)Rt | Unsigned Subtract(レジスタ間の減算 オーバーフローでも例外が発生しない) | [000000][Rs:5][Rt:5][Rd:5][00000][100011] |
戻る | SW Rt, offset16(Rs) | Mem32(Rs + offset16) = Rt | Store Word (符号拡張した offset16とRsレジスタの加算値のアドレスが指し示すメモリワード領域へRt内容を格納する) | [101011][Rs:5][Rt:5][offset16:16] |
戻る | SWL Store Word Left See Architecture Reference Manual | |||
戻る | SWR Store Word Right See Architecture Reference Manual | |||
戻る | SYNC Synchronize See Software User’s Manual | |||
戻る | SYSCALL System Call SystemCallException | |||
戻る | TEQ Trap if Equal if Rs == Rt TrapException | |||
戻る | TEQI Trap if Equal Immediate if Rs == (int)Immed TrapException | |||
戻る | TGE Trap if Greater Than or Equal if (int)Rs >= (int)Rt TrapException | |||
戻る | TGEI Trap if Greater Than or Equal Immediate if (int)Rs >= (int)Immed TrapException | |||
戻る | TGEIU Trap if Greater Than or Equal Immediate Unsigned if (uns)Rs >= (uns)Immed TrapException | |||
戻る | TGEU Trap if Greater Than or Equal Unsigned if (uns)Rs >= (uns)Rt TrapException | |||
戻る | TLT Trap if Less Than if (int)Rs < (int)Rt TrapException | |||
戻る | TLTI Trap if Less Than Immediate if (int)Rs < (int)Immed TrapException | |||
戻る | TLTIU Trap if Less Than Immediate Unsigned if (uns)Rs < (uns)Immed TrapException | |||
戻る | TLTU Trap if Less Than Unsigned if (uns)Rs < (uns)Rt TrapException | |||
戻る | TNE Trap if Not Equal if Rs != Rt TrapException | |||
戻る | TNEI Trap if Not Equal Immediate if Rs != (int)Immed TrapException | |||
戻る | WAIT Wait for Interrupts Stall until interrupt occurs | |||
戻る | WRPGPR Write to GPR in Previous Shadow Set SGPR[SRSCtlPSS , Rd> = Rt | |||
戻る | WSBH Word Swap Bytes Within Halfwords Rd = Rt23..16 || Rt31..24 || Rt7..0 || Rt15..8 | |||
戻る | XOR Rd,Rs,Rt | Rd = Rs XOR Rt | Logical XOR ( レジスタ Rs と Rt の内容のビットごとの XOR演算結果をレジスタRd に格納する.) | [000000][Rs:5][Rt:5][Rd:5][00000][100110] |
戻る | XORI Rt, Rs, immediate16 | Rt = Rs XOR immediate16 | Logical XOR Immediate ( 16bitイミーディエトを符号拡張値とレジスタRsをビットXORした結果をレジスタRtに格納) | [001110][Rs:5][Rt:5][immediate16:16] |
戻る | ZEB Zero-extend byte (MIPS16e? only) Rt = (ubyte) Rs | |||
戻る | ZEH Zero-extend half (MIPS16e only) Rt = (uhalf) Rs |
慣例的な表現 | MIPS32命令表現 | 概要 | |
戻る | li Rt, value16 | ADDIU Rt, zero, value16 | load immediate value(Rdレジスタにvalue16の値を設定する。) |
戻る | beqz Rs, offset16 | BEQ Rs, zero, offset16 | Branch on Equal to Zero(Rsが0で分岐。offset16はラベル指定「相対アドレス」) |
戻る | bnez Rs, offset16 | BNE Rs,$0,offset16 | Branch on Not Equal to Zero(Rsが0でなければ分岐。offset16はラベル指定「相対アドレス」) |
戻る | bnezl Rs, offset16 | BNEL Rs,$0,offset16 | Branch on Not Equal to Zero 「Branch Likely 命令」(offset16はラベル指定(相対アドレス)) |
戻る | move Rd, Rs | ADDU Rd,Rs,zero | MOVE Rs to Rd (Rdレジスタに、Rsレジスタ内容を設定する処理です。) |
0 | zero | Always equal to zero(常に0) |
1 | at | Assembler temporary; used by the assembler(アセンブラのテンポラリレジスタ) |
2-3 | v0-v1 | Return value from a function call(関数の戻り値) |
4-7 | a0-a3 | First four parameters for a function call(関数への引数) |
8-15 | t0-t7 | Temporary variables; need not be preserved(テンポラリレジスタ.関数呼び出しで破壊) |
16-23 | s0-s7 | Function variables; must be preserved(関数呼び出しで不変なレジスタ) |
24-25 | t8-t9 | Two more temporary variables(テンポラリレジスタ.関数呼び出しで破壊) |
26-27 | k0-k1 | Kernel use registers; may change unexpectedly(OS用に予約済み) |
28 | gp | Global pointer(大域変数領域のベースアドレス) |
29 | sp | スタックポインタ. 実行時にスタックはアドレスの高い方から低い方へ進みます。 スタック上で次に空いている位置を指します。 |
30 | fp/s8 | Stack frame pointer or subroutine variable(s0-s7と同様で必要ならフレームポインタ) |
31 | ra | Return address of the last subroutine call(関数から戻る場合のアドレス) |
レジスタ名 | アドレス | 機能概要 | 備考 |
---|---|---|---|
PORTB | 0xbf88 6120 | 代入や参照レジスタ | SW2はは0x0080の位置 |
PORTBCLR | 0xbf88 6124 | 代入でPORTBの指定ビットを0にする。対応出力端子をLowにする機能のレジスタ | LEDのD1は0x8000 |
PORTBSET | 0xbf88 6128 | 代入でPORTBの指定ビットを1にする。対応出力端子をHiにする機能のレジスタ | LEDのD1は0x8000 |
T4CON | 0xbf88 0C00 | TYPE B TIMER4 CONTROL REGISTER | DS60001168K-page 152参照 |
TMR4 | 0xbf88 0C10 | タイマの初期値 | |
PR4 | 0xbf88 0C20 | タイマー周期設定 | |
IFS0 | 0xbf88 1030 | Clear interrupt status flag(ビット位置で割り込み対象を指定) 0bit:CT,1bit:CS0,2bit:CS1,・・bit19:T4,・・・bit30:RTCC,bit31:FCE | DS60001168K-page 68参照 |
IEC0 | 0xbf88 1060 | interrupt enable flag(ビット位置で割込み許可割対象を指定) 0bit:CT,1bit:CS0,2bit:CS1,・・bit19:T4,・・・bit30:RTCC,bit31:FCE | DS60001168K-page 68参照 |
IFS1 | 0xbf88 1040 | Clear interrupt status flag(ビット位置で割り込み対象を指定) 0bit:CMP1,1bit:CMP2,2bit:CMP3,・・・・・bit31:DMA3 | DS60001168K-page 68参照 |
IEC1 | 0xbf88 1070 | interrupt enable flag(ビット位置で割込み許可割対象を指定) 0bit:CMP1,1bit:CMP2,2bit:CMP3,・・・・・bit31:DMA3 | DS60001168K-page 68参照 |
C言語マクロ表現 | アドレス | 機能概要 |
---|---|---|
_switch2_state() | 0xa000 401c | SW2の状態を調べるマクロで押されている状態が1、そうでないなら0(添え字:7) |
_send_string(s) | 0xa000 41a4 | sの文字列を接続(USB)相手に送信する。 |
_nvm_erase_page(adr) | 0xa000 40f0 | adr番地のEEPROMの1ページ(1024byte)を0xFFに初期化する。 |
_nvm_write_word(adr,word) | 0xa000 40f4 | adr番地のEEPROMの1ワードにwordを記憶する。 |
_HANDLES[_IDX_TIMER_4_FUNC] | 0xa000 4094 | TIMER_4割り込み関数を変更登録の対象(添え字:37) |
_HANDLES[_IDX_HANDLE_USER_SET_FUNC] | 0xa000 40c0 | IOなどの初期化の起動前に呼び出す関数の記憶要素(添え字:48) |
_HANDLES[_IDX_INIT_SUB_FUNC] | 0xa000 40c8 | IOなどの初期化の起動後に呼び出す関数の記憶要素(添え字:50) |