4/04/2013

PENGERTIAN DAN CONTOH PROGRAM PADA BAHASA RAKITAN dan C++

| 4/04/2013 | 1 comments


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:

Shikamaru Nara said...

good job gan
solder uap

Post a Comment

 
© Copyright 2012 Decision One, move to DiJava on 16 May 2012 | Template by o-om.com | Cewek Jogja