2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

アセンブリ入門

Last updated at Posted at 2021-04-11

汎用レジスタ

x86 CPUには8つの汎用レジスタがありデータの格納に用いられる。EAX,EBX,ECX,EDX,ESP,EBP,ESI,EDI。
これらのレジスタは4バイトであり、プログラムは4バイト、2バイト、1バイトの値としてレジスタにアクセス可能。
image.png
下位2バイトにはAX,BX,CX,DX,SP,BP,SI,DIとしてアクセス可能。
下位1バイトにはAL,BL,CL,DL,2バイト目にはAH,BH,CH,DHでアクセス可能。

visual stusioのレジスタ情報
image.png

命令レジスタ

EIPは命令ポインタが格納されており、メモリ内の次の命令のアドレスを指す。

セグメントレジスタ

CS,SS,DS,ESがある。
CS:コードセグメント。次に実行するコード(機械語)へのポインタ。
SS:スタックセグメント。スタックへのポインタ。
DS:データセグメント。データへのポインタ。レジスタとメモリのデータ転送時に参照される。
ES:エクストラセグメント。追加のデータへのポインタ。
FS,GS:さらなるデータへのポインタ。

データの移動

基本文法
 mov dst, src
レジスタへの格納
 mov eax, 1 //eaxに1の格納
レジスタ間の移動
 mov ebx, eax //ebx=eax
メモリからレジスタ
 mov eax, [0x123456] //0x123456のアドレスの値をeaxに格納
 格納先のレジスタの大きさに応じて移動させる値のサイズも変わる。

算術演算

add 加算
sub 減算
mul 乗算
div 除算

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?