Makalah Bahasa Assembly

download Makalah Bahasa Assembly

If you can't read please download the document

  • date post

    28-Dec-2015
  • Category

    Documents

  • view

    1.288
  • download

    112

Embed Size (px)

description

Makalah Bahasa Assembly

Transcript of Makalah Bahasa Assembly

KATA PENGANTAR

Puji syukur kehadirat Tuhan Yang Maha Kuasa karena berkat rahmat dan hidayah-NYA kami mampu menyelesaikan tugas makalah ini dengan tepat waktu. Tidak lupa juga shalawat serta salam semoga selalu terhaturkan kepada nabi besar kita Muhammad SAW yang telah membawa kita dari zaman kegelapan menuju zaman yang terang benderang seperti sekarang ini.Kami menyadari bahwa Tak Ada Gading yang Tak Retak begitupula dengan makalah ini terdapat banyak kekurangan dan kesalahan sehingga jauh dari kesempurnaan. Setelah dengan kesungguhan hati, maka selesailah penulisan makalah ini dengan judul Bahasa Assembly, yang diajukan sebagai salah satu tugas dari mata kuliah Pengantar Microprosesor. Dengan segala kerendahan hati, Penulis mengharapkan saran dan kritik yang bersifat membangun bagi perbaikan penulisan makalah ini.

Makassar, Juli 2013

Penulis

DAFTAR ISIKATA PENGANTAR1DAFTAR ISI2BAB I PENDAHULUAN31.Latar Belakang32.Tujuan4BAB II PEMBAHASAN41.Pengertian Bahasa Assembly42. Contoh Bahasa Assembly 133.Kelebihan dan Kekurangan Bahasa Assembly20BAB III KESIMPULAN21BAB IV DAFTAR PUSTAKA22

BAB I PENDAHULUAN

Latar BelakangBahasa Assembly atau Rakitan diprakarsai oleh IBM pada tahun 1956 1963.Bahasa assembly termasuk bahasa tingkat rendah. Pada tahun 1957, sebuah tim yangdipimpin oleh John W. Backus berhasil mengembangkan sebuah bahasa baru yang lebihmengarah pada keperluan untuk menganalisa persoalan numeric. Extensi yang dihasilkandari bahasa assembly adalah file dengan extensi Com dan Exe. Secara umum kedua jenisfile tersebut memiliki perbedaan antara program yang berekstensi Com dan Exe, yangmerupakan ukuran luas daerah yang menyebabkan kelainan program dalam assembler.Untuk file yang diakhiri dengan extension Com, berarti file itu paling banyakhanya akan memakan luas 64 kilobyte yang disebut 1 segment, sedangkan untuk fileberekstensi EXE tidak dibatasi berapa segment yang dapat dipakai. Dapat 1 segment, 2segment, 3 segment atau lebih dari 3 segment. Oleh karena COM hanya memiliki 1segment. Bahasa assembly adalah bahasa pemrograman mendasar yang sangat dekat dengan mesin. Konsep perangkat keras dan perangkat lunak dapat dijelaskan secara konstektual dengan memahami bahasa assembly. Disini akan dijelaskan bagaimana perangkat keras computer dan sistem operasi bekerja sama dan bagaimana program aplikasi berkomunikasi dengan system operasi. Untuk memahami keseluruhan computer dan system informasinya, seseorang perlu memahami perangkat lunak pada berbagai level. Level pertama adalah program aplikasi. Dalam level ini program berinteraksi dengan DOS. Pada level bahasa tingkat tinggi, perintah /pernyataan yang andal diuraikan ke dalam instruksi- instruksi mesin. Pada level yang lebih rendah (lebih dekat dengan mesin), seseorang akan berinteraksi pada instruksi- instruksi yang dikenali oleh CPU, sebagaimana program berkomunikasi dengan DOS.

Tujuan

Tujuan dari penulisan makalah yaitu untuk menambah pengetahuan dan mengetahui tentang apa itu Bahasa Assembly beserta contohnya.BAB II PEMBAHASAN

