Anggota Kelompok :
1. Colly Anggitya (1001081045)
2. Rio Andhiko
3. Nurhuda
PEMROGRAMAN ASSAMBLER 1
A. Dasar Teori:
1. Bahasa Assambler
Bahasa assembly dikategorikan sebagai bahasa tingkat rendah (low level languange). Ini untuk menggambarkan kekhususannya sebagai bahasa yang berorientasi pada machine dependent. Untuk membandingkan bahasa mesin dan bahasa assembly, kita dapat melihatnya dari tiga karakteristik berikut :
1. Mnemonic operation code. Sebagai pengganti numeric operation code (opcodes) yang digunakan pada bahasa mesin, digunakankanlah mnemonic code pada bahasa assembly. Selain kemudahan dalam penulisannya dibandingkan dari bahasa mesin juga mendukung pelacakan kesalahan seperti kesalahan penulisan operation code.
2. Symbolic operand specification. Penamaan simbol diasosiasikan sebagai suatu data atau instruksi. Operand lebih menunjukkan symbolic reference dibandingkan dengan alamat mesin suatu data atau instruksi. Hal ini akan mempermudah pada saat harus dilakukan modifikasi program.
3. Declaration of data/storage area. Data dapat dinyatakan dalam notasi desimal. Ini dilakukan untuk mencegah konversi secara manual dari konstanta ke dalam representasi internal mesin. Sebagai contoh :
-5 menjadi (11111010)2 atau 10.5 menjadi (41A80000)16
Suatu statement bahasa assembly mempunyai bentuk umum sebagai berikut :
[Label] Menmonic OpCode Operand [operand…]
Berikut instruksi-instruksi menurut fungsinya, yaitu :
1. Debug dan Interupt
- Debug
Debug adalah suatu utiliti dalam DOS yang digunakan untuk membuat pemrograman assambler dengan format ekstensi COM.
Perintah-perintah debug antara lain :
- Q (Quit) Ã Mengembalikan ke dos prompt
- A (assambler) Ã Perintah untuk menulis program assembler
- 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]
- Interupt (Int)
Perintah yang merupakan pemanggilan subroutin yang sudah tersedia di memori komputer, Subroutine yang dapat dipanggil menggunakan perintah int (Interup) terdiri dari dua jenis yaitu:
1. Bios Interrupt
2. DOS Interrupt
2. Instruksi-Instruksi Dasar
1. Instruksi Pengalamatan
MOV tujuan,asal, Misal MOV AX,1234H (register AX diisi angka 1234 H)
2. Instruksi Penjumlahan
INC tujuan
Misal INC DX (DX = DX+1)
ADD tujuan,asal
Misal ADD AX,1234 (AX=AX+1234H)
3. Instruksi Pengurangan
DEC tujuan
Misal DEC AX (AX=AX-1)
SUB tujuan,asal
Misal SUB AX,1200H (AX = AX-1200H)
B. Langkah Kerja
Mencetak Huruf A 5 kali
1. Klik start, dari tampilan menu pilih Run. Ditampilan menu Run, ketik command dan selanjutnya pilih OK
2. Ketik Debug >> a >>
3. Tulis program berikut dan Untuk melihat hasilnya, ketikkan g
4. Ketik U 100 L 0d dan isi tabel berikut

| ALAMAT | INSTRUKSI | OPCODE | KETERANGAN | |
| SEGMEN | OFFSET | |||
| 1531 | 0100 | MOV | AH, 02 | Mencetak 1 huruf pada layar |
| 1531 | 0102 | MOV | DL, 41 | Huruf yang di cetak (A) |
| 1531 | 0104 | INT | 21 | Mencetak |
| 1531 | 0106 | INT | 20 | Menghentikan Program |
| 1531 | 0108 | PUSH | BP | |
| 1531 | 0109 | LEA | BX, [90C7] | |
5. Gunakan perintah Trace (T) dan isi tabel berikut

