スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

アセンブリ命令

今日はアセンブリの整理をします。
これまで勉強したことのまとめという位置づけなので、全てを網羅しているわけではありません。


レジスタの種類
汎用レジスタ
汎用レジスタは全部で6種類あり、基本的には自由に値を格納して問題ないようです。

しかし、一般的には以下のように使用するようです。

レジスタ名使用目的
AX
(アキュムレータ)
データ格納
BX
(ベースレジスタ)
メモリアドレス格納
CX
(カウントレジスタ)
カウンタにする
DX
(データレジスタ)
データ格納
SI
(ソースインデックス)
メモリアドレス格納
DI
(デスティネーションインデックス)
メモリアドレス格納

汎用レジスタのサイズは16bitですが、AX, BX, CX, DXは8bitずつ2つのレジスタとしても使用できます。
レジスタを分けて使う場合、AXならば上位8bitをah、下位8bitをalして指定します。


フラグレジスタ
フラグレジスタは全部で8種類です。(しかし、いま学んだのは3つだけなので全部書きません)

レジスタ名意味
OF
(オーバーフラグ)
符号付演算の桁上がりが起こると1になる
例)7F+1を行って80になるとき
ZF
(ゼロフラグ)
演算結果が0のとき、1になる
例)1-1を行って0になるとき
CF
(キャリーフラグ)
演算結果の桁上がりが起こると1になる
例)FF+1を行って00になるとき

符号付演算は、00~7Fを正の数の範囲、80~FFを負の数の範囲としています。
OFは、7Fと80の境界を越えたときに1になり、
CYは、00とFFの境界を越えたときに1になるともいえます。


命令の種類
代入
mov ax, 1    axに1を代入する。

演算
add ax, 1    axに1を足す
sub ax, 1    axから1を引く

inc ax    axをインクリメントする(1を足す)
dec ax    axをデクリメントする(1を引く)

比較
cmp ax, bx    axとbxを比較する
  ax==bxならばZFを1にし、CFを0にする
  ax>bxならばZFを0にし、CFを0にする
  ax<bxならばZFを0にし、CFを1にする

ジャンプ
jmp 0100    強制的に0100の処理に飛ぶ
je 0100    ZFが1ならば0100の処理に飛ぶ
jne 0100    ZFが0ならば0100の処理に飛ぶ
jbe 0100    ZFかCFが1ならば0100の処理に飛ぶ

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

管理者にだけ表示を許可する

プロフィール

森嶋晃介

Author:森嶋晃介
社会人2年目。
独学する勉強のために、いろいろ手を出して、それについて書いていく予定です。
今年こそ、たくさん書くぞ

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。