- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
{{include unfinished_page}}
,{t},{BSIZE:1 0|SIZE:100%}
,{BSIZE:0}←[[5章 拡張BASIC]] ,{BSIZE:0|RIGHT}[[B R800 かけ算命令マクロ]] →
この表は、命令の種類ごとに分類して、R800のインストラクションをまとめたものです。表中の'''ニーモニック'''は各命令の名前を現わし、'''命令動作'''でその動作内容を簡単に示しています。
命令動作の欄で←とあるのは、右側の内容を左側に代入することを、カッコでくくられたものは、くくられたレジスタなどで示されるメモリの内容を、それぞれ意味しています。例えば、
r←[.hl]
とあるのは、.hlレジスタで示されるアドレスのメモリの内容を、8ビットレジスタに代入するということです。ただし、入出力命令の[n]と[.c]は、対応する入出力ポートの番号のことです。
'''フラグ'''の欄は各フラグの動作を、'''オペコード'''はそれぞれの命令に対するマシン語コードを、2進数と16進数で記したものです。その右側の'''B'''と'''C'''は、各命令の長さ(バイト数)と、命令を実行するのに要するクロック数を、それぞれ表しています。
このほか、インストラクション表に出てくる略号に関しては、次の凡例を参照して下さい。
表に記載されたニーモニックはZ80のものと違っていますが、R800で追加された乗算命令や、Z80で正式に動作が保障されていなかった命令以外はZ80と命令動作はすべて同じです。
'''凡例'''
,{t},{BSIZE:1}
,{c},{SIZE:100|BSIZE:0 1},{BSIZE:0 1}
, ,
,.a{7} ,レジスター.aの最上位ビット
,.a{4-7},レジスター.aのビット4-7
,: ,動作の区切り
,.de:.hl ,上位16ビットが.de、下位16ビットが.hlに入る、32ビット整数
,[.ix+d] ,.ixに8ビットの符号つき変位を足した値が示すアドレス
,C ,キャリーフラグ
,Z ,ゼロフラグ
,P/V ,パリティ・オーバーフローフラグ
,S ,サインフラグ
,N ,減算フラグ
,H ,ハーフキャリーフラグ
,・ ,フラグは変化しない
,↕ ,フラグは実行結果により変化する
,0 ,フラグは0
,1 ,フラグは1
,? ,不定になる
,V ,オーバーフローフラグとして使われる
,P ,パリティーフラグとして使われる
,IFF ,割り込みフリップフロップとして使われる
,"r,r'" ,"8ビットレジスター、.a,.b,.c,.d,.e,.h,.l"
,"u,u'" ,"8ビットレジスター、.a,.b,.c,.d,.e,.ixh,.ixl"
,"v,v'" ,"8ビットレジスター、.a,.b,.c,.d,.e,.iyh,.iyl"
,p ,"8ビットレジスター、.ixh,.ixl"
,q ,"8ビットレジスター、.iyh,.iyl"
,ss ,"16ビットレジスター、.bc,.de,.hl,.sp"
,pp ,"16ビットレジスター、.bc,.de,.ix,.sp"
,rr ,"16ビットレジスター、.bc,.de,.iy,.sp"
,qq ,"16ビットレジスター、.bc,.de,.hl,.af"
,e ,short br 系の命令の飛び先アドレスへの差分、8ビットの符号付き即値
, ,(+127〜-128)
,k ,"brk命令の飛び先アドレス、00h,08h,10h,18h,20h,28h,30h,38h"
,nn ,16ビットの即値、もしくは絶対アドレス
,n ,8ビットの即値
,b ,ビット演算命令の第何ビットかを示す値
,NOT ,ビットを反転する
,∨ ,ビットのORをとる
,⊻ ,ビットのXORをとる
,∧ ,ビットのANDをとる
,tmp ,一時的に値を退避する
,B ,命令のバイト数
,C ,命令の実行に必要な最小クロック数
分岐命令、コール命令でクロック数が2つ書いてあるものは、上が条件が成立しないとき、下が条件が成立した時を意味します。
また、入出力命令でクロック数が2つ書いてあるものは、上がまだ転送が終わらないとき、下が転送が終わったときをそれぞれ意味します。
ここに示す命令表のクロック数は、SYSCLK換算でXTALの発振周波数の4分の1です。また、ノーウエイトで実行したときの値で、DRAM上で実行した時はページブレークやリフレッシュにより、自動的にウエイトが挿入されます。
!A.1 8ビット移動命令
,{c C},{CENTER}
,{c L},{LEFT}
,{c R},{RIGHT}
,{c R2},{ROWS:2}
,{c C3},{COLS:3}
,{c C8},{COLS:8}
,{c UD},{BSIZE:1 0}
,{t},{BSIZE:1}
,{c},{SIZE:100|BSIZE:0 1},{BSIZE:0 1}
,{c},{SIZE:100|BSIZE:0 1},{SIZE:230|BSIZE:0 1}
,ニーモニック{R2},命令動作{C|R2} ,flags{COLS:6|C},,,,,,オペコード{COLS:9|C},,,,,,, , ,B{R2} ,C{R2}
, , ,S,Z,H,{{sup P}}/{{sub V}},N,C ,7 ,6 ,5 ,4 ,3 ,2 ,1 ,0 ,Hex, ,
,{c},{UD} ,{UD} ,{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD}
, , , , , , , , , , , , , , , , , , ,
,{c},{L} ,{L} ,{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{L},{R},{R}
,"ld r , r'" ,r ← r' ,・,・,・,・ ,・,・ ,0 ,1 ,{C3|C}r,, ,{C3|C}r',, , ,1 ,1
,"ld r , n" ,r ← n ,・,・,・,・ ,・,・ ,0 ,0 ,{C3|C}r,, ,1 ,1 ,0 , ,2 ,2
, , , , , , , , ,{C8|C}← n →,,,,,,, , , ,
,"ld r , [.hl]" ,r ← [.hl] ,・,・,・,・ ,・,・ ,0 ,1 ,{C3|C}r,, ,1 ,1 ,0 , ,1 ,2
,"ld r , [.ix+d]",r ← [.ix+d] ,・,・,・,・ ,・,・ ,1 ,1 ,0 ,1 ,1 ,1 ,0 ,1 ,DD ,3 ,5
, , , , , , , , ,0 ,1 ,{C3|C}r,, ,1 ,1 ,0 , , ,
, , , , , , , , ,{C8|C}← d →,,,,,,, , , ,
,"ld r, [.iy+d]" ,r ← [.iy+d] ,・,・,・,・ ,・,・ ,1 ,1 ,1 ,1 ,1 ,1 ,0 ,1 ,FD ,3 ,5
, , , , , , , , ,0 ,1 ,{C3|C}r,, ,1 ,1 ,0 , , ,
, , , , , , , , ,{C8|C}← d →,,,,,,, , , ,
,"ld [.hl],r " ,[.hl] ← r ,・,・,・,・ ,・,・ ,0 ,1 ,1 ,1 ,0 ,{C3|C}r,, , ,3 ,5
,"ld [.ix+d],r" ,[.ix+d] ← r ,・,・,・,・ ,・,・ ,1 ,1 ,0 ,1 ,1 ,1 ,0 ,1 ,DD ,3 ,5
, , , , , , , , ,0 ,1 ,1 ,1 ,0 ,{C3|C}r,, , , ,
, , , , , , , , ,{C8|C}← d →,,,,,,, , , ,
,"ld [iy+d],r" ,[iy+d] ← r ,・,・,・,・ ,・,・ ,1 ,1 ,0 ,1 ,1 ,1 ,0 ,1 ,FD ,3 ,5
, , , , , , , , ,0 ,1 ,1 ,1 ,0 ,{C3|C}r,, , , ,
, , , , , , , , ,{C8|C}← d →,,,,,,, , , ,
,"ld u, u'" ,u ← u' ,・,・,・,・ ,・,・ ,0 ,1 ,0 ,1 ,1 ,1 ,0 ,1 ,DD ,2 ,2
, , , , , , , , ,0 ,1 ,{C3|C}u,, ,{C3|C}u',, , , ,
,"ld v, v'" ,v ← v' ,・,・,・,・ ,・,・ ,0 ,1 ,1 ,1 ,1 ,1 ,0 ,1 ,FD ,2 ,2
, , , , , , , , ,0 ,1 ,{C3|C}v,, ,{C3|C}v',, , , ,
,"ld u, n" ,u ← n ,・,・,・,・ ,・,・ ,1 ,1 ,0 ,1 ,1 ,1 ,0 ,1 ,DD ,3 ,3
, , , , , , , , ,0 ,0 ,{C3|C}u,, ,1 ,1 ,0 , , ,
, , , , , , , , ,{C8|C}← n →,,,,,,, , , ,
,"ld v, n" ,v ← n ,・,・,・,・ ,・,・ ,1 ,1 ,1 ,1 ,1 ,1 ,0 ,1 ,FD ,3 ,3
, , , , , , , , ,0 ,0 ,{C3|C}v,, ,1 ,1 ,0 , , ,
, , , , , , , , ,{C8|C}← n →,,,,,,, , , ,
,"ld [.hl],n " ,[.hl] ← n ,・,・,・,・ ,・,・ ,0 ,0 ,1 ,1 ,0 ,1 ,1 ,0 ,36 ,2 ,3
, , , , , , , , ,{C8|C}← n →,,,,,,, , , ,
,"ld [.ix+d],n" ,[.ix+d] ← n ,・,・,・,・ ,・,・ ,1 ,1 ,0 ,1 ,1 ,1 ,0 ,1 ,DD ,4 ,5
, , , , , , , , ,0 ,0 ,1 ,1 ,0 ,1 ,1 ,0 ,36 , ,
, , , , , , , , ,{C8|C}← d →,,,,,,, , , ,
, , , , , , , , ,{C8|C}← n →,,,,,,, , , ,
,"ld [iy+d],n" ,[iy+d] ← n ,・,・,・,・ ,・,・ ,1 ,1 ,1 ,1 ,1 ,1 ,0 ,1 ,FD ,4 ,5
, , , , , , , , ,0 ,0 ,1 ,1 ,0 ,1 ,1 ,0 ,36 , ,
, , , , , , , , ,{C8|C}← d →,,,,,,, , , ,
, , , , , , , , ,{C8|C}← n →,,,,,,, , , ,
,,000,001,010,011,100,101,110,111
,r,.b,.c,.d,.e,.h,.l,,.a
,u,.b,.c,.d,.e,.ixh,.ixl,,.a
,v,.b,.c,.d,.e,.iyh,.iyl,,.a
!A.2 16ビット移動命令
,{c C},{CENTER}
,{c L},{LEFT}
,{c R},{RIGHT}
,{c R2},{ROWS:2}
,{c C3},{COLS:3}
,{c C8},{COLS:8}
,{c UD},{BSIZE:1 0}
,{t},{BSIZE:1}
,{c},{SIZE:100|BSIZE:0 1},{SIZE:230|BSIZE:0 1}
,ニーモニック{R2},命令動作{C|R2} ,flags{COLS:6|C},,,,,,オペコード{COLS:9|C},,,,,,, , ,B{R2} ,C{R2}
, , ,S,Z,H,{{sup P}}/{{sub V}},N,C ,7 ,6 ,5 ,4 ,3 ,2 ,1 ,0 ,Hex, ,
,{c},{UD} ,{UD} ,{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD}
, , , , , , , , , , , , , , , , , , ,
,{c},{L} ,{L} ,{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{L},{R},{R}
,"ld ss, nn",ss ← nn, ・,・,・,・ ,・,・ ,0,0,{COLS:2|C}ss,,0,0,0,1 , ,3,3
,, , ,,,,,, {C8|C}← nnl →,,,,,,,, , ,
,, , ,,,,,, {C8|C}← nnh →,,,,,,,, , ,
,"ld .ix, nn",.ix ← nn, ・,・,・,・ ,・,・ ,1,1,0,1,1,1,0,1 ,DD ,4,4
,, , ,,,,,, 0,0,1,0,0,0,0,1 ,21 , ,
,, , ,,,,,, {C8|C}← nnl →,,,,,,,, , ,
,, , ,,,,,, {C8|C}← nnh →,,,,,,,, , ,
,"ld .iy, nn",.iy ← nn, ・,・,・,・ ,・,・ ,1,1,1,1,1,1,0,1 ,FD ,4,4
,, , ,,,,,, 0,0,1,0,0,0,0,1 ,21 , ,
,, , ,,,,,, {C8|C}← nnl →,,,,,,,, , ,
,, , ,,,,,, {C8|C}← nnh →,,,,,,,, , ,
,"ld .sp, .hl",.sp ← .bl, ・,・,・,・ ,・,・ ,1,1,1,1,1,1,0,1 ,F9 ,1,1
,"ld .sp, .ix",.sp ← .ix, ・,・,・,・ ,・,・ ,1,1,0,1,1,1,0,1 ,DD ,2,2
,, , ,,,,,, 1,1,1,1,1,0,0,1 ,F9 , ,
,"ld .sp, .iy",.sp ← .iy, ・,・,・,・ ,・,・ ,1,1,1,1,1,1,0,1 ,FD ,2,2
,, , ,,,,,, 1,1,1,1,1,0,0,1 ,F9 , ,
,,00,01,10,11
,ss,.bc,.de,.hl,.sp
!A.3 交換命令
,{t},{BSIZE:1}
,{c},{SIZE:100|BSIZE:0 1},{SIZE:230|BSIZE:0 1}
,ニーモニック{C|R2},命令動作{C|R2} ,flags{COLS:6|C},,,,,,オペコード{COLS:9|C},,,,,,, , ,B{R2} ,C{R2}
, , ,S,Z,H,{{sup P}}/{{sub V}},N,C ,7 ,6 ,5 ,4 ,3 ,2 ,1 ,0 ,Hex, ,
,{c},{UD} ,{UD} ,{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD}
, , , , , , , , , , , , , , , , , , ,
,{c},{L} ,{L} ,{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{L},{R},{R}
,"xch .de,.hl",.de⇔.hl, ・,・,・,・,・,・, 1,1,1,0,1,0,1,1, EB, 1,1
,"xch .af,.af'",.af⇔.af', ↕,↕,↕,↕,↕,↕, 0,0,0,0,1,0,0,0, 08, 1,1
,"xch [.sp],.hl",.l⇔[.sp];.h⇔[.sp+1], ・,・,・,・,・,・, 1,1,1,0,1,0,1,1, E3, 1,5
,"xch [.sp],.ix",.ixl⇔[.sp], ・,・,・,・,・,・, 1,1,0,1,1,1,0,1, DD, 2,6
,,.ixh⇔[.sp+1], ・,・,・,・,・,・, 1,1,1,0,0,0,1,1, E3, ,
,"xch [.sp],.iy",.iyl⇔[.sp], ・,・,・,・,・,・, 1,1,1,1,1,1,0,1, FD, 2,6
,,.iyh⇔[.sp+1], ・,・,・,・,・,・, 1,1,1,0,0,0,1,1, E3,,
,"xchx",.bc⇔.bc';.de⇔.de';.hl⇔.hl', ・,・,・,・,・,・, 1,1,1,0,1,0,1,1, D9, 1,1
!A.4 スタック操作命令
,{t},{BSIZE:1}
,{c},{SIZE:100|BSIZE:0 1},{SIZE:230|BSIZE:0 1}
,ニーモニック{C|R2},命令動作{C|R2} ,flags{COLS:6|C},,,,,,オペコード{COLS:9|C},,,,,,, , ,B{R2} ,C{R2}
, , ,S,Z,H,{{sup P}}/{{sub V}},N,C ,7 ,6 ,5 ,4 ,3 ,2 ,1 ,0 ,Hex, ,
,{c},{UD} ,{UD} ,{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD}
, , , , , , , , , , , , , , , , , , ,
,{c},{L} ,{L} ,{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{L},{R},{R}
,"push qq",[.sp-2]←qql;[.sp-1]←qqh, ・,・,・,・,・,・, 1,1,q,q,0,1,0,1, , 1,4
,,.sp←.sp-2, ,,,,,, ,,,,,,,, , ,
,"push .ix",[.sp-2]←.ixl;[.sp-1]←.ixh, ・,・,・,・,・,・, 1,1,0,1,1,1,0,1, DD, 2,5
,,.sp←.sp-2, ,,,,,, ,,,,,,,, E5, ,
,"push .iy",[.sp-2]←.iyl;[.sp-1]←.iyh, ・,・,・,・,・,・, 1,1,1,1,1,1,0,1, FD, 2,5
,,.sp←.sp-2, ,,,,,, ,,,,,,,, E5, ,
,"pop qq",qql←[.sp];qqh←[.sp+1], ・,・,・,・,・,・, 1,1,q,q,0,0,0,1, , 1,3
,,.sp←.sp+2, ・,・,・,・,・,・, ,,,,,,,, , ,
,"pop .ix",.ixl←[.sp];.ixh←[.sp+1], ・,・,・,・,・,・, 1,1,0,1,1,1,0,1, DD, 2,4
,,.sp←.sp+2, ・,・,・,・,・,・, 1,1,1,0,0,0,0,1, E1,,
,"pop .iy",.iyl←[.sp];.iyh←[.sp+1], ・,・,・,・,・,・, 1,1,1,1,1,1,0,1, FD, 2,4
,,.sp←.sp+2, ・,・,・,・,・,・, 1,1,1,0,0,0,0,1, E1,,
,,00,01,10,11
,qq,.bc,.de,.hl,.af
pop .afのときはflagsはすべて変化する
!A.5 ブロック転送命令
,{t},{BSIZE:1}
,{c},{SIZE:150|BSIZE:0 1},{SIZE:230|BSIZE:0 1}
,ニーモニック{C|R2},命令動作{C|R2} ,flags{COLS:6|C},,,,,,オペコード{COLS:9|C},,,,,,, , ,B{R2} ,C{R2}
, , ,S,Z,H,{{sup P}}/{{sub V}},N,C ,7 ,6 ,5 ,4 ,3 ,2 ,1 ,0 ,Hex, ,
,{c},{UD} ,{UD} ,{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD}
, , , , , , , , , , , , , , , , , , ,
,{c},{L} ,{L} ,{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{L},{R},{R}
,"move [.hl++],[.de++]",[.de]←[.hl];.de←.de+1, ・,・,0,↕,0,・, 1,1,1,0,1,1,0,1, ED, 2,4
,,.hl←.hl+1;.bc←.bc-1, ,,,,,, 1,0,1,0,0,0,0,0, A0,,
,"move [.hl--],[.de--]",[.de]←[.hl];.de←.de-1, ・,・,0,↕,0,・, 1,1,1,0,1,1,0,1, ED, 2,4
,,.hl←.hl-1;.bc←.bc-1, ,,,,,, 1,0,1,0,1,0,0,0, A8,,
,"movem [.hl++],[.de++]",repeat;[.de]←[.hl];.de←.de+1, ・,・,0,0,0,・, 1,1,1,0,1,1,0,1, ED, 2,4
,,.hl←.hl+1;.bc←.bc-1;until .bc=0, ,,,,,, 1,0,1,1,0,0,0,0, B0,,
,"movem [.hl--],[.de--]",repeat;[.de]←[.hl];.de←.de-1, ・,・,0,0,0,・, 1,1,1,0,1,1,0,1, ED, 2,4
,,.hl←.hl-1;.bc←.bc-1;until .bc=0, ,,,,,, 1,0,1,1,1,0,0,0, B8,,
!A.6 ブロックサーチ命令
!A.7 乗算命令
!A.8 加算命令
!A.9 減算命令
!A.10 比較命令
!A.11 論理演算命令
!A.12 ビット操作命令
!A.13 ローテイト命令
!A.14 シフト命令
!A.15 分岐命令
!A.16 コール命令
,{c C},{CENTER}
,{c L},{LEFT}
,{c R},{RIGHT}
,{c R2},{ROWS:2}
,{c C3},{COLS:3}
,{c C8},{COLS:8}
,{c UD},{BSIZE:1 0}
,{t},{BSIZE:1}
,{c},{SIZE:100|BSIZE:0 1},{SIZE:230|BSIZE:0 1}
,ニーモニック{C|R2},命令動作{C|R2} ,flags{COLS:6|C},,,,,,オペコード{COLS:9|C},,,,,,, , ,B{R2} ,C{R2}
, , ,S,Z,H,{{sup P}}/{{sub V}},N,C ,7 ,6 ,5 ,4 ,3 ,2 ,1 ,0 ,Hex, ,
,{c},{UD} ,{UD} ,{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD}
, , , , , , , , , , , , , , , , , , ,
,{c},{L} ,{L} ,{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{L},{R},{R}
,"call nn", [.sp-2] ← .pcl;[.sp] ← pch, ・,・,・,・,・,・, 1,1,0,0,1,1,0,1, CD, 3,5
,, .sp ← .sp-2;pc-nn, ,,,,,, {C8|C}← nni →,,,,,,,, , ,
,, , ,,,,,, {C8|C}← nnh →,,,,,,,, , ,
,"call nz,nn", if z=0, ・,・,・,・,・,・, 1,1,0,0,0,1,0,0, C4, 3,5
,, [.sp-2] ← .pcl;[.sp] ← pch, ,,,,,, {C8|C}← nni →,,,,,,,, , ,
,, .sp ← .sp-2;pc-nn, ,,,,,, {C8|C}← nnh →,,,,,,,, , ,
,"call z,nn", if z=1, ・,・,・,・,・,・, 1,1,0,0,1,1,0,0, CC, 3,3
,, [.sp-2] ← .pcl;[.sp] ← pch, ,,,,,, {C8|C}← nni →,,,,,,,, , ,5
,, .sp ← .sp-2;pc-nn, ,,,,,, {C8|C}← nnh →,,,,,,,, , ,
,"call ne,nn", if c=0, ・,・,・,・,・,・, 1,1,0,1,0,1,0,0, D4, 3,3
,, [.sp-2] ← .pcl;[.sp] ← pch, ,,,,,, {C8|C}← nni →,,,,,,,, , ,5
,, .sp ← .sp-2;pc-nn, ,,,,,, {C8|C}← nnh →,,,,,,,, , ,
,"call c,nn", if c=1, ・,・,・,・,・,・, 1,1,0,1,1,1,0,0, DC, 3,3
,, [.sp-2] ← .pcl;[.sp] ← pch, ,,,,,, {C8|C}← nni →,,,,,,,, , ,5
,, .sp ← .sp-2;pc-nn, ,,,,,, {C8|C}← nnh →,,,,,,,, , ,
,"call po,nn", if F=0, ・,・,・,・,・,・, 1,1,1,0,0,1,0,0, E4, 3,3
,, [.sp-2] ← .pcl;[.sp] ← pch, ,,,,,, {C8|C}← nni →,,,,,,,, , ,5
,, .sp ← .sp-2;pc-nn, ,,,,,, {C8|C}← nnh →,,,,,,,, , ,
,"call pe,nn", if F=1, ・,・,・,・,・,・, 1,1,1,0,1,1,0,0, EC, 3,5
,, [.sp-2] ← .pcl;[.sp] ← pch, ,,,,,, {C8|C}← nni →,,,,,,,, , ,5
,, .sp ← .sp-2;pc-nn, ,,,,,, {C8|C}← nnh →,,,,,,,, , ,
,"call p,nn", if s=0, ・,・,・,・,・,・, 1,1,1,1,0,1,0,0, F4, 3,3
,, [.sp-2] ← .pcl;[.sp] ← pch, ,,,,,, {C8|C}← nni →,,,,,,,, , ,5
,, .sp ← .sp-2;pc-nn, ,,,,,, {C8|C}← nnh →,,,,,,,, , ,
,"call m,nn", if s=1, ・,・,・,・,・,・, 1,1,1,1,1,1,0,0, FC, 3,3
,, [.sp-2] ← .pcl;[.sp] ← pch, ,,,,,, {C8|C}← nni →,,,,,,,, , ,5
,, .sp ← .sp-2;pc-nn, ,,,,,, {C8|C}← nnh →,,,,,,,, , ,
,"ret", .pcl ← [.sp];pch ← [.sp+1];.sp ← .sp+2, ,,,,,, 1,1,0,0,1,0,0,1, C9, 1,3
,"ret nz", if z=0, ・,・,・,・,・,・, 1,1,0,0,0,0,0,0, C0, 1,1
,, .pcl ← [.sp];pch ← [.sp+1];.sp ← .sp+2, ,,,,,, ,,,,,,,, , ,3
,"ret z", if z=1, ・,・,・,・,・,・, 1,1,0,0,1,0,0,0, C8, 1,1
,, .pcl ← [.sp];pch ← [.sp+1];.sp ← .sp+2, ,,,,,, ,,,,,,,, , ,3
,"ret nc", if c=0, ・,・,・,・,・,・, 1,1,0,1,0,0,0,0, D0, 1,1
,, .pcl ← [.sp];pch ← [.sp+1];.sp ← .sp+2, ,,,,,, ,,,,,,,, , ,3
,"ret c", if c=1, ・,・,・,・,・,・, 1,1,0,1,1,0,0,0, D8, 1,1
,, .pcl ← [.sp];pch ← [.sp+1];.sp ← .sp+2, ,,,,,, ,,,,,,,, , ,3
,"ret po", if F=0, ・,・,・,・,・,・, 1,1,1,0,0,0,0,0, E0, 1,1
,, .pcl ← [.sp];pch ← [.sp+1];.sp ← .sp+2, ,,,,,, ,,,,,,,, , ,3
,"ret pe", if F=1, ・,・,・,・,・,・, 1,1,1,0,1,0,0,0, E8, 1,1
,, .pcl ← [.sp];pch ← [.sp+1];.sp ← .sp+2, ,,,,,, ,,,,,,,, , ,3
,"ret p", if s=0, ・,・,・,・,・,・, 1,1,1,1,0,0,0,0, F0, 1,1
,, .pcl ← [.sp];pch ← [.sp+1];.sp ← .sp+2, ,,,,,, ,,,,,,,, , ,3
,"ret m", if s=1, ・,・,・,・,・,・, 1,1,1,1,1,0,0,0, F8, 1,1
,, .pcl ← [.sp];pch ← [.sp+1];.sp ← .sp+2, ,,,,,, ,,,,,,,, , ,3
,"reti", interrupt return, ・,・,・,・,・,・, 1,1,1,0,1,1,0,1, ED, 2,5
,, , ,,,,,, 0,1,0,0,1,1,0,1, 4D, ,
,"retn", Non Maskable Interrupt return, ・,・,・,・,・,・, 1,1,1,0,1,0,0,0, ED, 2,5
,, , ,,,,,, 0,1,0,0,0,1,0,1, 45, ,
!A.17 入出力命令
,{c C},{CENTER}
,{c L},{LEFT}
,{c R},{RIGHT}
,{c R2},{ROWS:2}
,{c C3},{COLS:3}
,{c C8},{COLS:8}
,{c UD},{BSIZE:1 0}
,{t},{BSIZE:1}
,{c},{SIZE:100|BSIZE:0 1},{BSIZE:0 1}
,{c},{SIZE:100|BSIZE:0 1},{SIZE:230|BSIZE:0 1}
,ニーモニック{C|R2},命令動作{C|R2} ,flags{COLS:6|C},,,,,,オペコード{COLS:9|C},,,,,,, , ,B{R2} ,C{R2}
, , ,S,Z,H,{{sup P}}/{{sub V}},N,C ,7 ,6 ,5 ,4 ,3 ,2 ,1 ,0 ,Hex, ,
,{c},{UD} ,{UD} ,{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD}
, , , , , , , , , , , , , , , , , , ,
,{c},{L} ,{L} ,{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{L},{R},{R}
,"in .a,[n]", .a←[n], ・,・,・,・,・,・, 1,1,0,1,1,0,1,1, DB, 2,3
,"in r,[.c]", r←[.c], 1,1,0,P,0,・, ↕,↕,1,0,1,1,0,1, ED, 2,3
,"in .a,[n]", .a ← [n], ・,・,・,・,・,・, 1,1,0,1,1,0,1,1, DB, 2,3
,"in r,[.c]", r ← [.c], 1,1,0,P,0,・, ↕,↕,1,0,1,1,0,1, ED, 2,3
,"in .f,[.c]", [.c], 1,1,0,P,0,・, ↕,↕,1,0,1,1,0,1, ED, 2,3
,, , ,,,,,, 0,1,1,1,0,0,0,0, 70, ,
,"in [.hl++],[.c]", [.hl]←[.c];b←.b-1, ・,・,・,・,・,・, 1,↕,0,1,1,0,1,1, ED, 2,4
,, .hl←.hl+1, ,,,,,, 1,0,1,0,0,0,1,0, A2, ,
,"in [.hl--],[.c]", [.hl]←[.c];b←.b-1, ・,・,・,・,・,・, 1,↕,0,1,1,0,1,1, ED, 2,4
,, .hl←.hl-1, ?,1,?,?,1,・, 1,0,1,0,1,0,1,0, AA, ,
,"inm [.hl++],[.c]", repeat;[.hl]←[.c];b←.b-1, ・,・,・,・,・,・, 1,1,0,1,1,0,1,1, ED, 2,4
,, .hl←.hl+1;until .b=0, ?,1,?,?,1,・, 1,0,1,1,0,0,1,0, B2, ,3
,"inm [.hl--],[.c]", repeat;[.hl]←[.c];b←.b-1, ・,・,・,・,・,・, 1,1,0,1,1,0,1,1, ED, 2,4
,, .hl←.hl-1;until .b=0, ?,1,?,?,1,・, 1,0,1,1,1,0,1,0, BA, ,3
,"out [n],.a", [n]←.a, ・,・,・,・,・,・, 1,1,0,1,0,0,1,1, D3, 2,3
,"out [.c],r", [.c]←r, ・,・,・,・,・,・, 1,1,1,0,1,1,0,1, ED, 2,3
,"out [.c],[.hl++]", [.c]←[.hl];.b-.b-1, ?,1,?,?,1,・, 1,↕,1,0,1,1,0,1, ED, 2,4
,, .hl←.hl+1, ,,,,,, 1,0,1,0,0,0,1,1, A3, ,
,"out [.c],[.hl--]", [.c]←[.hl];.b-.b-1, ?,1,?,?,1,・, 1,↕,0,1,1,0,1,1, ED, 2,4
,, .hl←.hl-1, ,,,,,, 1,0,1,0,1,0,1,1, AB, ,
,"outm [.c],[.hl++]", repeat;[.c]←[.hl];.b-.b-1, ?,1,?,?,1,・, 1,1,0,1,1,0,1,1, ED, 2,4
,, .hl←.hl+1;until .b=0, ,,,,,, 1,0,1,1,0,0,1,1, B3, ,3
,"outm [.c],[.hl--]", repeat;[.c]←[.hl];.b-.b-1, ?,1,?,?,1,・, 1,1,0,1,1,0,1,1, ED, 2,4
,, .hl←.hl-1;until .b=0, ,,,,,, 1,0,1,1,1,0,1,1, BB, ,3
,"in [.hl++],[.c]", [.hl] ← [.c];b ← .b-1, ・,・,・,・,・,・, 1,↕,0,1,1,0,1,1, ED, 2,4
,, .hl ← .hl+1, ,,,,,, 1,0,1,0,0,0,1,0, A2, ,
,"in [.hl--],[.c]", [.hl] ← [.c];b ← .b-1, ・,・,・,・,・,・, 1,↕,0,1,1,0,1,1, ED, 2,4
,, .hl ← .hl-1, ?,1,?,?,1,・, 1,0,1,0,1,0,1,0, AA, ,
,"inm [.hl++],[.c]", repeat;[.hl] ← [.c];b ← .b-1, ・,・,・,・,・,・, 1,1,0,1,1,0,1,1, ED, 2,4
,, .hl ← .hl+1;until .b=0, ?,1,?,?,1,・, 1,0,1,1,0,0,1,0, B2, ,3
,"inm [.hl--],[.c]", repeat;[.hl] ← [.c];b ← .b-1, ・,・,・,・,・,・, 1,1,0,1,1,0,1,1, ED, 2,4
,, .hl ← .hl-1;until .b=0, ?,1,?,?,1,・, 1,0,1,1,1,0,1,0, BA, ,3
,"out [n],.a", [n] ← .a, ・,・,・,・,・,・, 1,1,0,1,0,0,1,1, D3, 2,3
,"out [.c],r", [.c] ← r, ・,・,・,・,・,・, 1,1,1,0,1,1,0,1, ED, 2,3
,"out [.c],[.hl++]", [.c] ← [.hl];.b ← .b-1, ?,1,?,?,1,・, 1,↕,1,0,1,1,0,1, ED, 2,4
,, .hl ← .hl+1, ,,,,,, 1,0,1,0,0,0,1,1, A3, ,
,"out [.c],[.hl--]", [.c] ← [.hl];.b ← .b-1, ?,1,?,?,1,・, 1,↕,0,1,1,0,1,1, ED, 2,4
,, .hl ← .hl-1, ,,,,,, 1,0,1,0,1,0,1,1, AB, ,
,"outm [.c],[.hl++]", repeat;[.c] ← [.hl];.b ← .b-1, ?,1,?,?,1,・, 1,1,0,1,1,0,1,1, ED, 2,4
,, .hl ← .hl+1;until .b=0, ,,,,,, 1,0,1,1,0,0,1,1, B3, ,3
,"outm [.c],[.hl--]", repeat;[.c] ← [.hl];.b ← .b-1, ?,1,?,?,1,・, 1,1,0,1,1,0,1,1, ED, 2,4
,, .hl ← .hl-1;until .b=0, ,,,,,, 1,0,1,1,1,0,1,1, BB, ,3
!A.18 CPU制御命令
,{c C},{CENTER|TOP}
,{c L},{LEFT}
,{c R},{RIGHT}
,{c R2},{ROWS:2}
,{c C3},{COLS:3}
,{c C8},{COLS:8}
,{c UD},{BSIZE:1 0}
,{t},{BSIZE:1}
,{c},{SIZE:100|BSIZE:0 1},{BSIZE:0 1}
,{c},{SIZE:100|BSIZE:0 1},{SIZE:230|BSIZE:0 1}
,ニーモニック{C|R2},命令動作{C|R2} ,flags{COLS:6|C},,,,,,オペコード{COLS:9|C},,,,,,, , ,B{R2} ,C{R2}
, , ,S,Z,H,{{sup P}}/{{sub V}},N,C ,7 ,6 ,5 ,4 ,3 ,2 ,1 ,0 ,Hex, ,
,{c},{UD} ,{UD} ,{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD}
, , , , , , , , , , , , , , , , , , ,
,{c},{L} ,{L} ,{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{L},{R},{R}
,adj .a, adjust to decimal, ↕,↕,↕,P,・,↕, 0,1,0,0,0,1,1,1, 27, 1,1
,not.a, .a←NOT .a, ・,・,1,・,1,・, 0,1,0,0,1,1,1,1, 2F, 1,1
,neg.a{R2}, .a←NOT .a+1, ↕,↕,↕,V,・,↕, 1,1,1,0,1,1,0,1, ED, 2,2
,not.a, .a ← NOT .a, ・,・,1,・,1,・, 0,1,0,0,1,1,1,1, 2F, 1,1
,neg.a{R2}, .a ← NOT .a+1, ↕,↕,↕,V,・,↕, 1,1,1,0,1,1,0,1, ED, 2,2
,,, ,,,,,, 0,1,0,0,0,1,0,0, 44,,
,notc, C←NOT c, ・,・,?,・,0,↕, 0,0,1,1,1,1,1,1, 3F, 1,1
,setc, C←1, ・,・,0,・,0,↕, 0,0,1,1,0,1,1,1, 37, 1,1
,notc, C ← NOT c, ・,・,?,・,0,↕, 0,0,1,1,1,1,1,1, 3F, 1,1
,setc, C ← 1, ・,・,0,・,0,↕, 0,0,1,1,0,1,1,1, 37, 1,1
,nop, NO operation, ・,・,・,・,・,・, 0,0,0,0,0,0,0,0, 00, 1,1
,halt, HALT, ・,・,・,・,・,・, 0,1,1,1,0,1,1,0, 76, 1,2
,di, IFF←0, ・,・,・,・,・,・, 1,1,1,1,0,0,1,1, F3, 1,2
,ei, IFF←1, ・,・,・,・,・,・, 1,1,1,1,1,0,1,1, FB, 1,1
,di, IFF ← 0, ・,・,・,・,・,・, 1,1,1,1,0,0,1,1, F3, 1,2
,ei, IFF ← 1, ・,・,・,・,・,・, 1,1,1,1,1,0,1,1, FB, 1,1
,im 0, interrupt mode 0, ・,・,・,・,・,・, 1,1,1,0,1,1,0,1, ED, 2,3
,,, ,,,,,, 0,1,0,0,0,1,1,0, 46, ,
,im 1, interrupt mode 1, ・,・,・,・,・,・, 1,1,1,0,1,1,0,1, ED, 2,3
,,, ,,,,,, 0,1,0,1,0,1,1,0, 56, ,
,im 2, interrupt mode 2, ・,・,・,・,・,・, 1,1,1,0,1,1,0,1, ED, 2,3
,,, ,,,,,, 0,1,0,1,1,1,1,0, 5E, ,
,{t},{BSIZE:1 0|SIZE:100%}
,{BSIZE:0}←[[5章 拡張BASIC]] ,{BSIZE:0|RIGHT}[[B R800 かけ算命令マクロ]] →