1. Pengertian Bahasa AssemblyBahasa pemrograman Assembly adalah bahasa pemrograman tingkat rendah yang digunakan dalam pemrograman computer, mikroprosesor, pengendali mikro, dan perangkat lainnya yang dapat deprogram. Bahasa rakitan pengimplementasikan interprestasi atas kode mesin dalam bentuk symbol-simbol yang secara relative lebih dapat dipahami oleh manusia. Berbeda halnya dengan bahasa-bahasa tingkat tinggi yang berlaku umum, bahasa rakitan biasanya mendukung secara spesifik untuk suatu apapun beberapa jenis arsitektur computer tertentu. Dengan demikian portabilitas bahasa rakitan tidak dapat menandingi bahasa-bahasa lainnya yang merupakan bahasa pemrograman tingkat tinggi. Namun demikian, bahasa rakitan memungkinkan programmer memanfaatkan secara penuh kemampuan suatu perangkat keras tertentu yang biasanya tidak dapat ataupun terbatas bila dibuat dengan menggunakan bahasa pemrograman tingkat tinggi.Pada bahasa rakitan, programmer umumnya menggunakan sebuah utilitas yang disebut sebagai perakit (bahasa Inggris : assembler) yang digunakan untuk menerjemahkan kode dalam bahasa rakitan tersebut kedalam kode mesin untuk perangkat keras tertentu.Sebuah perintah dalam bahasa rakitan biasanya diterjemahkan menjadi sebuah instruksi.Bahasa Assembly adalah bahasa yang memudahkan pemahaman bagian computer yang paling rendah, mendekati mesin. Bahasa assembly sebaiknya dipelajari secara kontektual sehingga interaksi perangkat keras dan perangkat lunak computer mungkin lebih mudah dipahami.Bahasa assembly adalah bahasa pemrograman dengan korespondensi satu-satu antara perintah-perintah/pertanyaannya dan bahasa mesin computer. Bahasa assembly tidak satu jenis sebagaimana CPU computer yang bermacam-macam. Setiap bahasa assembly secara langsung dipengaruhi oleh set intruksi mesin computer dan arsitektur perangkat keras. Misalnya, bahasa assembly IBM-PC adalah bahasa assembly yang mengacu pada instruksi-instruksi yang dikenali oleh keluarga mikroprosesor intel 8086-80486.

