DASAR KOMPUTER Assembly Language
CPU Register
Register PC General purpose registers AX - the accumulator register (divided into AH / AL). BX - the base address register (divided into BH / BL). CX - the count register (divided into CH / CL). DX - the data register (divided into DH / DL). SI - source index register. DI - destination index register. BP - base pointer. SP - stack pointer. segment registers CS - points at the segment containing the current program. DS - generally points at segment where variables are defined. ES - extra segment register, it's up to a coder to define its usage. SS - points at the segment containing the stack. special purpose registers IP - the instruction pointer. flags register - determines the current state of the microprocessor.
Memory Access [BX + SI] [BX + DI] [BP + SI] [BP + DI] [SI] [DI] d16 (variable offset only) [BX] [BX + SI + d8] [BX + DI + d8] [BP + SI + d8] [BP + DI + d8] [SI + d8] [DI + d8] [BP + d8] [BX + d8] [BX + SI + d16] [BX + DI + d16] [BP + SI + d16] [BP + DI + d16] [SI + d16] [DI + d16] [BP + d16] [BX + d16]
Programming Language
Assembly termasuk Low-Level Languange, dapat dibaca & dimengerti oleh manusia sebagai hasil representasi binary code yang dieksekusi oleh komputer. Berorientasi pada mesin (machine dependent)ode yang dieksekusi oleh komputer Bahasa yang dikendalikan oleh operasi primitive dalam data binari Operasi dasarnya meliputi data movement, addition, substraction, comparison, shifting dan branching
Element Assembly Mnemonic Code Symbolic Operand Specification Declaration of Data / Storage Area
Mnemonic Code (1) Pengganti numeric operation code (opcode) Lebih mudah dibandingkan operation codes (opcodes) Terbagi menjadi bagian-bagian kecil yang memudahkan penulisan program Mendukung pengindikasian kesalahan coding (mis. Kesalahan penulisan operation code.
Mnemonic Code (2)
Symbolic Operand Specification Diasosiasikan dengan data atau instruksi Operand lebih menunjukkan symbolic reference dibandingkan dengan alamat Mempermudah programmer
Declaration of Data/Storage Area Penulisannya dapat dilakukan dalam desimal.
Bentuk Umum Assembly Statement
Bahasa Mesin vs Bahasa Assembly
Assembly Statement Imperative Statement Declarative Statement Assembler Directive Statement
Imperative Statement Menunjukkan aksi yang berlangsung selama eksekusi program assembly Setiap imperative statement ditranslasikan ke dalam instruksi mesin
Declarative Statement Menunjukkan konstanta atau storage area pada program Contoh : A DS 1 (DS = Declaration Storage) ONE DC 1 (DC = Declaration Constant)
Assembler Directive Statement Statement ini secara langsung mengarahkan assembler untuk mengambil alih aksi selama proses assembling program Menunjukkan bagaimana input program assembly dibentuk Contoh : START 100 END
Proses Translasi Analisis source code / source text Penentuan arti dari source text berdasarkan aturan struktur grammar (literal, syntax dan semantic) Sintesis target text pemilihan machine operation code yang sesuai dengan mnemonic code Hasil translasi dari source text target text
Fase Analysis Memisahkan label, mnemonic operation code dan operand field. Memasukkan simbol yang ditemukan pada label field dan alamat yang akan dituju machine word ke dalam Symbol table. Melakukan validasi mnemonic operation code dengan melihat pada Mnemonic table Menentukan alamat yang dibutuhkan statement berdasar pada mnemonic operation code dan operand field pada statement. Proses penghitungan alamat awal machine word mengikuti target code yang dibangkitkan untuk statement tersebut (Location Counter (LC) processing)
Fase Sintetis Menghasilkan machine operation code yang berkorespondensi dengan mnemonic operation code yang telah dicari pada mnemonic table Menghasilkan alamat operand dari Symbol table Melakukan sintesa instruksi machine
Pass Structure pada Assembler
Dalam pemrograman Assembly sering ditemui Forward Refference, yaitu symbol/label yang baru muncul setelah program tersebut menjadi acuan Solusi untuk forward refference adalah melakukan proses terhadap source statement lebih dari satu kali secara beberapa tahap atau dikenal dengan konsep translator pass
Pass Structure Def : Translator Pass adalah penelusuran secara menyeluruh source program input oleh translator hingga mencapai equivalent representation. Single-pass translation : proses yg berdasarkan translasi dari pernyataan satu ke pernyataan lainnya (statement to statement). Multi-pass translation : proses dari beberapa group pernyataan yg memerlukan sebuah translator dan mempunyai beberapa passes.
Multi Pass Translation Unit source program mentranslasikan semua bagian program pada fase analisis (pass I), proses LC dikerjakan, simbol yang didefinisikan pada program dimasukkan ke dalam Symbol Table Pass II, statement diproses untuk mensintesa target form cara lain, melakukan elaborasi pada hasil analisa source statement untuk mencegah duplikasi yang direpresentasikan dalam intermediate code
Single Pass Translation Solusi forward refference dengan single pass translation adalah dengan cara: meninggalkan instruksi yang memuat forward refference dalam keadaantidakselesai hingga alamat refference symbol diketahui. Alamat operand pada bagian akhir disimpan pada Table Incomplete Instruction (TII) Di akhir program, semua masukkan pada table diproses secara lengkap Keuntungan : setiap source statement hanya diproses satu kali Kekurangan : membutuhkan area storage yang besar karena fase analysis dan fase synthesis dijalankan bersamaan
2 Pass Assembler Pass I Memisahkan symbol, mnemonic code dan operand field Menentukan kebutuhan storage untuk setiap assembly languange statement dan update location counter (LC) Membangun table simbol Merancang intermediate code untuk setiap assembly languange statement Pass II Mensintesa target code dengan memproses intermediate code yang digenerate pada Pass I
Pass I Dalam Pass I assembler digunakan beberapa table : OPTAB : table mnemonic opcode dan informasi lain yang terkait SYMTAB : symbol table LITTAB : literal table
Pass I
Quiz/Tugas!!