Assembly
汎用レジスタ H+L
- AX アキュムレータ (Accumlator)
- BX ベースレジスタ (Base)
- CX カウントレジスタ (Count)
- DX データレジスタ (Data)
インデックスレジスタ
- SI ソースインデックス (Source Index)
- DI ディスティネーションインデックス (Destination Index)
特殊レジスタ
- BP ベースポインタ (Base Pointer)
- SP スタックポインタ (Stuck Pointer)
- IP インストラクションポインタ (Instruction Pointer)
セグメントレジスタ
- CS コードセグメント (Code Segment)
- DS データセグメント (Data Segment)
- ES エクストラセグメント (Extra Segment)
- SS スタックセグメント (Stuck Segment)
フラグレジスタ
セグメントアドレス
オフセットアドレス
アドレスパスの本数は 20本。 セグメントベースから 64kb をセグメントと呼ぶ。
A [Address] アセンブリの記述
Q 終了
G [= start address][end address] プログラム実行
T [= start address][end address] Execute program, print register
U [start address][end address] reverse addemble
D [start address][end address] memory dump
E address [code list] Insert code list, hexadecimals, into and after indicated address
Little endian One register is composed of 2 little endian
AX = ABCD
AH = AB
AL = CD
8086 processor Segment address + offset address 15F2 : 0100 Segment Base 15F20
Code Segment Address of running program
Data Segment Referenced in transporting data between register and memory
Extra segment used like data segment
Stack segment used in stack operation
In MS-DOS, OS controlles segment address
OffsetAddress [0200] : Address of 200 offset
When you store value into memory, you should indicate data size. Because memory can adapt to 1 byte to 1 word, while register size is defined by receiving register.
PTR operator
usage
BYTE PTR for 1 byte
WORD PTR for 2 byte
DWORD
example
MOV BYTE PTR ]0200], 41
MOV WORD PTR ]0300], 43 42
for offset address use BX, BP, SI, DI
example
```
MOV BX, 0200
MOV WORD PTR [BX], 4443
MOV WORD PTR [BX+2], 4241
```
Arithmatic
example
MOV AX, 10 # AX = 10
# 10 is hexadecimal value
MOV DX, 20 # DX = 20
# 20 is hexadecimal value
ADD AX, DX # AX = AX + DX
SUB DX, 5 # DX = DX - 5
Increment, Decrement
MOV AX, 000F
MOV WORD PTR [0200], 43, 42
# 43 is saved into [0201]
# 42 is saved into [0200]
INC AX
INC BYTE PTR ]0201]
DEC BYTE PTR [0200]
```
AX = 000F
[0200] = ,
AX += 1 -> AX = 0010
[0201] += 1 -> [0201] = 44
[0200] -= 1 -> [0201] = 41
```