Apa itu assembler?Assembler adalah program yang mengonversi kode program sumber ke dalam bahasa mesin. Terdapat dua assembler yang dikenal baik untuk IBM-PC , yaitu MASM (Microsoft Assembler) dan TASM (Turbo Assembler). Bahasa assembly disebut bahasa level-bawah karena dalam struktur dan fungsi dekat dengan bahasa mesin. Sebaliknya, bahasa tingkat tinggi seperti Pascal, Basic, Fortran, dan Cobol mempunyai perintah-perintah yang andal yang diterjemahkan ke dalam berbagai instruksi mesin oleh compiler.Ada berbagai alasan mengapa kita mempelajari bahasa assembly. Salah satu alasan adalah untuk mempelajari arsitektur computer dan system operasi . Alasan lain adalah kegunaan pemrograman tertentu sulit atau tidak mungkin dikerjakan oleh bahasa tingkat tinggi . Contoh, komunikasi langsung dengan system operasi computer mungkin diperlukan. Program grafik warna kecepatan tinggi mungkin harus di tulis menggunakan memori minimum. program khusus mungkin diperlukan sebagai penghubung antara printer dengan computer.Keterbatasan bahasa tingkat tinggi sering juga perlu dihilangkan , di luar keperluan ,menentukan aturan-aturan tentang apa yang di bolehkan dalam program . contoh ,pascal tidak mengizinkan nilai karakter di beri nilai dala variable integer . pemrogram yang berpengalaman akan menemukan cara untuk keluar dari batasan ini , tetapi dalam pelaksanaannya , membuat kode tidak dapat digunakan oleh system computer lain dan sulit dibaca . Bahasa assembly , sebaliknya , memiliki sangat sedikit batasan atau aturan . Harga yang harus dibayar untuk keluluasan itu adalah berbagai kerumitan dalam pemrograman yang perlu ditangani.1. Aplikasi bahasa assemblyBiasanya kita membuat subrutin dalam bahasa assembly dan memanggilnya dari program bahasa tingkat tinggi. Keuntungan dapat diperoleh karena katanya bahasa tingkat tinggi , dengan menggunakan bahasa tingkat rendah dalam membuat aplikasi . subrutin bahasa assembly menangani operasi-operasi yang tidak tersedia dalam bahasa tingkat tinggi . Misalnya kita menulis program aplikasi bisnis dlam cobol untuk IBM-PC. Kita memerluka aplikasi untuk mengecek ruang bebas disk, membuat subdirektorionie, menulis proteksi file, dan membuat window yang overlap-semuanya dalam satu program.Missal komfilator cobol tidak dapat melakukan semuanya, kita dapat membuat subrutin bahasa assembly untuk menangani tugas-tugas tersebut. Bahasa mesin Sebelum lebih jauh secara rinci membahas bahasa assembly , mari kita lihat dalam suatu persfektif . computer kenyataannya tidak mengerti bahasa assembly . dia hanya mengikuti bahasa mesin . bahasa mesin adalah bahasa yang di bangun oleh sejumlah angka yang dapat diinterpretasikan oleh cpu computer . CPU biasanya mempunyai program kecil yang di tambahkan langsung ke dalam chip , disebut microcode.Penerjemah microcode mengubah langsung intruksi-intruksi mesin ke dalam sinyal perangkat keras. Bahasa mesin memungkinkan untuk melaksakan tugas-tugas umum oleh CPU , seperti pemindahan bilangan atau perhitungan aritmatik . berikut contoh instruksi bahasa mesin yang memindahkan angka 5 ke dalam register AL.1011000000000101Deretan angka diatas di tulis dalam biner , system penomoran yang dibangun hanya oleh angka 1 dan 0. Delapan bit pertama adalah kode operasi (opcode) yang menunjukkannya sebagai intruksi yang memindahkan angka-delapan bit ke register AL. Delapan bit kedua adalah operand. Instruksi secara keseluruhan memindahkan angka 5 kedalam register AL. Register adalah memori kecepatan tinggi yang berada didalam CPU. Register diidentifikasikan oleh nama dua huruf, seperti AH, AL, atau AX. Kumpulan instruksi (instruction set) CPU adalah sekumpulan instruksi mesin yang dapat dieksekusi CPU. Untuk keluarga CPU Intel, set instruksi adalah down-ward-compatible, artinya bahwa instruksi yang bekerja pada prosesor level yang lebih rendah akan bekerja juga pada prosesor yang lebih tinggi. Contohnya : instruksi MOV bekerja pada 8088 dan oleh karena itu harus bekerja pula pada 80286. Akan tetapi, terdapat instruksi yang lebih maju dalam 80286 yang tidak dapat bekerja pada 8088.

Low Level Language (assembly): bahasa pemrograman yang menggunakan register sebagai peyimpan data. Contoh: pemrograman untuk menghitung 5+2: MOVAL,5ADDAL,2AL adalah register

Format instruksi assembly

1. Baris pertama adalah instruksi mesin 2 alamat seperti INTEL, artinya pindahkan/isikan (MOV) ke dalam register AL bilangan 5 heksadesimal2. Baris kedua instruksi mesin 1 alamat seperti MOTOROLA, atinya pindahkan/isikan ke dalam Register A bilangan 5 heksadesimal.

