You are on page 1of 11

Nama kelompok : Zahra Sukma _1001081013 Emelia Susanti_1001081043 Rani Desrianti_1001082009

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

3. Lihat hasil program dengan ketikkan g

4. Kemudian Ketik U 100 L 0d dan isi tabel berikut

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

SP FFEE FFEE FFEE

IP 0103 0105 0107

Mencetak huruf A sampai Z 1. Masuk ke a >> ketikan program berikut >> dan ketikan g untuk menampilkan hasil program

2. Kemudian Ketik U 100 L 0d dan isi tabel intruksi (tabel 1.3)

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

1395 1395 1395

0109 010B 010D

INC LOOP INT

DL 0105 20

Tambah 1 huruf dari huruf DL Alamat perulangan AH Menghentikan program

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

SP FFEE FFEE FFEE

IP 0103 0105 0107

1. Masuk ke a >> ketikan program berikut 2. Dan ketikan g untuk melihat hasilnya

3. Kemudian Ketik U 100 L 0F >> isikan tabel berikut (tabel 1.5)

ALAMAT SEGMEN OFFSET 1395 0100 1395 0103

INSTRUKSI MOV MOV

OPCODE CX,1A DL,5A

KETERANGAN Jumlah perulangan Huruf yang akan di cetak = Z

1395 1395 1395 1395 1395

0105 0107 0109 010B 010D

MOV INT DEC LOOP INT

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)

ALAMAT SEGMEN OFFSET 0B11 0103 0B11 0105 0B11 0107 c.

REGISTER CX DX AX BX 0000 0000 001A 0000 0000 0000 001A 005A 0200 0000 001A 005A

SP FFEE FFEE FFEE

IP 0103 0105 0107

Operasi Lompat dan perbandingan 1. Tulis program berikut

2. Dan ketikan g untuk melihat output dari program.

3. Kemudian Ketik U 100 L 27 dan isi tabel Instruksi (tabel 1.7)

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

AX 0000 0000 0000 0200

BX 0000 0000 0000 0000

REGISTER CX DX 0000 0000 0000 0041 0003 0041 0003 0041

SP FFEE FFEE FFEE FFEE

IP 0103 0105 0107 010A

Memberikan spasi pada setiap huruf yang di cetak (program1)

1. Tulis program berikut >> ketik g untuk melihat hasilnya

2. Kemudian Ketik U 100 L 15 dan isi tabel Instruksi (tabel 1.9)

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)

ALAMAT SEGMEN OFFSET 1395 0102 1395 0105 1395 0107

REGISTER CX DX AX BX 0000 0000 0000 0000 0200 0000 001A 0000 0200 0000 001A 0041

SP FFEE FFEE FFEE

IP 0102 0105 0107

Memberikan spasi pada setiap huruf yang di cetak (program2) 1. Tulis program berikut >> ketik g untuk melihat hasilnya

2. Kemudian Ketik U 100 L 15 dan isi tabel Instruksi (tabel 1.11)

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

1395 1395 1395 1395 1395 1395

010A 010C 01E 010F 0111 0113

MOV INT POP INC LOOP INT

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

SP FFEE FFEE FFEE

IP 0102 0105 0107

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)

CX = sebagai Counter untuk meletakkan jumlah lompatan pada LOOP yang


dilakukan dan Berfungsi untuk menampung cacah perulangan suatu operasi.

DX = sebagai Data dan register yang digunakan sebagai penampung data


tertentu (karakter, pointer, penentuan disk).

SP = digunakan untuk operasi

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

SS = berguna bagi instruksi-instruksi yang menyimpan sementara data


distack. Stack merupakan sebuah area memory yang dicadangkan untuk penyimpanan data secara sementara.

ES = berguna untuk pemograman pada saat melakukan operasi ke segment


lain. Nilai yang dikandung oleh register ini merupakan address yang berguna bagi instruksi-instruksi string.

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.

3. Buat program untuk menampilkan 1*1 = 1 dan 2*1 = 2

4. Buat program untuk menampilkan 1:1 = 1 dan 2:1 = 2

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.

Referensi : http://kuliah.dinus.ac.id/ika/asmb04.html http://www.havetogether.com/bahasa-assembler.html

You might also like