LoginSignup
0
0

More than 1 year has passed since last update.

アセンブラ言語について理解しよう Part1

Posted at

以下「COMETII」という仮想のコンピュータを取り上げて説明

アセンブラ言語とは?

CPUに命令を送るための、低水準言語。機械言語に近い言語。

  • CPUの種類に応じて記述の仕方や文法が異なる。
  • 速度が求められる場面で威力を発揮する。
  • 機械言語(CPUは2進数の機械言語しか理解できない)の命令に1対1で対応させた文字列。
  • コンピュータのハードウエアが動作する単位でプログラムを記述する。
  • アセンブリ"assembly"は、組み立てという意味。

いつアセンブラ言語は必要?

  • 現在ではアセンブラはめったに使われず、ほとんどのプログラマーがより効率の良い高水準言語を使っている。
  • いろいろなサイトを見ても、「アセンブラは○○の開発に便利だよ」的な紹介のされ方はしていなかった。

ではアセンブラを勉強したほうがいい理由は?

  • アセンブラさんは、機械言語にとても近い存在。
  • だから勉強するとCPUやメモリなどプログラミング言語がハードウェアをどう動かしているのかよく理解できるようになり、コンピュータを見る視点がぐっと深くなる!

COMETIIの構成

COMETIIのハードウエアを構成する主要な装置は,3つ。

  • CPU  コンピュータの頭脳
  • メモリ プログラム(命令とデータ)を記憶する
  • I/O  周辺装置とコンピュータ本体を接続する

演算のプロセスは,

1. メモリ内のデータを一旦CPUに読み出し,
2. CPU内で演算を行い,
3. その結果をメモリに書き込む。

COMETII qiita.png

文法

文法は1つだけ!

命令 + 目的語

例えば、

LD GR1,Aの場合

LD => 命令 ロード(装填)しなさい!
GR1,A => GR1レジスタにA番地のデータを

レジスタとは

CPU内のデータを格納する場所のこと。

COMETIIのレジスタには,

1. プログラムレジスタ(PR)(プログラムカウンタとも呼ぶ)
2. スタックポインタ(SP)
3. フラグレジスタ(FR)
4. 汎用レジスタ(GR0~GR7) <= 8つある
  • レジスタのサイズはFRのみが3ビットで,他はすべて16ビットである。

アセンブル Qiita (1).png

アセンブラのプログラムの目的語に指定できるのは,SPとGR0~GR7だけです。

命令の種類( CPUにできること )

表1●データの入出力を行う命令

ニーモニック 意味 機能
LD LoaD メモリーからCPUへデータを読み込む
ST STore CPUからメモリーにデータを書き出す
LAD Load ADdress CPUのレジスタに値を設定する
PUSH PUSH スタックにデータを書き出す
POP POP スタックからデータを読み込む
SVC SuperVisor Call I/Oとの入出力を行う

表2●データの演算を行う命令

ニーモニック 意味 機能
ADDA ADD Arithmetic 算術加算を行う
ADDL ADD Logical 論理加算を行う
SUBA SUBtract Arithmetic 算術減算を行う
SUBL SUBtract Logical 論理減算を行う
AND AND 論理積(AND演算)を行う
OR OR 論理和(OR演算)を行う
XOR eXclusive OR 排他的論理和(XOR演算)を行う
CPA ComPare Arithmetic 算術比較を行う
CPL ComPare Logical 論理比較を行う
SLA Shift Left Arithmetic 算術左シフトを行う
SRA Shift Right Arithmetic 算術右シフトを行う
SLL Shift Left Logical 論理左シフトを行う
SRL Shift Right Logical 論理右シフトを行う
NOP NO Operation 何もしない

表3●プログラムの流れを制御する命令

ニーモニック 意味 機能
JPL Jump on PLus 演算結果がプラスの場合に分岐する
JMI Jump on MInus 演算結果がマイナスの場合に分岐する
JNZ Jump on Non Zero 演算結果がゼロでない場合に分岐する
JZE Jump on ZEro 演算結果がゼロの場合に分岐する
JOV Jump on OVerflow 演算結果が桁あふれの場合に分岐する
JUMP JUMP 無条件で分岐する
CALL CALL 主プログラムから副プログラムを呼び出す
RET RETurn 副プログラムから主プログラムに戻る

参考サイト
アセンブラを学ぶ意義
矢沢 久雄 グレープシティ アドバイザリースタッフ

情報処理入門 アセンブラ言語編 (全4レッスン)
アセンブリ言語の入門者が勉強すべきこと7つと参考書6選を紹介!
第1回「レジスタ」を知るとCPUの細かな処理が見えてくる

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0