Kamis, 12 April 2007

Diposting oleh colly anggitya di 17.05

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

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8ucAREdexQ3lRbFV9Y94MD2I0cMTliGMxvYsJ1NeR4FMMiFnNVJcReKZ5VYWskbS3gAd422d2-cgj8wC-oCo5cDeJFlMFZVXF42om7SSzfqtaVCccziXTYnLV8WY8mDl8cbyHqBDxSAH9/s1600/5.png

2. Ketik U 100 L 0F dan isi tabel instruksi

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizEKlhO6S7vwd__AEXkesogYVpeCvoASzUdtrjEx9AnaKLutqKHhXaepFPhqdukitVNkfBj7Jq_19nsi2B1aBzQE6BszDrVl0cCxqg2L0MuamN5o9qAqnVHBnEQ_5VrpucOGo3Cq_HzGvc/s1600/6.png

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

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg4L9HRAGt7TOZ0VLprGfHRJwYMFxWSiGfO7kiBI4HIKWbdrGIJZ2UhwiGIFre-ki8l7LtD4H4yqKx5fO3Io1_3AJwVYG-uPWSwxMY49dltV9vSoQ49w4-wd3EIszNVyr6IspR1GuD4pOJ/s1600/7.png

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

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnz_44rAucpJHKzdRUnCO745JGNquOjpra-Nk5BXK9pYrFXfY1q-Oy_1i5aWEbWUaKw8GuRBJ16KgfltK9QS8pZgB__0Lpge1UNUhlVZP3YpCWLr_TOPpnXYGbxarvUC-vPORJvGBHQdC-/s200/8.png

2. Kemudian Ketik U 100 L 0F dan isi tabel instruksi

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgyuojd3-ZVEFfozwMAnFxIOyYuB069PoPKuxNeHYtk4jieT6pL456uEP86hdDiDwhI1EICDCzHOJ00r2ykrsYoXLrnowy46DvI9AHKR3Iq4gx6Zi9PH0lRct9DNcBiS0y4RdKinQ9fpoN/s1600/9.png

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

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj89C6oJfP205tHZ9qW1nY6b1d2JIfwcGVY635P01JZMn3oiaYMyvbUUTB80Ex8CddO_sB22EF2DtNOoZKZFCxFyUBv1ApCVHjYrZtnTpUMA6KMykhr2VUcXKMVtWvogR6_qOCYXOiUe0Zx/s1600/10.png

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

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjI8Uxw7t4rzmXgNINBWnNTrQV7qLQjiLRCHlfrafBrGxEMYhhO-cqypIMHYrUl6USYkAW3tXupxIEQIQO_t7zJcDk3vrpPF9ZtUDqGUrtKmDSbFe1o2KrXN97bck7uLn1wDstTUOIhWjpV/s200/11.png

Hasil :

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRc5DO0fDmVPtZftSZsf6ueh6EKQfN6ePsLKyJQO7pUxmki84wXH_udTGU6vIJzZkZW5PwVj0kx74AkEik0Joonuy6JaX2m8mTwvvLbp242AK9r6znNC4L5SOc9vwGX4pbBhmQMFjFhWlc/s1600/12.png

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

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzylOE6VQBrdLiQeZY8LBwBT4_nZeGlmstIESMKvCZ4j85h7f20IqotjTO6Ze8OvJCXFi9sWI7xjt2tATfLyKsqk0Z0TLJj1BNU3leSSsIljhs-CvZW2LvoKjA-qmVQr73IizPZARGclsP/s200/15.png

  • 1:1=1

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlpKDb7fAFdeL9dZT6LZ9OiWaWRAfTNARVlsLqCLoH7bSz49ovhtSsRNOY81gBY-kClz207nwZ6kMLAx20YnoCz9H_tLP613xYTYSB1tuiua_J7FMBT8x9k9KSmwpzjpxFAxdElUYDGPDD/s200/17.png

4. Buat program untuk menampilkan

  • 2*1=2

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbgdwDtnGZn_2ZdR3xjFvjwI1hwK92chyzadAUGulleL450Tt4mYEWkDpMJxT-GlVCdg9Vo3YXAH1WYfc2MFlYCN3nvr05BNXOOlUtqdXnme1PI8OmX0d1bVO-OILxl2l-VUry-sfyQgNS/s200/16.png

  • 2:1=2

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOHGFoumeIUCdbBwW6vNPziF19jcGsupj9AdtG_KYUijXbMze64r6EdByBjl6FSNj802iYzBziazaDTN-LFUT4Q4BmaTsIeDIcF1oN3V1wUOej53IL5j8JdeJM7y-KwroqCarz4X0Lkc6t/s200/18.png



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

0 komentar on " "

Posting Komentar

 

mY bloG Copyright © 2009 Girl Music is Designed by Ipietoon Sponsored by Emocutez