BAHASA BAHASA RAKITAN RAKITAN Universitas UniversitasGunadarma Gunadarma
Kuliah Kuliah II :: Pengenalan Pengenalan
Bahasa Rakitan
I. Pengenalan (cont’d) I.1. Bahasa – Komputer “bicara/berkomunikasi” dgn suatu bahasa – Bahasa-2 pemrograman menyediakan tools u/ mengekspresikan pemrosesan data secara simbolik – Setiap bahasa memiliki sintaks dan grammar yang dirumuskan dgn baik
I.2. Bahasa-2 Pemrograman •
Terdapat banyak bahasa pemrograman Æ tergolong menjadi 2: ++, Pascal, Basic) – Bahasa Tingkat Tinggi: (C, C++ •• Machine-independent Machine-independent dan dan instruksinya instruksinya lebih lebih ekspresif ekspresif (spt (spt bhs bhs manusia) manusia)
– Bahasa Tingkat-rendah: (bahasa rakitan) •• Machine-specific; Machine-specific; dan dan instruksinya instruksinya lebih lebih halus-kecil halus-kecil (finer-grained) (finer-grained) yang yang terkait terkait erat erat dgn dgn bahasa bahasa mesin mesin dari dari prosessor prosessor target. target. Bahasa Rakitan
I. Pengenalan (cont’d) I.3. Bahasa-2 Rakitan – – –
Bahasa-2 rakitan Æ representasi teks dari bahasa mesin Satu statement merepresentasikan satu instruksi mesin Lapisan abstraksi antara program-2 tingkat tinggi dan kode mesin
I.4. Bahasa Mesin – – – –
Merupakan bahasa ibu/alamiah dari komputer Kata-2 (WORDS) Æ instruksi-2 Vocabulary Æ set instruksi Representasi bit dari operasi mesin dieksekusi oleh hardware
Bahasa Rakitan
I. Pengenalan (cont’d) •• Hirarki Hirarki bahasa-2 bahasa-2 diatas diatas sbb: sbb:
Bahasa Rakitan
I. Pengenalan (cont’d) Catatan: ••
Bahasa Bahasa rakitan rakitan membuka membuka rahasia rahasia HW HW dan dan SW SW komputer komputer ––
Mempelajari/menganalisa Mempelajari/menganalisa :: •• ••
••
Tidak Tidak terdapat terdapat bahasa bahasa rakitan rakitan tunggal. tunggal. ––
Setiap Setiap komputer komputer atau atau family family komputer komputer menggunakan menggunakan set set instruksi instruksi mesin mesin yang yang berbeda berbeda dan dan bahasa bahasa rakitan rakitan yang yang berbeda berbeda ••
••
tentang tentang cara cara HW HW komputer komputer dan dan Sistem Sistem operasi operasi bekerja bekerja sama; sama; bagaimana bagaimana program program aplikasi aplikasi berkomunikasi berkomunikasi dgn dgn sistem sistem operasi operasi
Bahasa Bahasa rakitan rakitan IBM-PC IBM-PC mengandung mengandung hanya hanya set set instruksi instruksi intel intel 8086/8088, 8086/8088, dgn dgn enhancement u/ 80186/286/386 (instruksi set 8088 dapat digunakan tanpa enhancement u/ 80186/286/386 (instruksi set 8088 dapat digunakan tanpa modifikasi modifikasi yang signifikan) yang signifikan)
Assembler: Assembler: suatu suatu program program yang yang mengkonversi mengkonversi program program source-code source-code ke ke bahasa bahasa mesin: mesin: –– ––
IBM-PC IBM-PC Æ Æ Microsoft Microsoft Macro Macro Assembler Assembler (MASM), (MASM), Borland’s Borland’s Turbo Turbo Assembler Assembler Focus Focus Æ Æ MASM MASM (mengenal (mengenal lebih lebih dari dari 50 50 directives) directives) Jadi Jadi bahasa bahasa rakitan rakitan IBM-PC IBM-PC merujuk merujuk set set instruksi instruksi 8086/8088 8086/8088 dan dan set set komplit komplit dari dari directives directives MASM MASM
Bahasa Rakitan
I. Pengenalan (cont’d) Mengetahui Bahasa Rakitan perlukah? • Dipelajari dgn berbagai alasan: – Mengetahui lebih dalam tentang arsitektur komputer dan sistem operasi – Mengetahui lebih lanjut tentang komputer dan bagaimana bahasa komputer membangkitkan kode mesin Jelas: karena bhs rakitan mempunyai hubungan yang dekat dgn bhs mesin – Mempelajari utilitasnya. •• Tipe Tipe pemrogramman pemrogramman tertentu tertentu sulit sulit atau atau tidak tidak mungkin mungkin dilakukan dilakukan dgn dgn bhs bhs tingkat tingkat tinggi. tinggi. Contoh: Contoh: –– –– –– ––
Komunikasi Komunikasi langsung langsung dgn dgn SO SO komputer komputer Program Program color color high-speed high-speed graphics graphics dgn dgn memori memori rendah rendah Program Program interfacing interfacing Program Program telekomunikasi telekomunikasi
Bahasa Rakitan
I. Pengenalan (cont’d) – Sebagai Solusi akibat batasan-2 pada bhs tingkat tinggi. •• Contoh: Contoh: –– Bhs Bhs tingkat tingkat tinggi: tinggi: tidak tidak diizinkan diizinkan pengerjaan pengerjaan (assigning) (assigning) sebuah sebuah nilai nilai karakter karakter ke ke variabel variabel integer. integer. (buat (buat programmer programmer yang yang expert expert no no problem, problem, namun namun programnya programnya tidak tidak kompetibel) kompetibel)
•• Bhs Bhs rakitan rakitan batasan batasan atau atau aturannya aturannya sangat sangat sedikit sedikit
– Sebagai alat belajar (learning tool) Æ terutama menyakut kerja OS
Aplikasi bhs. Rakitan • Program subroutine: aplikasi spesifik (short program) –– Program Program subroutine subroutine (dpt (dpt dipanggil dipanggil oleh oleh bhs bhs tingkat tingkat tinggi) tinggi) •• Kombinasi Kombinasi ini ini Æ Æ diperoleh diperoleh kekuatan kekuatan bhs bhs tingkat tingkat tinggi tinggi
–– Contoh: Contoh: Program Program COBOL; COBOL; andikan andikan compilernya compilernya tidak tidak mendukung mendukung akan akan kebutuhan kebutuhan mis: mis: u/pengecekan u/pengecekan harddisk, harddisk, pembuatan pembuatan subdirektori, subdirektori, proteski proteski file, file, dll. dll. •• Tugas Tugas ini ini dapat dapat diatasi diatasi dgn dgn membuat membuat subroutine subroutine bhs bhs rakitan rakitan Bahasa Rakitan
I. Pengenalan (cont’d) I.5. Instruksi-2 bahasa rakitan – Tipe instruksi dasar memiliki 3 komponen (4 komponen dalam mesin MIPS): –– Nama Nama operator operator –– Tempat Tempat menyimpan menyimpan (store) (store) hasil hasil –– Operand Operand 11 –– Operand Operand 22 (dalam (dalam MIPS) MIPS) Contoh: Contoh: mov mov al,5 al,5 (intel) (intel) add add a,b,c a,b,c (MIPS) (MIPS)
– Format-format yang fix dan sederhana Æ membuat implementasi HW lebih sederhana (“simplicity favors regularity”) – Pada kebanyakan arsitektur, tidak ada batasan akan elemen-2 yang muncul lebih dari satu
Bahasa Rakitan
I. Pengenalan (cont’d) I.5.1. I.5.1. Mnemonic Mnemonic –– Merupakan Merupakan kode kode alphabet alphabet pendek pendek yang yang membantu membantu memori memori dalam dalam mengingat mengingat suatu suatu instruksi instruksi CPU. CPU. –– Dapat Dapat berupa: berupa: instruksi instruksi atau atau directive directive –– Contoh: (move) Contoh: instruksi: instruksi: mov mov (move) directive: (define directive: DB DB (define byte) byte) I.5.2. I.5.2. Operand Operand –– Sebuah Sebuah instruksi instruksi bisa bisa berisi berisi nol, nol, satu satu atau atau dua dua operand operand –– Sebuah register, variabel variabel memori, memori, atau atau immediate immediate Sebuah Operand Operand bisa bisa berupa: berupa: register,
value value –– Contoh: Contoh:
I.5.3 I.5.3 Komentar Komentar
10 10 count count AX AX
–– Tanda Tanda # # dalam dalam MIPS MIPS –– Tanda Tanda ;; dalam dalam intel intel Bahasa Rakitan
(immediate (immediate value) value) (variabel (variabel memori) memori) (register) (register)
I. Pengenalan (cont’d) I.6. Unsur-2 Dasar Bhs Rakitan • Set karakter dasar (pada MASM) Letter: Letter: A-Z, A-Z, a-z a-z Digits Digits:: 0-9 0-9 Karakters Karakters khusus: khusus: ?? @ @ .. (period) [[ ]] (period) “(double “(double quotes) quotes) & & || \\
__ (( )) % % = =
$$ <> <> !! {{ }}
:: ,(comma) ,(comma) ‘‘ (appostrope) (appostrope) # + # +
• Pembangun dasar statemen bhs rakitan :: –– –– –– –– –– ––
Konstanta Konstanta (nilai (nilai yg yg tidak tidak berubah berubah saat saat runtime) runtime) Æ Æ bilangan bilangan atau atau karakter karakter Variabel Variabel (lokasi (lokasi penyimpanan penyimpanan yg yg dapat dapat berubah berubah saat saat runtime) runtime) Name Name Æ Æ mengidentifikasikan mengidentifikasikan label, label, variabel, variabel, simbol simbol atau atau reserved reserved word word Mnemonic Mnemonic Operands Operands Kommentar Kommentar
Bahasa Rakitan
I. Pengenalan (cont’d) ••
Format Format Statement Statement (pada (pada MASM) MASM)
[name] [mnemonic] [operands] [;comments] Statement Statement dibagi dibagi menjadi menjadi 2 2 kelas: kelas: –– ––
Instruksi Instruksi :: executable executable statement statement Directive Directive :: statement statement yang yang menyediakn menyediakn informasi informasi untuk untuk membantu membantu assembler assembler dalam dalam menghasil menghasil executable executable code. code.
Statement Statement bersifat bersifat free-form free-form Æ Æ –– –– ––
••
Ditulis Ditulis dalam dalam suatu suatu kolom kolom dgn dgn sejumlah sejumlah spaces spaces antar antar setiap setiap operands operands Blank Blank lines lines diizinkan diizinkan Dapat Dapat ditulis ditulis dalam dalam suatu suatu baris baris tunggal tunggal (max. (max. 128 128 kolom) kolom)
Catatan: Catatan: ––
Directives: Directives: statement statement yang yang mempengaruhi mempengaruhi baik baik listing listing program program maupun maupun cara cara kode kode mesin mesin dibangkitkan dibangkitkan ••
––
Contoh: Contoh: DB DB directive directive Æ Æ memerintahkan memerintahkan MASM MASM u/ u/ meng-create meng-create storage storage untuk untuk variabel variabel bernama bernama count count dan dan menginisialisasikan menginisialisasikan dgn dgn 50 50 count count db db 50 50
Instruksi: Instruksi: dieksekusi dieksekusi oleh oleh Mikroprosessor Mikroprosessor saat saat runtime. runtime. ••
Tipe Tipe umum: umum: program program control, control, data data transfer, transfer, arithmetic, arithmetic, logical, logical, dan dan I/O I/O
Bahasa Rakitan
I. Pengenalan (cont’d) I.6 Operator Aritmatik – Misalkan dalam C, operasi penjumlahan: a=b+c; a=b+c;
– Operasi penjumlahan dalam MIPS dan intel: add add a,b,c a,b,c
add add b,c b,c mov mov a,b a,b
– Operasi pengurangan (a = b – c) dalam MIPS dan intel: sub sub a,b,c a,b,c
sub sub b,c b,c move move a,b a,b
I.7 Operasi-operasi kompleks – Misalkan: a=b+c+d-e; – Menjadi (dlm MIPS) add add add add sub sub
t0,b,c t0,b,c t1,t0,d t1,t0,d a,t1,c a,t1,c
Bahasa Rakitan
#t0=b+c #t0=b+c #t1=t0+d #t1=t0+d #a=t1-e #a=t1-e
Catatan
Kompiler-kompiler biasanya menggunakan variabel-2 temporal Ketika membangkitan kode
I. Pengenalan (cont’d) I.8. Representasi data – Bits: 0 dan 1 – Bit string (sederetan dari bits (sequence of bits))
– – –
88 bits bits Æ Æ 11 Byte Byte 16 16 bits bits Æ Æ half-word half-word 32 32 bits bits Æ Æ word word 64 64 bits bits Æ Æ double-word double-word
Karakter-2 – satu byte, biasanya menggunakan ASCII Bilangan integer – disimpan 2’s complement Floating point – menggunakan suatu mantissa dan
ekponensial (m (m xx 22ee))
Bahasa Rakitan
I. Pengenalan (cont’d) I.9. Penyimpan Data (data Storage) – –
Pada Bahasa tingkat tinggi, data disimpan dalam variabel Dalam prakteknya, data disimpan pada banyak tempat/media yang berbeda: •• •• •• ••
Disk Disk Random Random Access Access Memory Memory (RAM) (RAM) Cache Cache (RAM (RAM atai atai disk) disk) Registers Registers
Bahasa Rakitan
I. Pengenalan (cont’d) I.10. Organisasi Register – Organisasi register merupakan satu aspek yang menentukan tentang “Arsitektur Prosessor” tertentu – Tiga mekanisme dasar untuk Operator/operand •• Akkumulator Akkumulator :: arsitektur arsitektur yang yang menggunakan menggunakan suatu suatu register register tunggal tunggal u/ u/ satu satu dari dari sources sources dan dan destination destination (contoh (contoh 8088) 8088) •• Stack Stack :: operand operand dipushed dipushed dan dan di-pop di-pop (contoh (contoh java java machine) machine) •• General General purpose purpose :: sejumlah sejumlah terbatas terbatas register register digunakan digunakan u/ u/ menyimpan menyimpan data data u/ u/ setiap setiap maksud/tujuan maksud/tujuan (purpose) (purpose) (kebanyakan (kebanyakan sistem sistem saat saat ini) ini)
– Register: blok memori kecil kecepatan tinggi (small highspeed) yang digunakan u/ menyimpan data – Focus Æ general purpose register
Bahasa Rakitan
I. Pengenalan (cont’d) Contoh Akkumulator – Misalkan: A=B+C; – Dalam arsitektur berbasis-akkumulator, menjadi: load load addressB addressB add addressC add addressC store store addressA addressA
Contoh Stack – Misalkan: a=b+c; – Dalam Javacode iload iload iload iload iadd iadd istore istore
Bahasa Rakitan
aa cc aa
#load #load bb ke ke stack stack #load #load cc ke ke stack stack #add #add dan dan puts puts hasil hasil ke ke stack stack #store #store ke ke aa
I. Pengenalan (cont’d) Register General Purpose (GP) – Pada arsitektur yang menggunakn register GP, data dapat diakses dalam cara-cara yang berbeda •• Load/Store Load/Store (L/S) (L/S) –– data data disimpan disimpan ke ke register-register, register-register, dioperasikan dioperasikan di di dalamnya, dalamnya, dan dan simpan simpan balik balik ke ke memori memori (contoh. (contoh. Seluruh Seluruh set-set set-set instruksi instruksi RISC) RISC) –– ––
Hardware Hardware u/operand-2 u/operand-2 Æ Æ sederhana sederhana Semakin Semakin kecil kecil semakin semakin cepat, cepat, karena karena “clock “clock cycle” cycle” dapat dapat menjadi menjadi dan dan dipertahankan dipertahankan lebih lebih cepat cepat Penekanan Penekanan pada pada Efisiensi Efisiensi
Memori-Memori Memori-Memori – – operand-2 operand-2 dapat dapat menggunakan menggunakan alamat alamat memori memori (memori (memori addresses) addresses) sebagai sebagai keduanya keduanya sources sources dan dan destination destination (contoh (contoh INTEL) INTEL)
Bahasa Rakitan