「高等学校工業 ハードウェア技術」の版間の差分

削除された内容 追加された内容
編集の要約なし
機械語
51 行
つまり、レジスタをつくるには、フリップフロップを必要な個数、並べれば良い。
 
市販のCPUのビット数について「64ビット」や「32ビット」、「8ビット」などと紹介されるのは、なんのビット数かというと、一般にCPU内のレジスタのビット数である。
 
== 命令レジスタと機械語 ==
なお、パソコンで「次にどんな命令を実行するか?」(「たとえば次に○○の保存を実行する。その次に、△△のコピー作業を実行する。その次に、××を移動する。」という命令など)という作業も、記憶が必要である。
 
67 ⟶ 69行目:
 
つまり、我々は、レジスタの作り方の原理を理解した事になる。
 
また、CPUが命令を処理しやすいように、命令を「1」や「2」といった数字に置き換えたものが'''機械語'''(machine langurage)である。
 
なお、先ほどは「データの移動命令を「1」として」などと簡単に言ったが、実際には、「どこにあるデータを、どこに移動するか?」という情報が必要である。そのため、「どこのデータを扱うか?」という処理が必要である。
77 ⟶ 81行目:
 
つまり、命令レジスタでは、命令部とアドレスの2つを記憶する必要がある。
 
 
なお、「このパソコンのハードディスクにあるデータを扱え」とか「このパソコンのメモリ基板にあるデータを扱え」というデータも、アドレスの情報である。
87 ⟶ 90行目:
 
で、もし読者のあなたが、レジスタさえ理解すれば、命令レジスタもいろいろと分かる事になるから、CPUの命令処理の仕組みも、なんとなく分かるだろう。
 
== アセンブリ言語とは ==
:かりに、データの移動命令を「1」として、
:かりに、データの保存命令を「2」として、
:かりに、データのコピー命令を「3」とすれば、
 
などは、人間には分かりづらい。
 
たとえば、「10101011000110」とかビットの数字が並んでいても、人間には意味が分からない。
 
そこで、人間が命令を理解しやすいように、
 
:かりに、データの移動命令を「MOVE」として、
:かりに、データの保存命令を「SAVE」として、
:かりに、データのコピー命令を「COPY」とすれば、
 
のようにして、
「たとえば次に○○の保存を実行する。その次に、△△のコピー作業を実行する。その次に、××を移動する。」という命令を、
「まず命令「SAVE」を実行しろ。その次に、命令「COPY」を実行しろ。その次に命令「MOVE」を実行しろ。」と書き換えれば、人間には理解しやすいし、
 
コンピュータに実行される場合にも命令「MOVE」を「1」に置き換え、同様に命令「SAVE」を「2」に置き換え、命令「COPY」を「3」に置き換えればいい。
 
そして、この命令をハードディスクに保存するには、例えばハードディスクに「SAVE,COPY,MOVE」という文字列(コード)を保存しておけばいい。そうすれば、人間がコードを読んだとき、どんな命令を行わせるコードなのかが、理解しやすい。
 
このように、人間が命令を理解しやすいように機械語を書き換えたもののことを「アセンブリ言語」という。
 
別途、アセンブリ言語の命令「MOVE」を機械語「1」に置き換え、同様に(アセンブリ言語の)命令「SAVE」を(機械語)「2」に置き換え、同様に命令「COPY」を命令「3」に置き換える、という回路を用意しておけば、その回路を使ってアセンブリ言語を機械語に置き換えできる。
 
同様に、別途、機械語の命令「1」をアセンブリ言語の命令「MOVE」に置き換え、同様に(機械語の)命令「2」を(アセンブリ言語の)命令「SAVE」に置き換え、同様に命令「3」を命令「COPY」に置き換える、という回路を用意しておけば、その回路を使って木映語をアセンブリ言語に置き換えできる。
 
 
 
実際には、アセンブリ言語は、人間が大量のコードを読むには向いていない等の理由があるので、なので、アセンブリ言語をさらに人間が読みやすいように置き換えた'''プログラミング言語'''というものが用いられる。
 
中学で「BASIC」や「C言語」などというプログラミング言語の存在を習ったと思う。
 
BASICやC言語も、そのプログラムを実行する場合、最終的にはコンピューター内部では、そのプログラミング言語のコードを、機械語に置き換えて、そしてCPUなどが機械語の命令を処理している。
 
 
== マルチバイブレータ ==