Elemen Bahasa AsemblyDalam pemrograman bahasa assembly lebih ditekankan pada system operasi Microsoft Intel yang seiring dengan perkembangan mikroprosesor 8088/8086. Perkembangan bahasa assembly tergantung pada linker yang mengubah file *.obj menjadi *.exe atau *.com. Bahasa assembly dikategorikan sebagai bahasa tingkat rendah. Hal ini untuk menggambarkan spesifikasi sebagai bahasa yang berorientasipada machine dependent. Untuk membandingkan bahasa mesin dan bahasa assembly menurut karakteristik dibagi 2 bagian : Mnemonic Operation Code Simbolic Operand SpesificationSkema AssemblyProses penerjemahan secara sederhana dapat dikelompokkan dalam dua fase, yaitu: Fase Analisaa. Memisahkan label, mnemonic operation code dan operand field yang ada pada statement.b. Memasukkan symbol yang ditemukan pada label field dan alamat yang dituju machine word ke dalam symbol table.c. Melakukan validasi mnemonic operation code dengan melihat pada mnemonic tabled. Menentukan alamat yang dibutuhkan oleh statement berdasarkan pada mnemonic operation code dan operand field pada statement. Fase analisis dapat dikelompokkan menjadi beberapa tahap, yaitu :a. Lexical AnalisysLexical Analisys adalah menjalankan mikro level examination dari teksmasukan untuk mengenal lexial unit yang ada didalamnya dan menentukankategori syntax.b. Syntax AnalisysProses Syntac Analisys dilakukan terhadap descriptor dari lexical analisysuntuk menentukan struktur syntax dari statement masukan. Proses tersebutdikenal dengan PARSING. Output dari parsing adalah representasi daristruktur syntac suatu statement.c. Semantic AnalisysProses semantic analisys dapat diklasifikasikan kedalam proses declarativestatement dan proses eksekusi.

Fase Syntesisa. Menghasilkan machine operation code yang berkorespodensi dengan mnemonic operation code yang telah dicari pada mnemonic table.b. Menghasilkan alamat operand dari symbol tablec. Melakukan syntesis instruksi machine.Pada fase sysntesis dilakukan pemilihan machine operation code yang sesuai dengan mnemonic Load dan menempatkan pada machine instruction opcode field. Evaluasi korespodensi pengalamatan dilakukan untuk operand expression Result + 4.Proses AssemblyUnit dalam sources program digunakan untuk menterjemah semua bagian program. Ketika fase analisys statement program pertama kali dilakukan, maka proses LC akan dikerjakan dan symbol yang didefinisikan dalam program dimasukkan ke dalam symbol table. Untuk mengurangi pengulangan, maka hasil analisis sources statement dari first pass direpresentasikan dalam internal form pada sources statement yang disebut intermediate code. Selain membentuk intermediate code, suatu proses assembler juga membangun struktur database yang digunakan oleh subsequent pass.

Bagian Bagian Dari Program AssemblerBerikut ini adalah bagian bagian dari rogram assembler yaitu:1. Label Label merupakan suatu simbol yang didefinisikan sendiri oleh pembuat program untuk menandai lokasi memori pada area program. Simbol dan label adalah dua hal yang berbeda. Simbol tidak menggunakan titik dua, sedangkan label harus diakhiri dengan titik dua. Contoh : PAR EQU 500 ; PAR Menunjukan suatu simbol ; dari nilai 500 MULAI: MOV A, #0FFh ; pada label; Mulai nilai 0FFh ; dipindahkan ke AkumulatorDalam satu baris hanya ada satu label, pada umumnya Assembler membatasi jumlah karakter yang bisa digunakan hingga 31 karakter.2. Mnenonik Mnemonic instruksi atau pengarah Assembler dimasukan dalam Mnemonic field yang mengikuti label mnemonic. Mnemonic instruksi misalnya ADD, MOV, INC dan lain-lain.Sedangkan pengarah Assembler misalnya ORG, EQU, DB dan lain-lain.3. Operand Operand ditulis setelah mnemonic, bisa berupa alamat atau data yang digunakan instruksi yang bersangkutan. Contoh : MOV A, #20h ; A dan #20h adalah operand LAGI: JNB LAGI ; LAGI adalah operand4. Komentar Komentar harus diawali dengan titik koma. Sub rutin dari bagian besar program yang mengerjakan suatu operasi biasanya diawali dengan blok komentar yang menjelaskan fungsi sub rutin atau bagian besar program tersebut.5. End Petunjuk END merupakan kode perintah terakhir yang menunjukan batas akhir dari proses Assembly.Instruksi yang sering digunakan dalam pembuatan program yaitu :a. Instruksi Aritmatik Instruksi aritmatik selalu melibatkan akumulator dan ada juga beberapa instruksi yang melibatkan register lain.Berikut ini contoh instruksiinstruksi arimatika yaitu:

