Bahasa Assembly

  • Published on
    01-Feb-2016

  • View
    7

  • Download
    0

Embed Size (px)

DESCRIPTION

Modul

Transcript

  • Bahasa Pemrograman AssemblyOleh:Yasir Hasan, S.Kom

  • PendahuluanBahasa Assembly (Low Level Language). tahun 1950. Mikrokontroler adalah sistem yang dapat membaca intruksi-intruksi signal analog dalam memori yang dipresentasikan dari kombinasi biner (binary numeric) 0 dan 1 Mikroprosessor adalah sistem yang mampu mengolah data aritmatika, logika dan kontrol dari komputer general purpose. Mikroprosessor terdiri dari rangkaian terpadu tunggal yang memiliki ribuan gerbang digital.Proses eksekusi Aritmatika yaitu penjumlahan, pengurangan, perkalian dan pembagian sistem bilanganProses eksekusi Logika yaitu AND, OR, XOR dan NOT.Unit Control yaitu pengerbangan logika yang diperlukan untuk aliran instruksi dan data

  • Mikroprocessor Arsitektur Mesin Von NeumannHal-hal yang perlu dilakukan CPU adalah:Membaca, mengkodekan dan mengeksekusi instruksi program Mengirim data dari dan ke memori, serta dari dan ke bagian input/output.Merespon interupsi dari luar, menyediakan clock dan sinyal kontrol kepada sistemBus Jalur transfer data yang mengghubungkan antar setiap DiviceRegister Bagian dari memori CPU untuk menyimpan intruksi-intruksi CPUAddress Lines Penghubung komunikasi CPU dengan chip memoryControl Lines Jalur akses (interrupt) alamat ke register di CPU

  • Program disimpan dalam unit memori utama yang berhadapan dengan piranti I/O melalui CPU. CPU membaca dari atau menulis ke memori dengan mengirimkan alamat word ke unit memori melalui bus address kemudian menerima atau mengirimkan data melalui bus data. Data dipertukarkan antara CPU dan Unit I/O juga dengan menggunakan bus data. Operasi disinkronisasikan oleh dua bus control dengan sinyal kendali yang dikirimkan oleh CPU dan sinyal acknowledgment serta sinyal interupsi yang diterima oleh CPUArsitektur Mesin Von Neumann

  • Arithmatic and Logic Unit (ALU), adalah salah satu bagian/komponen dalam sistem di dalam sistem komputer berfungsi melakukan perasi/perhitungan aritmatika dan logika (seperti penjumlahan, pengu-rangan dan beberapa logika lain), ALU bekerja bersama-sama memori. Dimana hasil dari perhitungan di dalam ALU di simpan ke dalam memori

  • Type Processor Intel

  • Generasi Pentium

  • Pembagian Memori

  • Pengalamatan Memory dengan segment : offset Menentukan segmentLebar data processor = 2 pangkat lebar data processormis : processor 16 bit 216 64 KB 65536 Bytejika memory 1 MB = 1024 KBmaka besar memory dibagi oleh hasil data processor1024 : 64 = 16 segment 64 adalah besaran 1 segment diambil dari lebar data processorMenentukan offset dalam 1 segment terdapat dari 216 offset (65536) 0000h FFFFhnomor offset diukur dari awal suatu segment

  • Letak segment dalam memory

  • Pembacaan segment : offsetSegmen 0000h berawal dari lokasi memori 0 hingga 65535 ( 64 KB ). Segmen 0001h berawal dari lokasi memori 16 (0010h) hingga 65551 (65535 + 16). Segmen 0002h berawal dari lokasi 32 hingga 65567. Demikian seterusnya. Sistem penempatan segmen semacam ini akan menyebabkan terjadinya overlapping (tumpang-tindih) di mana lokasi offset 0010h bagi segmen 0000h akan merupakan offset 0000h bagi segmen 0001h. Demikian pula offset 0011h bagi segmen 0000h akan merupakan offset 0001h bagi segmen 0001h. Ada banyak nilai segmen:offset yang dapat digunakan untuk menyatakan suatu alamat memori tertentu disebabkan adanya overlapping ini

  • Konversi AlamatAlamat yang menggunakan sistem segmen : offset disebut sebagai alamat relatif karena sifat offset yang relatif terhadap segmen. Sedangkan alamat memori yang sebenarnya disebut alamat absolut.Geser nilai segment 4 bit kiri atau kalikan nilai segment dengan 24 lalu jumlahkan dengan nilai offset,

    Alamat relatif : 1357h:2468h 1356h:2478h 13570 13560 2468 2478 ------- ------- Alamat absolut : 159D8h 159D8h

  • MemoryRegister merupakan sebagian memori dari mikroprosesor yang dapat diakses dengan kecepatan yang sangat tinggi. Dalam melakukan pekerjaannya mikroprosesor selalu menggunakan register-register sebagai perantaranya, jadi register dapat diibaratkan sebagai kaki dan tangannya mikroprosesor

  • Jenis-jenis registerSegment RegisterPointer & Index RegisterGeneral Purpose RegisterIndexs Pointer RegisterFlag Register

  • Segment Register (16 bit)digunakan untuk menunjukkan alamat dari suatu segmen

    Register CS (Code Segment)Digunakan untuk menunjukkan tempat dari segmen yang sedang aktifRegister SS (Stack Segment) Menunjukkan letak dari segmen yang digunakan oleh stack. Kedua register ini sebaiknya tidak sembarang diubah karena akan menyebabkan kekacauan pada program anda nantinya. Register DS (Data Segment) Digunakan untuk menunjukkan tempat segmen dimana data-data pada program disimpan. Umumnya isi dari register ini tidak perlu diubah kecuali pada program residen. Register ES (Extra Segment)Register bonus yang tidak mempunyai suatu tugas khusus. Register ES ini biasanya digunakan untuk menunjukkan suatu alamat di memory, misalkan alamat memory video. Pada prosesor 80386 terdapat tambahan register segment 16 bit, yaitu FS dan GS.

  • 2.Pointer dan Index Register. (16 bit) Digunakan sebagai penunjuk atau pointer terhadap suatu lokasi di memory.

    Register SP(Stack Pointer) Berpasangan dengan register segment SS(SS:SP) digunakan untuk mununjukkan alamat dari stackRegister BP(Base Pointer) Berpasangan dengan register SS(SS:BP) mencatat suatu alamat di memory tempat data. Register SI(Source Index) dan Register DI(Destination Index) Digunakan pada operasi string dengan mengakses secara langsung pada alamat di memory yang ditunjukkan oleh kedua register ini. Pada prosesor 80386 terdapat tambahan register 32 bit, yaitu ESP,EBP,ESI dan EDI.

  • 3.General Purpose Register (16 bit). Register- register dipisah menjadi 2 bagian dimana masing-masing bagian terdiri atas 8 bit, seperti pada gambar 4.1. Akhiran H menunjukkan High sedangkan akhiran L menunjukkan LowRegister AX, secara khusus digunakan pada operasi aritmatika terutama dalam operasi pembagian dan pengurangan. Register BX, biasanya digunakan untuk menunjukkan suatu alamat offset dari suatu segmen. Register CX, digunakan secara khusus pada operasi looping dimana register ini menentukan berapa banyaknya looping yang akan terjadi. Register DX, digunakan untuk menampung sisa hasil pembagian 16 bit.

    Pada prosesor 80386 terdapat tambahan register 32 bit, yaitu EAX,EBX,ECX dan EDX.

  • Skema General Purpose Register

  • 4.Index Pointer Register (16 bit)Register IP (instruction Pointer) berpasangan dengan CS(CS:IP) menunjukkan alamat dimemory tempat dari intruksi (perintah) selanjutnya yang akan dieksekusi. Register IP juga merupakan register 16 bit. Pada prosesor 80386 digunakan register EIP yang merupakan register 32 bit

  • 5.Flags Register. Flags(Bendera) register ini menunjukkan kondisi dari suatu keadaan< ya atau tidak >. Karena setiap keadaan dapat digunakan 1 bit saja, maka sesuai dengan jumlah bitnya, Flags register ini mampu memcatat sampai 16 keadaan. Flag yang terdapat pada mikroprosesor 8088 keatas adalah : OF . Jika terjadi OverFlow pada operasi aritmatika, bit ini akan bernilai 1. SF . Jika digunakan bilangan bertanda bit ini akan bernilai 1 ZF . Jika hasil operasi menghasilkan nol, bit ini akan bernilai 1. CF . Jika terjadi borrow pada operasi pengurangan atau carry pada penjumlahan, bit ini akan bernilai 1. PF . Digunakan untuk menunjukkan paritas bilangan. Bit ini akan bernilai 1 bila bilangan yang dihasilkan merupakan bilangan genap. DF . Digunakan pada operasi string untuk menunjukkan arah proses. IF . CPU akan mengabaikan interupsi yang terjadi jika bit ini 0. TF . Digunakan terutama untuk Debugging, dengan operasi step by step. AF . Digunakan oleh operasi BCD, seperti pada perintah AAA. NT . Digunakan pada prosesor 80286 dan 80386 untuk menjaga jalannya interupsi yang terjadi secara beruntun. IOPL . Flag ini terdiri atas 2 bit dan digunakan pada prosesor 80286 dan 80386 untuk mode proteksi

  • Pada prosesor 80286 dan 80386 keatas terdapat beberapa tambahan pada flags register, yaitu : PE . Digunakan untuk mengaktifkan mode proteksi. flag ini akan bernilai 1 pada mode proteksi dan 0 pada mode real. MP . Digunakan bersama flag TS untuk menangani terjadinya intruksi WAIT. EM . Flag ini digunakan untuk mensimulasikan coprosesor 80287 atau 80387. TS . Flag ini tersedia pada 80286 keatas. ET . Flag ini digunakan untuk menentukan jenis coprosesor 80287 atau 80387. RF . Register ini hanya terdapat pada prosesor 80386 keatas. VF . Bila flag ini bernilai 1 pada saat mode proteksi, mikroprosesor akan memungkinkan dijalankannya aplikasi mode real pada mode proteksi. Register ini hanya terdapat pada 80386 keatas

  • InterruptInterrupt adalah permintaan kepada microprocessor untuk melakukan suatu perintah. Ketika terjadi permintaan interupsi, microprocessor akan menghentikan proses yang sedang berlangsung dan segera mengeksekusi interrupt handler , yaitu suatu program yang melayani interupsi Interrupt handler tercatat dalam memori dalam bentuk array yang besar elemennya masing-masing terdiri dari 4 byte yaitu 2 byte pertama untuk kode offset dan 2 byte selanjutnya untuk kode segment. Array ini disebut vektor interupsi disusun berdasarkan nomor interupsi yaitu dari hexa. Selain itu, dikenal juga istilah service dan subservice, maksudnya adalah bahwa setiap interrupt itu dibagi menjadi beberapa bagian yang mempunyai tugas masing-masing

  • 4 byte array terdiri dari 256 elemen masing-masingTotal pemakaian memory 256 x 4 =1024 1 KB dalam memory absolut 0000h 3FFhArray 1 KB disebut Interupt Vector Table (Tabel Vektor Interupsi)

  • Interrupt t