BAHASA
RAKITAN DAN C++
BahasarakitanataulebihumumdikenalsebagaiAssemblyadalahbahasapemrogramantingkatrendah
yang digunakandalampemrogramankomputer, mikroprosesor, pengendalimikro,
danperangkatlainnya yang dapat deprogram. C++adalahsalahsatubahasapemrogramankomputer.Dibuatpadatahun
1980-an oleh Bell Labs (BjarneStroustrup)
sebagaipengembangandariBahasapemrograman C. Salah satuperbedaan yang paling
mendasardenganbahasa C adalahdukunganterhadapkonseppemrogramanberorientasiobjek
(Object Oriented Programming).
A.
PENDAHULUAN
BahasarakitanatauAssemblyadalahbahasapemrogramantingkatrendah
yang digunakandalampemrogramankomputer, mikroprosesor,
pengendalimikro,
danperangkatlainnya yang dapatdiprogram.Bahasarakitanmengimplementasikanrepresentasiataskodemesindalambentuksimbol-simbol
yang secararelatiflebihdapatdipahamiolehmanusia.Bahasarakitanbiasanyamendukungsecaraspesifikuntuksuatuataupunbeberapajenisarsitekturkomputertertentu.
Dengandemikian,
portabilitasbahasarakitantidakdapatmenandingibahasa-bahasalainnya yang
merupakanbahasapemrogramantingkattinggi.Namundemikian,
bahasarakitanmemungkinkan programmer
memanfaatkansecarapenuhkemampuansuatuperangkatkerastertentu yang
biasanyatidakdapatataupunterbatasbiladibuatdenganmenggunakanbahasapemrogramantingkattinggi.
Padabahasarakitan, programmer umumnyamenggunakansebuahprogram utilitas yang disebutsebagaiperakit
(bahasaInggris:
assembler) yang
digunakanuntukmenerjemahkankodedalambahasarakitantersebutkedalamkodemesinuntukperangkatkerastertentu.
Sebuahperintahdalambahasarakitanbiasanyaakanditerjemahkanmenjadisebuahinstruksimnemonicdalamkodemesin,
berbedahalnyadengankompilerpadabahasapemrogramantingkattinggi yang
menerjemahkansebuahperintahmenjadisejumlahinstruksidalamkodemesin.
Beberapaperangkatlunakbahasarakitanterkenalbiasanyamenyediakantambahanfituruntukmemgasilitasi
proses pengembangan program, mengontrol proses perakitan, danalatbantudebugging.
B.
LANDASAN
TEORI
BahasaRakitantermasukkedalambahasatingkatrendahdanmerupakanbahasadasarkomputer.Bahasainimemerlukanlogika
yang cukuprumit di sampinginstruksinya yang
jauhberbedadenganbahasapemrogramanlainnya.Program yang
dihasilkanmemilikikecepatan yang paling baik.Kelebihandaribahasarakitanadalah:
1. Memilikifasilitasfungsidanmakro
(cirikhasbahasapemrograman yang menyebabkanpemrogramanmenjadilebihmudah).
2. Program
dapatdibuatsecara modular
(dipecahdalammodul-modulkecildandapatdiintegrasikankembali).
3. Ukuran
program lebihkecil, sehinggalebihmenghemat media penyimpan. Lebihdekatke
hardware sehinggaseluruhkemampuankomputerdapatdimanfaatkansecaramaksimal.
Bahasarakitanmerupakanbahasapemrograman
yang posisinya di
antarabahasapemrogramanlainnyaadalahtermasukdalambahasapemrogramantingkatrendahkarenabahasainiberhubunganlangsungdenganbahasamesin.Sedangkanbahasapemrograman
Delphi berada di atasbahasapemrogramanrakitan, yang seringdisebut OOP (Object
Orinted Programming).Bahasamesinadalahkumpulankodebiner yang
merupakaninstruksi yang biasa dijalankanolehkomputer.Sedangkanbahasarakitanmemakaikodemnemonic
untukmenggantikankodebiner, agar
lebihmudahdiingatsehinggamemudahkanpenulisan program.Program yang
ditulisdenganbahasarakitanterdiridari label; kodemnemonic danlainnya,
padaumumnyadinamakansebagai program sumber (source code) yang
belumbisaditerimaolehprosesoruntukdijalankansebagai program
tapiharusditerjemahkanterlebihdahulumenjadibahasamesindalambentukkodebiner.Jika
yang ditulishanyabahasarakitansajamakabiasanya program dibuatdengan
program editor biasa, misalnya note pad pada Windows atausidekick pada
DOS, selanjutnya program sumberditerjemahkankebahasamesindenganmenggunakan
program rakitan.Hasilkerja program rakitanadalah “program objek”
danjuga “rakitan listing”.Tapikarena di sinibahasarakitanditulisbersamadenganbahasa
Delphi maka program dibuat di dalam editor milik Delphi.Program
objekberisikankode-kodebahasamesin, kode – kodebahasamesininilah yang
diumpankankememori-memoriprosesor.Perludiperhatikanbahwasetiapprosesormempunyaikonstruksi
yang berbeda-beda, instruksiuntukmengendalikanmasing –
masingprosesorjugaberbeda-beda.Dengandemikianbahasarakitanuntukmasing-masingprosesorjugaberbeda,
yang samahanyalahpoladasardancarapenulisan program rakitansaja.
C.
PROGRAM APLIKASI BAHASA RAKITAN C++ (EMULATOR)
Memprogram
emulator adalahhal yang amatsulit,dimulaidarimengumpulkaninformasitentangsistem
yang hendak di-emulate danmengakalikomputer agar mampumeniru hardware
daninstruksi-instruksi yang dijalankanolehsistemtersebut. Salah
satucontohnyaadalahmenulis program untukmengemulasicarakerja processor
kunosepertiApple II
atauIntel
8086. Emulator processor 8086 digunakanuntukmenirubagaimanakerjariildarisuatuprosessor,
dimana software inimemudahkanpengaturanlangkah-langkahdarisetiap proses
tersebutbaikdarisegiaritmatikmaupuncontrol
unit.
Bahasarakitan (assembly)
termasukdalambahasatingkatrendahdanmerupakanbahasadasarkomputer, iniberhubunganlangsungdenganbahasamesindimanabahasamesinadalahkumpulankodebiner
yang merupakaninstruksi yang bisadijalankanolehkomputer.Bahasarakitandapatdigunakanuntukmembuat
program yang ditanamdalamsuatusistemperangkatkeras, baik program
untukmengontrol, menjalankan, ataupun program mematikansistemperangkattersebutdenganmenggunakankodemenemonicsebagaipenggantikodebiner.
1.
PengenalanBahasaRakitan
·
ArsitekturDasar
Bahasa
assembly adalahbahasa level rendahdaribahasapemrograman,
dibawahinimerupakanbeberapakodemenemonicgeneral purpose yang digunakanpadaEmmu
8086.
AX
- the accumulator register (dibagimenjadi AH / AL).
BX
- the base address register (dibagimenjadi BH / BL).
CX
- the count register (dibagimenjadi CH / CL).
DX
- the data register (dibagimenjadi DH / DL).
SI
- source index register.
DI
- destination index register.
BP
- base pointer.
SP
- stack pointer.
Ø Tujuanutamadari
register adalahuntukmenyimpanangka (variable).
Sedangkanuntuk
Segment Register-nyamenngunakankodedibawahini :
ü CS –
menunjukpadasegmen yang berisi program
sekarang
(current program).
ü DS –
biasanyamenunjukpadasegmendimana variable
didefinisikan.
ü ES –
register segmen extra, tergantung programmer
mendefinisikanpenggunaanya.
ü SS –
menunjukpadasegmen yang berisi stack.
·
Model
SedearhanaKomputer
Gambar.
2.1
System Bus
(warnakuning) merupakanjalurpenghubungdenganberbagaimacamkomponenkomputer
CPUmerupakanjantung
computer, hampir seluruhperhitungandilakukandidalamnya.
RAMmerupakantempatdimana
program di loading untuk dieksekusi.
·
PenerapanArsitekturBahasaRakitanKedalamKomponen
CPU
Gambar.
2.2
general purpose
register (AX, BX, CX, DX) dibuatdaridua 8 bit register yang terpisah , contohjika AX= 011000000111001b,
maka AH=00110000bdan AL=00111001b. Demikianjuga, jikakitamemodifikasisetiap
8 bit register, maka 16 bit register akan di update, begitujugasebaliknya.Dimana"H"
berartibagian high dan "L" berartibagian low.Karena register
beradadalam CPU, merekalebihcepatdibandingkandengan memory.
D.
Contoh Program mengubah bilangan Desimal ke Biner dengan Emulator 8086
·
Source
code program:
name "desimal_to_biner"
org 100h
jmp start
msg1db 0Dh,0Ah, " Masukanangkadari -32768 sampaidengan 65535 ,
atau 0 untukberhenti: $"
msg2db 0Dh,0Ah, " bilanganbinernyaadalah: $"
bufferdb 7,?, 5 dup (0), 0, 0
binarydw ?
start:
mov dx, offset msg1
mov ah, 9
int 21h
mov dx, offset buffer
mov ah, 0ah
int 21h
movbx, 0
movbl, buffer[1]
mov buffer[bx+2], 0
leasi, buffer + 2
calltobin
mov binary, cx
jcxz stop
mov dx, offset msg2
mov ah, 9
int 21h
movbx, binary
mov cx, 16
print: mov ah, 2
mov dl, '0'
testbx, 1000000000000000b
jz zero
mov dl, '1'
zero: int 21h
shlbx, 1
loop print
mov dl, 'b'
int 21h
jmp start
stop:
ret
tobinproc near
push dx
push ax
pushsi
jmp process
make_minusdb ?
tendw 10
process:
mov cx,
movcs:make_minus, 0
next_digit:
mov al, [si]
incsi
cmp al, 0
jnenot_end
jmpstop_input
not_end:
cmp al, '-'
jneok_digit
movcs:make_minus, 1
jmpnext_digit
ok_digit:
push ax
mov ax, cx
mulcs:ten
mov cx, ax
pop ax
sub al, 30h
mov ah, 0
mov dx, cx
add cx, ax
jmpnext_digit
stop_input:
cmpcs:make_minus, 0
jenot_minus
neg cx
not_minus:
popsi
pop ax
pop dx
ret
tobinendp
E.
HASIL PROGRAM
F.
KESIMPULAN
Bahasarakitandibandingkandenganbahasamesin, bahasarakitanmerupakanrepresentasiatasbahasamesin
yang dirancang agar
lebihmudahdipahamiolehmanusia.Denganmenggunakanbahasarakitan, seorang
programmer dapatlebihmudahmengingatinstruksi-instruksidenganmenggunakansimbol
yang lebihdapatdimengertidibandingkanbilamenggunakansimbol mnemonic kodemesinsecaralangsung.Demikianhalnya
pula denganmekanismelompatan yang umumterdapatdalambahasamesin yang
biasanyamenggunakanalamatmemori, programmer dapatlebihmudahmenggunakanfasilitas
labeling yang
terdapatbahasarakitandibandingkanmenggunakanalamatmemoritertentudalamkode mnemonic.
Programer dapat membuat suatu perintah mesin dengan menggunakan program
bahasa rakitan. Dimana disitu dapat diisikan macam-macam perintah sesuai dengan
bahasa mesin tersebut. Bahasa rakitan lebih mudah digunakan, karena menggunakan
kode-kode yang dapat diterjemahkan oleh mesin. Sehingga setiap orang bisa
menggunakannya asalkan tau kode-kode bahasa mesin tersebut.
1 comments:
good job gan
solder uap
Post a Comment