コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
Wikippe
検索
検索
表示
ログイン
個人用ツール
ログイン
Intel 8080のソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
Intel 8080
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
要求した操作を行うことは許可されていません。
このページのソースの閲覧やコピーができます。
{{右|[[ファイル:Intel C8080A 9064 33001 N8384 top.jpg|thumb|right|250px]]}} '''Intel 8080'''(インテル 8080、i8080)は、[[インテル]]によって開発された[[8ビット]][[マイクロプロセッサ]]であり、[[1974年]]4月に発表された。同社の[[Intel 8008|8008]]の後継に当たるが命令の互換性はない。8080の命令は、後に拡張され、[[ザイログ]]の[[Z80]]や[[日立製作所]]の64180に継承された。初期の[[パーソナルコンピュータ]]の多くに採用され、[[モトローラ]]の[[MC6800|6800]]や[[モステクノロジー]]の[[MOS 6502|6502]]([[アップル インコーポレイテッド|アップル]]、[[コモドール]]、[[ファミリーコンピュータ|ファミコン]]、他)と覇を競った。 <!-- #何を以て「完成」といっているの不明 インテルのマイクロプロセッサは、[[intel 4004|4004]]から[[intel 8008|8008]]を経て、この8080で一応の完成を見た。 --> i8080のロジック設計の中心となったのは[[ビジコン]]退社後、[[リコー]]を経てインテルに入社した[[嶋正利]]だった。開発者の特権として彼は[[フォトマスク]]余白に嶋家の家紋である[[引両紋]](丸に三つ引)を刻んだ。 == レジスタセット == 8080は、[[アキュムレータ (コンピュータ)|アキュムレータ]]1つを含め、7つの[[レジスタ (コンピュータ)|汎用レジスタ]](8ビット)を持つ。これはたとえば6800と比べて本数としては多い。 {| class="wikitable" style="text-align:center" ! 16ビット単位の呼称 !! 8ビット単位(上位) !! 8ビット単位(下位) !! 説明 |- | PSW || A || Flag | style="text-align:left" | アキュムレータ(A)とフラグ・レジスタ |- | BC || B || C | style="text-align:left" | 汎用レジスタ |- | DE || D || E | style="text-align:left" | 汎用レジスタ |- | HL || H || L | style="text-align:left" | 汎用兼 間接参照用レジスタ |- | PC | colspan="2" | | style="text-align:left" | プログラムカウンタ |- | SP | colspan="2" | | style="text-align:left" | スタックポインタ |} (注)命令中ではHLレジスタペアをポインタとして扱うメモリ参照は「M」と表現される: 例 ADD M :フラグレジスタのビット位置 ::b7:S 符号 ::b6:Z ゼロ ::b5:未使用 (0に固定) ::b4:H AUXキャリー([[パック10進数|パックBCD]]演算用) ::b3:未使用 (0に固定) ::b2:P パリティ ::b1:未使用 (0に固定) ::b0:C キャリー :(このフラグ位置は8086を経てIA-32に至るまで代々引き継がれている。) == 命令セット == *命令は[[バイト (情報)|バイト]]単位で、1から3バイトの可変長である。 *主な命令は、8ビットレジスタ間のロード、8ビットおよび16ビットレジスタペアに対する即値ロード命令、Aレジスタを用いた加減算と[[ビット演算|ビット論理演算]]・比較演算(HLレジスタペアをポインタとして扱うメモリ参照を含む)、絶対番地指定による条件および無条件[[分岐命令|ジャンプ]]・コール命令・リターン命令、[[スタック]]へのPUSH/POP操作、[[割り込み (コンピュータ)|割り込み]]許可・禁止命令、8レベルの割り込みをエミュレートするソフトウェア割り込み命令などがある。 *相対ジャンプ及び相対コール命令がないため命令を動的に再配置することは原則としてできなかった。 *リセット直後は(プログラム・カウンタが)0番地からアドレスが増加する方向に実行される。また、スタックポインタはアドレスが減少する方向に(プッシュにより)自動的に減算されるため、スタックはメモリ下位(数字の大きい方が上)番地に向かって伸びる。 以下に命令一覧を示す。 * rは8ビットレジスタA,B,C,D,E,H,LまたはM(HLレジスタで示されるメモリ)を表す。ザイログニーモニックではMは''(HL)''と書く。 * rrは16ビットレジスタBC,DE,HL,SPを表す。なおインテルニーモニックではBC,DE,HLはB,D,Hと書く。 * nは8ビットの数値(即値またはI/Oアドレス)を表す。 * nnは16ビットの数値(即値またはメモリアドレス)を表す。 * インテルニーモニックとザイログニーモニックが異なるものは、スラッシュで区切って示した。 === 転送・交換命令 === ;MOV r,r / LD r,r :8ビットレジスタ間の転送。MOV M,Mは存在しない(相当するコードはHLT/HALTに割り当てられている)。 ;MVI r,n / LD r,n :8ビットレジスタに即値をロードする。 ;LXI rr,nn / LD rr,nn :16ビットレジスタに即値をロードする。 ;LDA nn / LD a,(nn) :メモリの内容をAレジスタにロードする。 ;STA nn / LD (nn),A :Aレジスタの内容をメモリにストアする。 ;LHLD nn / LD HL,(nn) :メモリの内容をHLレジスタにロードする。 ;SHLD nn / LD (nn),HL :HLレジスタの内容をメモリにストアする。 ;LDAX B / LD A,(BC) :BCレジスタで示されるメモリの内容をAレジスタにロードする。HLレジスタのMOV A,Mに相当。 ;LDAX D / LD A,(DE) :DEレジスタで示されるメモリの内容をAレジスタにロードする。 ;STAX B / LD (BC),A :Aレジスタの内容をBCレジスタで示されるメモリにストアする。HLレジスタのMOV M,Aに相当。 ;STAX D / LD (DE),A :Aレジスタの内容をDEレジスタで示されるメモリにストアする。HLレジスタのMOV M,Aに相当。 ;SPHL / LD SP,HL :HLレジスタの内容をSPレジスタに転送する。 ;XCHG / EX DE,HL :DEレジスタとHLレジスタの内容を交換する。 === 算術演算命令 === ;ADD r / ADD A,r :8ビットレジスタの内容をAレジスタに加算する。 ;ADI n / ADD A,n :即値をAレジスタに加算する。 ;ADC r / ADC A,r :8ビットレジスタの内容とCフラグをAレジスタに加算する。 ;ACI n / ADC A,n :即値とCフラグをAレジスタに加算する。 ;SUB r :8ビットレジスタの内容をAレジスタから減算する。 :8ビット加減算命令のうちSUBのみはザイログニーモニックでもデスティネーションのAを表記しない。これはZ80に16ビットのSUB命令がなく(ADD,ADC,SBC命令はある)、対象がAレジスタであることが自明なためである。 ;SUI n / SUB n :即値をAレジスタから減算する。 ;SBB r / SBC A,r :8ビットレジスタの内容とCフラグ(ボロー)をAレジスタから減算する。 ;SBI n / SBC A,n :即値とCフラグ(ボロー)をAレジスタから減算する。 ;CMP r / CP r :8ビットレジスタの内容をAレジスタから減算するが、結果は格納しない。 ;CPI n / CP n :即値をAレジスタから減算するが、結果は格納しない。 ;INR r / INC r :8ビットレジスタの内容をインクリメントする。 ;DCR r / DEC r :8ビットレジスタの内容をデクリメントする。 ;INX rr / INC rr :16ビットレジスタの内容をインクリメントする。 ;DCX rr / DEC rr :16ビットレジスタの内容をデクリメントする。 ;DAD rr / ADD HL,rr :16ビットレジスタの内容をHLレジスタに加算する。 ;DAA :Aレジスタの内容をBCD補正する。 === 論理演算命令 === ;ANA r / AND r :8ビットレジスタの内容とAレジスタの論理積をとる。 ;ANI n / AND n :即値とAレジスタの論理積をとる。 ;ORA r / OR r :8ビットレジスタの内容とAレジスタの論理和をとる。 ;ORI n / OR n :即値とAレジスタの論理和をとる。 ;XRA r / XOR r :8ビットレジスタの内容とAレジスタの排他的論理和をとる。 ;XRI n / XOR n :即値とAレジスタの排他的論理和をとる。 ;CMA / CPL :Aレジスタの内容を反転する。 === ローテート命令 === ;RLC / RLCA :Aレジスタの内容とCフラグを連結して左ローテートする。 ;RRC / RRCA :Aレジスタの内容とCフラグを連結して右ローテートする。 ;RAL / RLA :Aレジスタの内容を左ローテートする。 ;RAR / RRA :Aレジスタの内容を右ローテートする。 === ジャンプ・コール・リターン命令 === ;JMP nn / JP nn :指定の番地にジャンプする。 ;JNZ nn / JP NZ,nn :Zフラグが0のとき指定の番地にジャンプする。 ;JZ nn / JP Z,nn :Zフラグが1のとき指定の番地にジャンプする。 ;JNC nn / JP NC,nn :Cフラグが0のとき指定の番地にジャンプする。 ;JC nn / JP C,nn :Cフラグが1のとき指定の番地にジャンプする。 ;JPO nn / JP PO,nn :Pフラグが0のとき指定の番地にジャンプする。 ;JPE nn / JP PE,nn :Pフラグが1のとき指定の番地にジャンプする。 ;JP nn / JP P,nn :Sフラグが0のとき指定の番地にジャンプする。 ;JM nn / JP M,nn :Sフラグが1のとき指定の番地にジャンプする。 ;PCHL / JP (HL) :HLの内容をPCに転送する。 ;CALL nn :指定の番地をコールする。 ;CNZ nn / CALL NZ,nn :Zフラグが0のとき指定の番地をコールする。 ;CZ nn / CALL Z,nn :Zフラグが1のとき指定の番地をコールする。 ;CNC nn / CALL NC,nn :Cフラグが0のとき指定の番地をコールする。 ;CC nn / CALL C,nn :Cフラグが1のとき指定の番地をコールする。 ;CPO nn / CALL PO,nn :Pフラグが0のとき指定の番地をコールする。 ;CPE nn / CALL PE,nn :Pフラグが1のとき指定の番地をコールする。 ;CP nn / CALL P,nn :Sフラグが0のとき指定の番地をコールする。 ;CM nn / CALL M,nn :Sフラグが1のとき指定の番地をコールする。 ;RST p / RST n :(p=0~7) p*8番地をコールする。割り込み用。 ;RET :リターンする。 ;RNZ / RET NZ :Zフラグが0のときリターンする。 ;RZ / RET Z :Zフラグが1のときリターンする。 ;RNC / RET NC :Cフラグが0のときリターンする。 ;RC / RET C :Cフラグが1のときリターンする。 ;RPO / RET PO :Pフラグが0のときリターンする。 ;RPE / RET PE :Pフラグが1のときリターンする。 ;RP / RET P :Sフラグが0のときリターンする。 ;RM / RET M :Sフラグが1のときリターンする。 === スタック操作命令 === ;PUSH rr :16ビットレジスタをプッシュする。SPは指定できない。 ;PUSH PSW / PUSH AF :PSWをプッシュする。 ;POP rr :16ビットレジスタをポップする。SPは指定できない。 ;POP PSW / POP AF :PSWをポップする。 ;XTHL / EX (SP),HL :HLレジスタとスタックトップの内容を交換する。 === フラグ操作命令 === ;STC / SCF :Cフラグを1にする。 ;CMC / CCF :Cフラグを反転する。 === 入出力命令 === ;IN n / IN A,(n) :I/OアドレスからAレジスタに入力する。 ;OUT n / OUT (n),A :Aレジスタの内容をI/Oアドレスに出力する。 === CPU制御命令 === ;[[NOP]] :何もしない。 ;HLT / HALT :CPUを停止し、割り込みを待つ。 ;DI :割り込みを禁止する。 ;EI :割り込みを許可する。 == セカンドソース == [[日本電気|NEC]]製の[[セカンドソース]]品 (μPD8080A) は減算時における10進補正フラグの扱いがオリジナルとは違っており、ここを全く同じにしたもの (μPD8080AF) が追加販売されている。[[TK-80]]には前者が、TK-80Eには後者が採用された。 == ソフトウェア == *OS **[[デジタルリサーチ]]の[[CP/M]] (CP/M-80) が有名 == 関連項目 == *[[Intel 8085|i8085]] *[[Intel 8086|i8086]] *[[IA-32]] *[[Altair 8800]] {{Intel_processors}} [[Category:インテルのマイクロプロセッサ|8080]]
このページで使用されているテンプレート:
テンプレート:Intel processors
(
ソースを閲覧
)
テンプレート:右
(
ソースを閲覧
)
Intel 8080
に戻る。
検索
検索
Intel 8080のソースを表示
話題を追加