Tabel Instruksi-instruksi AritmatikInstruksiKeteranganContoh

ADD A,RnMenambah isi register Rn dengan isi akumulator lalu disimpan di akumulatorADD A,R1

ADD A, directMenambah isi direct dengan akumulator, hasilnya disimpan di akumulatorADD A, 30H

ADD A, #dataMenambahkan immediate data ke akumulatorADD A, #20H

ADD A, @RnMenambahkan isi dari alamat yang ditunjuk Rn dengan akumulatorADD A, @R1

ADDC A, #dataMenambahkan immediate data ke akumulator dengan carryADDC A, #20H

SUBB A, RnKurangkan isi register Rn dari akumulatorSUBB A, R1

INC ATambah isi akumulator dengan 1INC A

DEC AKurangkan isi akumulator denga 1DEC A

MUL ABKalikan isi A dengan isi B, low-byte disimpan pada akumulator, dan high byte pada BMUL AB

DIV ABBagi isi A dengan isi B. Akumulator menerima hasil integer pembagian dan B menerima integer sisanya.DIV AB

b. Instruksi Logika Instruksi Logika ini dipakai untuk melakukan operasi logika, yaitu operasi AND (instruksi ANL), operasi OR (instruksi ORL), operasi Exclusive-OR (instruksi XRL), operasi clear (instruksi CLR), instruksi komplemen (instruksi CPL), operasi penggeseran kanan atau kiri (instruksi RR, RRC, RL dan RLC) serta operasi penukaran data (instruksi SWAP). Data yang dipakai dalam operasi ini biasanya berupa data yang berada dalam akumulator atau data yang berada dalam memori data.c. Instruksi Pemindahan DataInstruksi instruksi pemindahan data adalah :Tabel Instruksi instruksi Perpindahan DataInstuksiKeteranganContoh

MOV A, RnMemindahkan isi register Rn ke akumulatorMOV A, R0

MOV A,directMemindahkan isi direct byte ke akumulatorMOV A, 30h

MOV A , #dataMengisi akumulator dengan nilai dataMOV A,#20h

MOV A, @RnMengisi akumulator dengan isi dari alamat yang ditunjuk oleh RnMOV A, @R0

Mode Mode Pengalamatan1. Mode Pengalamatan Langsung Dalam pengalamat langsung nilai yang akan disimpan dalam suatu memori diperoleh secara langsung dengan mengambil dari lokasi memori yang lain. Contoh : MOV A,30H ; isi akumulator dengan bilangan 30 heksadesimal2. Mode Pengalamatan Tak Langsung Dalam pengalamatan tak langsung, instruksi menentukan suatu register yang digunakan untuk menyimpan alamat operan Contoh :ADD A,R ; Tambahkan isi RAM yang lokasinya ditunjukan oleh register R1 ke akumulator.DEC @R1 ; Kurangi satu isi RAM yang alamatnya ditunjukan oleh register R1.3. Mode Pengalamatan Segera Cara ini menggunakan konstanta.Contoh : MOV A,#20H ; isi akumulator dengan bilangan 20 heksadesimalData konstanta merupakan data yang menyatu dengan instruksi, contoh intruksi diatas mempunyai arti bahwa data konstantanya, yaitu 20H, (sebagai data konstanta harus diawali dengan # dan tanda H untuk menyatakn format bilangan heksadesimal) disalin ke Akumulator (A).4. Mode Pengalamatan Data Pengalamatan data terjadi pada sebuah perintah ketika nilai operasi merupakan alamat data yang akan diisi atau yang akan dipindahkan. Contoh :MOV P1,A ; isi P1 dari nilai akumulator.5. Mode Pengalamatan Bit Pengalamatan bit adalah penunjukkan menggunakan simbol titik (.) yang menunjuk alamat lokasi bit, baik dalam RAM internal atau perangkat keras. Contoh : SETB P1.7 ; set bit port 1.7 high ( pot 1.7 diberi nilai logika 1)

