Professional Documents
Culture Documents
PEMROGRAMAN ASSAMBLER 1
A. Dasar Teori: Bahasa Assambler Bahasa assembler dikategorikan sebagai bahasa tingkat rendah (low level language). Ini untuk menggambarkan kekhususannya sebagai bahasa yang berorientasi pada machine dependent. Dalam bahasa assembler mempunyai 3 instruksi dasar, yaitu : 1. Mnemonic atau opcode ialah kode yang akan melakukan aksi terhadap operand. 2. Operand ialah data yang diproses oleh opcode. Sebuah opcode bisa membutuhkan 1 ,2 atau lebih operand, kadang juga tidak perlu operand. 3. Komentar dapat kita berikan dengan menggunakan tanda titik koma (;). Perintah perintah yang biasa digunakan pada bahasa assambler Debug untuk membuat pemrograman assambler dengan format ekstensi COM. Q (Quit) Mengembalikan ke dos prompt A (assambler) Perintah untuk menulis program assambler R(Register) Digunakan untuk mengetahui isi masing-masing register N(Name) Perintah untuk membuat atau merubah nama file W(Writing) Menulis program dan data ke dalam disc G (Go) Menjalankan program (misal program cetak huruf A) T(Trace) Menjalankan program perbaris dengan menampilkan register dipakai U (Unsamble) Menampilkan list dari program yang sedang berjalan U[tempat awal program yang diinginkan] L[panjang program/1 byte akhir dari alamat akhir program] Int 20 memberhentikan proses komputer terhadap suatu program COM. Int 21 mencetak output program. Instruksi Pengalamatan MOV tujuan,asal Instruksi Penjumlahan INC tujuan Instruksi Pengurangan DEC tujuan
B. LANGKAH KERJA a. Berikut ini langkah membuat program untuk mencetak huruf A sebanyak 5 kali dengan utiliti DEBUG.COM 1. Klik start, dari tampilan menu pilih Run. Ditampilan menu Run, ketik command dan selanjutnya pilih OK 2. Ketikan debug >> a >> lalu ketikan program berikut
MOV CX,05 MOV AH,02 MOV DL,41 INT 21 LOOP 0103 INT 20 Enter 2 kali
5. Isikan data ke Tabel Instruksi (tabel 1.1) ALAMAT SEGMEN OFFSET 1395 0100 1395 0103 1395 0105 1395 0107 1395 0109 1395 010B INSTRUKSI
MOV MOV MOV INT LOOP INT
OPCODE
CX,0005 AH,02 DL,41 21 0103 20
KETERANGAN Jumlah perulangan Mencetak 1 huruf pada layar Huruf yang akan dicetak Mencetak Alamat perulangan Menghentikan program
6. Gunakan perintah Trace (T) dan isi tabel berikut (tabel 1.2)
ALAMAT SEGMEN OFFSET 1395 0103 1395 0105 1395 0107 b. Operasi Aritmatika
REGISTER CX DX AX BX 0000 0000 0005 0000 0200 0000 0005 0000 0200 0000 0005 0041
Mencetak huruf A sampai Z 1. Masuk ke a >> ketikan program berikut >> dan ketikan g untuk menampilkan hasil program
ALAMAT SEGMEN OFFSET 1395 0100 1395 0103 1395 0105 1395 0107
INSTRUKSI
MOV MOV MOV INT
OPCODE
CX,001A DL,41 AH,02 21
KETERANGAN Jumlah perulangan Huruf yang akan di cetak Mencetak 1 huruf pada layar Mencetak
DL 0105 20
3. Gunakan perintah Trace (T) dan isi tabel Register (tabel 1.4)
ALAMAT SEGMEN OFFSET 1395 0103 1395 0105 1395 0107 Mencetak huruf Z ke A
REGISTER CX DX AX BX 0000 0000 001A 0000 0000 0000 001A 0041 0200 0000 001A 0041
1. Masuk ke a >> ketikan program berikut 2. Dan ketikan g untuk melihat hasilnya
AH,02 21 DL 0105 20
Mencetak 1 huruf pada layar Mencetak mengurangkan 1 huruf dari 5A Alamat perulangan AH Menghentikan program
4. Gunakan perintah Trace (T) dan isi tabel Register (tabel 1.6)
REGISTER CX DX AX BX 0000 0000 001A 0000 0000 0000 001A 005A 0200 0000 001A 005A
ALAMAT SEGMEN OFFSET 1395 0100 1395 0103 1395 0105 1395 0108 1395 010A 1395 010C 1395 010E 1395 0110 1395 0113 1395 0115 1395 0117 1395 0119 1395 011B 1395 011D 1395 011F 1395 0120 1395 0123 1295 0125
INSTRUKSI
MOV MOV MOV MOV INT LOOP INC CMP JNZ MOV MOV INT MOV INT INC CMP JLE INC
OPCODE
BX,0000 DL,41 CX,0003 AH,02 21 0108 DL DL,5B 0105 DL,0D AH,02 21 DL,0A 21 BX BX, +0B 0103 20
KETERANGAN
menulis langsung dari/ke memory
Inputan A Jumlah lompatan (3) Mencetak 1 huruf pada layar Mencetak Alamat perulangan AH Input A + 1 [ Jika tidak 0 ulang ke alamat 0105 Carriage return Mencetak 1 huruf pada layar Mencetak Pindah baris Mencetak Tambah BX Vertical tab Lompat ke alamat 0103 simpan
4. Gunakan perintah Trace (T) dan isi tabel Register (tabel 1.8)
ALAMAT SEGMEN OFFSET 1395 0103 1395 0105 1395 0108 1395 010A d. Operasi Stack
ALAMAT SEGMEN OFFSET 1395 0100 1395 0102 1395 0105 1395 0107 1395 0109 1395 010B 1395 010D 1395 010F 1395 0111 1395 0113
INSTRUKSI
MOV MOV MOV INT MOV MOV INT MOV INC LOOP
OPCODE
AH,02 CX,001A DL,41 21 BL,DL DL,20 21 DL,BL DL 0107
KETERANGAN Mencetak 1 huruf ke layar Jumlah lompatan (subtitute) Input A Mencetak Input space Mencetak Tambahkan inputan Cetak alamt 0107
3. Gunakan perintah Trace (T) dan isi tabel Register (tabel 1.10)
REGISTER CX DX AX BX 0000 0000 0000 0000 0200 0000 001A 0000 0200 0000 001A 0041
Memberikan spasi pada setiap huruf yang di cetak (program2) 1. Tulis program berikut >> ketik g untuk melihat hasilnya
ALAMAT SEGMEN OFFSET 1395 0100 1395 0102 1395 0105 1395 0107 1395 0109
INSTRUKSI
MOV MOV MOV INT PUSH
OPCODE
AH,02 CX,001A DL,41 21 DX
KETERANGAN Mencetak huruf ke layar Jumlah Lompatan Input A Mencetak Simpan nilai DX pada stack
DL,20 21 DX DL 0107 20
Input space Mencetak Ambil nilai pada puncak stack, masukkan ke DX Tambahkan input Ulang Simpan
3. Gunakan perintah Trace (T) dan isi tabel Register (tabel 1.12)
ALAMAT SEGMEN OFFSET 1395 0102 1395 0105 1395 0107 C. PERTANYAAN
REGISTER CX DX AX BX 0200 0000 0000 0000 0200 0000 001A 0000 0200 0000 001A 0041
1. Dari program-program yang sudah ditulis dan diuji apa fungsi dari register AX = sebagai Accumulator dan register yang berfungsi sebagai masukan,
atau menampung hasil proses / perhitungan (add, sub, mul, dan div) dan sering untuk menyimpan data sementara.
BX = sebagai Base dan register yang merupakan salah satu dari dua
register base Addressing mode (penunjuk basis alamat),yang dapat mengambil atau menulis langsung dari/ke memory dengan segment DS (Data Segment)
stack. Berisi data yang merupakan address lokasi saat kini dalam stack. Register ini teknisnya merupakan register multi fungsi yang dapat dipakai sebagai tempat penyimpanan data maupun tempat kalkulasi
IP = register terpenting untuk menunjukkan baris perintah program. DS = tempat menampung nilai address dari segmen yang normalnya berisi
data-data yang dialokasikan oleh program
CS = Tugasnya adalah menunjukkan segment program berada. 2. Apa yang bisa disimpulkan dari tabel 1.1 sampai dengan tabel terakhir Isi dari tabel instruksi merupakan informasi perintah perintah yang di gunakan pada program, untuk AH merupakan perintah untuk mencetak I huruf kelayar,dan instruksi int 21 harus ada dalam program, karena merupakan perintah untuk mencetak program. Tabel register berisikan informasi sebuah tempat penampungan sementara untuk data-data yang akan diolah oleh prosesor, seperti pada tabel AX itu merupakan alamat untuk tempat menampung hasil proses / perhitungan. Dan isi kolom dari offset sama dengan kolom IP pada register, karena merupakan register terpenting untuk menunjukkan baris perintah program.
D. KESIMPULAN Dari percobaan diatas maka dapat disimpulkan bahwa : Bahasa Assembler merupakan bahasa komputer yang berada di antara bahasa mesin dan bahasa level tinggi. Bahasa Assembler memakai kode Mnemonic untuk menggantikan kode biner, dengan kombinasi dari perintah perintah dasar (seperti : MOV, INC, DEC) dengan bilangan bilangan HEXA ataupun bilangan bilangan ASCII. Ini berguna agar lebih mudah diingat sehingga lebih memudahkan dalam penulisan program. Untuk menjalankan program terlebih dahulu harus masuk ke DEBUG dan ketikan A.jika ingin melihat hasil program maka ketikan G Setelah masuk ke A maka akan keluar informasi alamat SEGMENT : OFFSET Dalam sebuah program harus terdapat OPCODE AH,02 , INT 21(untuk mencetak), INT 20(untuk menghentikan program) dan DL atau DX untuk data yang akan di cetak.