=================================

Rabu, 22 Juni 2011

Assembler(Pemrograman bahasa assembly 8051)

Assembler adalah sebuah program komputer untuk menterjemahkan Bahasa Assembly -- intinya, sebuah representasi menmonic dari bahasa mesin — menjadi kode objek. Sebuah assembler silang (lihat kompilator silang) memproduksi kode untuk satu jenis prosesor, tetapi dapat dijalankan di prosesor lain.

      Pemrograman bahasa assembly dari 8051 membutuhkan pengertian akan template pemrograman, pengarahan assembler dan tipe data, dsb. Diskusi singkat tentang assembler peralatan pemrograman, penghubung, dsb. juga penting saat kita hendak memulai. Pembaca dapat memeriksa peralatan pemrograman dan sistem pengembangan yang tersedia dan mencoba untuk mengerjakan program-program sederhana pada platform. Sebagian besar fitur yang didukung oleh sistem pengembangan 8051 apa pun adalah serupa. Diskusi singkat pada baris ini dibahas di bagian ini.
Assembler-nya, secara umum, mendukung smua alfabet bahasa Inggris, baik upper case dan lower case, dan angka dari 0 hingga 9. Sebagai tambahan @ , $ ; _, juga didukung.
contoh 5.1
Pengarah ORG (Origin) dan END (END)
Perlu dicatat bahwa perintah pseudo ORG dan END;
keduanya adalah pengarah untuk assembler 8051. Pengarah ORG digunakan untuk menunjukkan alamat permulaan dari program sumber. ORG 0100H memberitahu assembler bahwa program sumber dimulai pada alamat 0100H dalam memori program. Alamatnya dapat juga berupa decimal. Sebagai contoh, ORG 0250 akan memberitahu assembler bahwa brogram yang akan di-assemble dimulai pada 250D. Secara serupa, pengarah END menunjukkan akhir dari fail program sumber. Ini adalah baris terakhir dalam program sumber dan assembler akan membiarkan kode sumber apapun setelah pengarah END. Beberapa assembler menggunakan sebuah titik “.ORG” dan “.END” daripada ORG dan END. (Perhatikan apa yang didukung oleh assembler anda)

Disassembler



Disassembler adalah program komputer yang menerjemahkan bahasa mesin ke bahasa-operasi perakitan terbalik bahwa assembler. Sebuah disassembler berbeda dari Decompiler, yang menargetkan bahasa tingkat tinggi daripada bahasa assembly. Pembongkaran, output dari disassembler, sering diformat untuk manusia-dibaca daripada kesesuaian untuk input ke assembler, sehingga prinsipnya alat reverse-engineering.

Majelis bahasa kode sumber umumnya

memungkinkan penggunaan konstanta dan komentar pemrogram. Ini biasanya dihapus dari kode mesin dirakit oleh assembler. Jika demikian, disassembler operasi pada kode mesin akan menghasilkan pembongkaran kurang konstanta ini dan komentar; output dibongkar menjadi lebih sulit bagi manusia untuk menafsirkan dari kode sumber asli dijelaskan. Beberapa disassemblers menggunakan informasi debugging simbolik hadir dalam objek file seperti ELF. Para Disassembler Interaktif memungkinkan pengguna manusia untuk membuat simbol mnemonik untuk nilai-nilai atau wilayah kode dalam sesi interaktif: pemahaman manusia diterapkan pada proses pembongkaran sering paralel kreativitas manusia dalam proses menulis kode.

BAHASA ASSEMBLY NOTASI BILANGAN dan OPERASI INPUT/OUTPUT DASAR

