BAHASA ASSEMBLY
BAHASA RAKITAN
Komputer
terdiri dari System Bus, CPU, dan RAM.
·
System Bus
berfungsi sebagai penghubung dengan komponen komputer.
·
CPU merupakan
jantung komputer, hampir seluruh perhitungan dilakukan didalam CPU.
·
RAM merupakan
tempat dimana program di loading untuk dieksekusi.
CPU
( Centra Processing Unit )
Memiliki 8 general purpose :
1.
AX – the accumulator
register ( dibagi menjadi AH/AL )
2.
BX – the base
address register ( dibagi menjadi BH/BL )
3.
CX – the count register ( dibagi menjadi CH/CL )
4.
DX – the data
register ( dibagi menjadi DH/DL )
5.
SI – source
indek register
6.
DI – destination
index register
7.
BP – base
pointer
8.
SP – stack
pointer
Tujuan
utama dari register adalah penyimpanan angka ( variable ). Ukuran register
diatas ada 8 bit, 4 general purpose register ( Ax, BX, CX, DX ) dan dari dua 8
bit register yang terpisah.
Ex.
AX
= 0011000000111001b, maka ( dibagi )
AH
= 00110000b dan AL = 00111001b
NB
: H adalah High dan L adalah Low.
< Segmen Register >
CS
– menunjuk pada segmen yang berisi program sekarang ( Current Program ).
DS
– menunjuk pada segmen dimana variable didefinisikan.
ES
– register segmen extra, tergantung programnya mendefinisikan penggunanya.
SS
– menunjuk pada segmen yang berisi stack ( Tumpukan ).
Tujuan
segmen register adalah menunjuk blok memori yang dapat diakses segmen register
bekerjasama dengan general purpose untuk mengakses setiap nilai memory.
Contohnya, jika kita akan
mengakses memori pada physical
address
12345h(hexadecimal), kita perlu mengeset DS=1230h dan
SI=0045h. Ini bagus karena dengan cara ini kita dapat mengakses
lebih banyak memory daripada
register tunggal yang terbatas pada nilai 16 bit. CPU membuat kalkulasi dari
dari physical address Dengan mengalikan segment register dengan 10h dan
menambahkan
general purpose register (1230h * 10h + 45h = 12345h).
MEMORY
ACCESS
Untuk
mengakses memori dapat menggunakan 4 register : BX, SI, DI, dan BP.
Register
tersebut dapat dikombinasikan didalam simbol tanda kurung [].
Mode
Pengalamatan :
d8 - merupakan penggantian
nilai yang terdekat untuk 8 bit signed
(contoh: 22, 55h, -1,
etc...)
d16 - merupakan penggantian
nilai terdekat untuk 16 bit signed
(contoh: 300, 5517h, -259,
etc...)
Penggantian dapat menjadi
nilai offset dari variable atau keduanya. Jika ada beberapa nilai, assembler
mengevaluasi semua nilai tersebut dan mengkalkulasi sebagai nilai terdekat
tunggal. Umumnya compiler
memperhatikan antara d8 dan d16 dan
men-generate kode mesin yang
diperlukan.
Komentar
Posting Komentar