• 締切済み

オペコードとニーモニックについて。

以下の質問ですが、 xs200さんにした質問に詳しく教えていただけないでしょうか?すみません。 https://oshiete.goo.ne.jp/qa/12404524.html 以上のURLです。

みんなの回答

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.4

>の説明が載っているところを示して頂けないでしょうか?どこに書かれているのでしょうか?教えていただけないでしょうか? xs200さんは、書いてある資料まで書いてくれてるじゃないですか。

  • _kappe_
  • ベストアンサー率68% (1581/2304)
回答No.3

Intel 8080の命令セットについて日本語で書かれているウェブページの一例を挙げます。 http://www.st.rim.or.jp/%7Enkomatsu/intel8bit/i8080.html このウェブページを見ながら「XRA A」を機械語に変換してみます。 ページ中ほどの「命令セット」の一覧の中に「10 101 sss XRA rm 4/7 4/7 exclusive or with A」という行があります。ここで左側の「10 101 sss」が「XRA rm」という命令の機械語を2進数表記で示していますが、「sss」の部分はXRA命令のオペランドがどのレジスタなのかによって変化します。 rmがAレジスタの場合、sss部分に入る値は111です。このことはレジスタ名と命令コード上でレジスタを表す数値との対応を表す表を見れば分かります。 つまり、「XRA A」という命令の機械語は2進数表記で「10 101 111」であることが分かり、これを16進数表記に直すと「AF」となるわけです。 次の「MOV C,A」も同様です。「MOV rm, r」命令の機械語は2進数表記は「01 ddd sss」で、dddとsssの部分にそれぞれCレジスタとAレジスタを表す2進数を入れます。Cレジスタが001、Aレジスタが111なので、「MOV C,A」の2進数表記は「01 001 111」となり、これを16進数表記に直すと「4F」となります。 全命令を説明する気力はないのでここまでにします。 最後に、上記の内容はIntel 8080以外のCPUには通用しないことに注意してください。

  • _kappe_
  • ベストアンサー率68% (1581/2304)
回答No.2

>(前略)機械語にすればC5。 >の説明が載っているところを示して頂けないでしょうか?どこに書かれているのでしょうか?教えていただけないでしょうか?すみません。 >について教えていただけないでしょうか? 技術的内容を質問する以前の話として、質問者さんは日本語の文章の書き方がめちゃくちゃです。 「すみません。について教えていただけないでしょうか?」と書かれているのを見たら、「すみません。」と「について」の間に何か書くつもりだったのに忘れたまま質問を投稿したんだろうかと回答者は思ってしまいます。 せめて、他の人が書いた文章からの引用部分と、質問者さんが自分で書いた部分を、回答者が見たときに区別できるような書き方をしてください。このことは以前にも指摘しました。

  • q4330
  • ベストアンサー率27% (768/2786)
回答No.1

CPUが理解できるマシン語がオペコード それを人間が理解できる様に表現したのがニーモニック 0101000100000010・・・・これがオペコード Add R0 R1・・・・これがニーモニック どちらもレジスタ0にレジスタ1を足す命令です。

zasx1097
質問者

お礼

ADDがニーモニックと書かれている本もありますが、どうなのでしょうか?教えていただけないでしょうか?すみません。

zasx1097
質問者

補足

機械語でAF4F5E237EFEFFCA1100571A8123C3010079C9と記載されてもなんだかわかりませんよね。人が見てわかるように簡単な英語の命令にしたのがニーモニックです。上の機械語は以下をアセンブルしたものです。これなら何をしているのか見てわかります。 XRA A LOOP: MOV C,A MOV E,M INX H MOV A,M CPI 0FFH JZ BACK MOV D,A LDAX D ADD C INX H JMP LOOP BACK: MOV A,C RET ニーモニックでXRA AはAの排他的論理和。XRAがオペコード、Aがオペランド。機械語でAF。 次のMOV C, A Aレジスターの内容をCレジスターに移動する命令。 命令に当たるMOV、これがオペコード。目的とするC, Aがオペランド。機械語にすれば4F。上のAFの次にありますよね。 同様にADD CならADDがオペコード、Cがオペランド。機械語では81。上にあるでしょ。最後のRETがC9。 NOPやHLTのようにオペランドがない命令もあります。 なんだかPUSHにこだわっていますがPUSH BであればPUSHがオペコード、Bがオペランドです。機械語にすればC5。 以上はインテル80系の話。CPUが変わればニーモニックも機械語も変わります。 と、 movが機械語でb8が載っているところはどこでしょうか?教えていただけないでしょうか?すみません。と、 ニーモニックでXRA AはAの排他的論理和。XRAがオペコード、Aがオペランド。機械語でAF。 次のMOV C, A Aレジスターの内容をCレジスターに移動する命令。 命令に当たるMOV、これがオペコード。目的とするC, Aがオペランド。機械語にすれば4F。上のAFの次にありますよね。 同様にADD CならADDがオペコード、Cがオペランド。機械語では81。上にあるでしょ。最後のRETがC9。 NOPやHLTのようにオペランドがない命令もあります。 なんだかPUSHにこだわっていますがPUSH BであればPUSHがオペコード、Bがオペランドです。機械語にすればC5。 の説明が載っているところを示して頂けないでしょうか?どこに書かれているのでしょうか?教えていただけないでしょうか?すみません。 について教えていただけないでしょうか?

関連するQ&A