NOTASI BILANGAN
Pada saat berhadapan dengan nilai numerik, seringkali lebih mudah untuk menggunakan notasi desimal yang telah dikenal. Tentu saja, nilai tersebut disimpan dalam komputer sebagai bilangan biner. Pada beberapa situasi, lebih mudah untuk menetapkan pola biner secara langsung. Kebanyakan assembler memungkinkan bilangan numerik dinyatakan dengan berbagai cara yang berbeda, menggunakan konvensi yang ditetapkan oleh syntax bahasa assembly. Misalkan, bilangan 93, yang dinyatakan dengan bilangan biner 8bit 01011101. Jika nilai ini digunakan sebagai operand Immediate, maka dapat dinyatakan sebagai bilangan desimal, sebagaimana dalam instruksi :
ADD #93, RI
atau sebagai bilangan bitter yang diidentifikasi dengan simbol awalan seperti tanda persen,

ASSEMBLER DIRECTIVE

Selain menyediakan mekanisme untuk menyatakan instruksi dalam suatu program, bahasa assembly memungkinkan programer untuk menetapkan informasi lain yang diperlukan untuk mentranslasikan source program ke dalam object program. Kita telah menyebutkan bahwa kita perlu untuk menetapkan nilai numerik ke tiap nama yang digunakan dalam program. Misalkan nama SUM digunakan untuk menyatakan nilai 200. Fakta ini mungkin disampaikan ke program assembler melalui pernyataan seperti
SUM EQU 200’
Pernyataan ini tidak menunjuk suatu instruksi yang akan dieksekusi pada saat object program dijalankan;

Satuan Bit dan Byte

BIT - merupakan satuan data terkecil. Terdiri dari 1 atau 0. Biasa disebut dengan “Binary”.
BYTE – terdiri dari 8 bit. Memiliki nilai maksimal 225 (0-225). Biasa disebut sebagai “base 16 system” sedangkan binary disebut “base 2 system”.
WORD – merupakan 2 byte atau 16 bit. Word memiliki nilai maksimal 0FFFFh atau 65535d.
DOUBLE WORD – terdiri dari 2 word atau 32 bit. Nilai maksimal = 0FFFFFFFF atau 4294967295d.
KILOBYTE – 1000 bytes?? Bukan. 1 kilobyte tidak sama dengan 1000 bytes. 1 kilobyte sama dengan 1024 (32 * 32) bytes.
MEGABYTE – 1 Megabyte tidak sama dengan 1000000 bytes, tetapi 1024 * 1024 atau 1048578 bytes.
II. Register
Register adalah tempat khusus pada komputer, dimana kita bisa melakukan penyimpanan data. Kita bisa melihat register sebagai sebuah “kotak”, dimana di dalamnya kita bisa menyimpan sesuatu seperti : nama, nomor, kalimat. Kita bisa melihat register sebagai tempat penyimpanan

Perintah STRUC

Perintah STRUC mendefinisikan struktur (template atau pola) yang mungkin membebani ruang memori. Struktur juga dapat menganalisasi area dalam program ke nilai default. Bagian individu struktur disebut field.
Kita mendefinisikan struktur banyak persamaaannya dengan makro. Contoh, kita dapat mendefinisikan struktur menjelaskan field dari record mahasiswa. Definisi struktur berikut harus ditempatkan dalam file sumber di mana saja di depan segmen data:

Perintah RECORD

Perintah RECORD merupakan penjelasan kumpulan bit dalam suatu operand byte atau word. Kita menggunakan perintah ini untuk membuat masking bit dan penggeseran bit lebih mudah. Pertama, record harus didefinisikan dengan nama record dan nama dan lebar setiap field. Sintak untuk pendefinisian record adalah :
Recordname RECORD field [,field] …
Sintak untuk field adalah:
Fieldname : width [= ekspresi]
Fieldname adalah nama filed tertentu dalam record; dan field awal disimpan dalam bit yang paling berarti dari byte atau word.
Berikut ini contoh penggunaaan perintah RECORD untuk mendefinisikan susunan bit tanggal 16-bit yang disimpan dalam direktori disk. Tanggal dalam bit-terpetakan, dengan 7-bit untuk tahun, 4 bit untuk bulan dan 5 bit untuk hari:
1111111 1111 11111
Tahun bulan hari

Perintah Dasar Assembler

Perintah Dasar Assembler  Berikut beberapa perintah dasar pada assembler yang biasa digunakan:

• Mov
Perintah untuk