| ALAMAT | REGISTER | ||||||
| SEGMEN | OFFSET | AX | BX | CX | DX | SP | IP |
| 1531 | 0102 | 0200 | 0000 | 0000 | 0000 | FFEE | 0102 |
| 1531 | 0104 | 0200 | 0000 | 0000 | 0041 | FFEE | 0104 |
Operasi Aritmatika
- A – Z
1. Debug >> a >> ketik program seperti tampilan di bawah ini >> ketik g untuk melihat
2. Ketik U 100 L 0F dan isi tabel instruksi
Tabel Instruksi
| ALAMAT | INSTRUKSI | OPCODE | KETERANGAN | |
| SEGMEN | OFFSET | |||
| 13AE | 0100 | MOV | CX, 001A | Jumlah perulangan |
| 13AE | 0103 | MOV | DL,41 | Huruf yang akan dicetak |
| 13AE | 0105 | MOV | AH,02 | Mencetak 1 huruf pada layar |
| 13AE | 0107 | INT | 21 | Mencetak |
| 13AE | 0109 | INC | DL | Tambah 1 huruf dari 1A |
| 13AE | 010B | LOOP | 0105 | Alamat perulangan AH |
| 13AE | 010D | INT | 20 | Menghentikan program |
3. Gunakan perintah Trace (T) dan isi tabel berikut
Register
| ALAMAT | REGISTER | ||||||
| SEGMEN | OFFSET | AX | BX | CX | DX | SP | IP |
| 13AE | 0103 | 0000 | 0000 | 001A | 0000 | FFEE | 0103 |
| 13AE | 0105 | 0000 | 0000 | 001A | 0041 | FFEE | 0105 |
| 13AE | 0107 | 0200 | 0000 | 001A | 0041 | FFEE | 0107 |
- Z - A
1. Debug >> a >> ketik program seperti tampilan di bawah ini >> ketik g untuk melihat hasilnya
2. Kemudian Ketik U 100 L 0F dan isi tabel instruksi
Tabel Instruksi
| ALAMAT | INSTRUKSI | OPCODE | KETERANGAN | |
| SEGMEN | OFFSET | |||
| 13AE | 0100 | MOV | CX,001A | Jumlah perulangan |
| 13AE | 0103 | MOV | DL,5A | Huruf yang akan di cetak |
| 13AE | 0105 | MOV | AH,02 | Mencetak 1 huruf pada layar |
| 13AE | 0107 | INT | 21 | Mencetak |
| 13AE | 0109 | DEC | DL | Mengurangi 1 huruf dari 5A |
| 13AE | 010B | LOOP | 0105 | Alamat perulangan AH |
| 13AE | 010D | INT | 20 | Menghentikan program |
3. Gunakan perintah Trace (T) dan isi tabel register
Register
| ALAMAT | REGISTER | ||||||
| SEGMEN | OFFSET | AX | BX | CX | DX | SP | IP |
| 13AE | 0103 | 0000 | 0000 | 001A | 0000 | FFEE | 0103 |
| 13AE | 0105 | 0000 | 0000 | 001A | 005A | FFEE | 0105 |
| 13AE | 0107 | 0200 | 0000 | 001A | 005A | FFEE | 0107 |
Operasi Lompat dan perbandingan
1. Debug >> a >> ketik program seperti tampilan di bawah ini >> ketik g untuk melihat hasilnya
Hasil :
C. Pertanyaan:
1. Dari program-program yang sudah ditulis dan diuji apa fungsi dari register
AX,BX,CX,DX,SP,IP,DS,SS,ES,CS
AX = sebagai akumulator
BX = sebagai register base
CX = sebagai counter untuk meletakkan jumlah lompatan pada loop
DX = penyimpan alamat I/O saat operasi berjalan. Dan sebagai data dan register
SP = untuk operasi stack, dan sebagai tempat penyimpanan data
IP = register untuk menunjukkan baris perintah program
DS = Tempat menampung nilai address dari segmen
SS = Berguna bagi instruksi-instruksi yang menyimpan sementara data di stack
ES = Untuk pemograman data saat melakukan operasi ke segmen lain
CS = Menunjukkan segmen program berada
2. Yang dapat disimpulkan dari tabel-tabel di atas adalah pada tabel instruksi terdapat informasi perintah-perintah yang digunakan pada program, dan harus ada instruksi MOV AH yang merupakan perintah untuk mencetak 1 huruf kelayar dan instruksi int 21 juga harus ada dalam program, karena merupakan perintah untuk mencetak program. Sedangkan pada tabel register berisikan informasi tempat penampungan sementara data.
3. Buat program untuk menampilkan
- 1*1=1
- 1:1=1
4. Buat program untuk menampilkan
- 2*1=2
- 2:1=2
D. Kesimpulan
- Bahasa assembly dikategorikan sebagai bahasa tingkat rendah (low level languange). Ini untuk menggambarkan kekhususannya sebagai bahasa yang berorientasi pada machine dependent.
- Tiga karakteristiknya yaitu : Mnemonic operation code, Symbolic operand specification, dan Declaration of data/storage area.
- Di dalam bahasa assembler terdapat berbagai instruksi yang memiliki fungsi yang berbeda-beda satu sama lainnya.
Referensi:
http://kuliah.dinus.ac.id/ika/asmb04.html
http://Fkarmila.staff.gunadarma.ac.id
http://sutondoscript.blogspot.com/2012/03/pengertian-definisi-teori-bahasa.html