2. Contoh Bahasa Assembly :

Berikut adalah Contoh Sederhana Bahasa Pemrograman Assembly

.MODEL SMALL.CODEORG 100H

AWAL:MOV CL,30HJMP PROSESKAL0 DB 'Ketikkan satu kalimat:$'KAL1 DB 13,10,'Kalimat yang diinput adalah:$'KAL2 DB 13,10,'Cetak dari belakang:$',13,10KAL3 DB 13,10,'panjang string adalah:$'KALX DB 13,10,'$'KAL4 DB 13,10,'Jumlah Huruf Vokal:$'KAL5 DB 13,10,'Jumlah Huruf Konsonan:$'KATA DB 20,?,20 DUP (?)

VOKAL: INC CLJMP PLUS

PROSES:;============= CETAK STRING ================

MOV AH,09HMOV DX,OFFSET KAL0INT 21H

;============= INPUT STRING ================

MOV AH,0AHLEA DX,KATAINT 21H

;============= CETAK STRING ================

MOV AH,09HMOV DX,OFFSET KAL1INT 21H

;============ CETAK VARIABEL STRING DG MODEL COMPARASI ==========

MOV BX,OFFSET KATA+2

CETAK:MOV DL,[BX]CMP DL,0DHJE BELAKANG

MOV AH,02HINT 21H

CMP DL,'a'JE VOKALCMP DL,'i'JE VOKALCMP DL,'u'JE VOKALCMP DL,'e'JE VOKALCMP DL,'o'JE VOKALCMP DL,'A'JE VOKALCMP DL,'I'JE VOKALCMP DL,'U'JE VOKALCMP DL,'E'JE VOKALCMP DL,'O'JE VOKAL

PLUS:INC BXJMP CETAK

;============= CETAK KATA DARI BELAKANG ==================

BELAKANG:MOV AH,09HMOV DX,OFFSET KAL2INT 21HMOV AH,09HMOV DX,OFFSET KALXINT 21H

CETAK1:MOV DL,[BX]CMP DL,KATA+1JE VOKAL1

MOV AH,02HINT 21HDEC BXJMP CETAK1

;============ CETAK JUMLAH VOKAL ================

VOKAL1:MOV AH,09HMOV DX,OFFSET KAL4INT 21H

MOV DL,CL;ADD DL,30HMOV AH,02HINT 21H

;============ CETAK JUMLAH KONSONAN ===============

KONSONAN:MOV AH,09HMOV DX,OFFSET KAL5INT 21H

MOV BX,OFFSET KATA+1MOV DL,[BX]ADD DL,30HSUB DL,CLADD DL,30HMOV AH,02HINT 21H

;============= CETAK PANJANG STRING ================

AKHIR:MOV AH,09HMOV DX,OFFSET KAL3INT 21H

MOV BX,OFFSET KATA+1MOV DL,[BX]ADD DL,30HMOV AH,02HINT 21H

SELESAI:INT 20H

END AWAL

Berikut ini adalah list coding bahasa assembly untuk pembuatan password.org 100hjmp mulaiexit:mulai:mov dx,offset msg

mov ah,9

int 21h

mov ah,1

int 21h

mov bl,al

mov ah,1

int 21h

mov cl,al

mov ah,1

int 21h

mov dl,al

mov ah,1

int 21h

cmp bl,6ch

je sukses

jmp salah:

cmp cl,6fh

je sukses

jmp salah

cmp dl,76h

je sukses

jmp salah

cmp al,65h

je sukses

jmp salah

salah:

mov dx,offset msg5

mov ah,9

int 21h

mov dx,offset msg6

mov ah,9

int 21h

jmp exit

sukses:

mov dx,offset msg2

mov ah,9

int 21h

mov dx,offset msg3

mov ah,9

int 21h

mov dx,offset msg4

mov ah,9

int 21h

ret

msg db 0dh,0ah, Silahkan masukkan password:,0dh,0ah,$

msg2 db 0dh,0ah, ========>>>>Keyword SuccessPassword SuksesComplete