TUGAS 1

[menuju akhir]

 1. Tujuan [Kembali]

  • Mampu memahami dan membuat bahasa assambler menggunakan emu8086
  • Dapat membuat program untuk menulis dan membaca input bahasa assambler

2. Alat dan Bahan [Kembali]

  • Software Emu 8086   


Untuk membantu dalam memahami atau penyesuaikan alur kerja program yang diinginkan maka dapat dilakukan dengan bantuan emulator emu86. Pada emulator ini ada menu emulate untuk 16 menjalankan program dengan dua pilihan yaitu single step untuk eksekusi per baris instruksi atau Run untuk eksekusi keseluruhan instruksi sampai akhir program.

                Dalam “emu8086” terdapat beberapa menu, antara lain:

  • Emulate : untuk menjalankan emulator kode program yang kita buat
  • Compile : untuk membuat (compile) “binary executable file” atau ekstensi “.com” atau                                 “.exe” dari kode program.
  • Run : menjalankan aplikasi dari emulator yang dihasilkan (execute).
  • Single Step : Menjalankan aplikasi dengan cara tracing (diproses perbaris kode program).

3. Dasar Teori [Kembali]

A. Teori Bahasa Assembler

        Dalam bahasa tingkat rendah tidak dibutuhkan struktur program karena semuanya diserahkan kepada pemakai yaitu register.

    Register adalah sebagian kecil memori komputer yang dipakai untuk tempat penampungan data. Sebagian besar register yang terdapat pada mikroprosessor 8088 adalah 16 bit.

    Ada 5 kelompok register, yaitu:

    1. General Purpose Register

            General Purpose Register dapat dibagi menjadi register low dan high bits, yang masing-masing  berkemampuan 8 bit. Seperti register AX, register low-nya adalah AL dan register high-nya adalah AH.

            Ada empat macam General Purpose Register yaitu:

        a. Register AX (AX+AL) atau Accumulator Register adalah register aritmatik untuk dipakai dalam operasi pertambahan, pengurangan, perkalian, dan pembagian. Register AH dapat juga digunakan untuk tempat kembali nilai service number untuk beberapa interrupt tertentu.

        b. Register BX (BH+BL) atau Base Register adalah salah satu dari dua register base Addressing mode, yang dapat mengambil atau menulis langsung dari/ke memori.

        c. Register CX (CH+CL) atau Counter Register adalah suatu counter untuk meletakkan jumlah lompatan pada loop yang dilakukan.

        d. Register DX (DH+DL) atau Data Register mempunyai tiga tugas, yaitu:

    • Membantuk AX dalam proses perkalian dan pembagian, terutama perkalian dan pembagian 16 bit.
    • DX merupakan register offset dari DS
    • DX bertugas menunjukkan nomor port pada operasi port


    2.  Segment Register

        a. CS (Code Segment) Register berfungsi untuk menunjukkan segment, program yuang berapa dengan pasangan register ini adalah register IP

        b. DS (Data Segment) Register berfungsi untuk menunjukkan segment dari segment data. Pasangan dari DS adalah DX

        c. SS (Stack Segment) Register berfungsi untuk menunjukkan segment dari segment stack. Pasangan dari SS adalah SP.

        d. ES (Extra Segment) Register berfungsi untuk pemograman pada saat melakukan operasi ke segment lain.


    3. Pointer Register berfungsi untuk menyimpan offset dari relative address

        a.  IP (Insturction Pointer) Register berfungsi untuk menunjukkan baris perintah program. Pada saat program pertama dijalankan register akan langsung menunjuk pada awal program.

        b. SP (Stack Pointer) Register adalah merupakan pasangan SS yang digunakan untuk operasi stack. Pada saat pertama program dijalankan register ini akan menunjuk pada byte terakhir stack.

        c. BP (Base Pointer) Register mempunyai fungsi yang sama dengan register BX tetapi BX untuk menulis dan membaca segment DS (Data Segment) sedangkan BP menulis dan membaca segment SS(Stack Segment).


    4. Index Register yaitu SI (Source Index) dan DI (Destination Index) 

        Berfungsi untuk melakukan operasi STRING. Namun demikian, kedua register ini sering digunakan untuk menulis dan membaca dari atau ke memori seperti halnya BX dan BP.


    5. Flag Register berfungsi untuk mengecek apakah program berfungsi atau tidak. Contohnya :

        a. Interrupt Flag, untuk mengecek apakah pada saat operasi Interrupt sedang aktif atau tidak, jika tidak aktif maka Interrupt tidak akan dijalankan.

        b. Carry Flag, untuk mengecek apakah saat operasi terjadi kesalahan atau tidak.

        c. Sign Flag, untuk menunjukkan apakah suatu bilangan bertanda atau tidak dan sebaliknya.


B. PERINTAH DASAR ASSEMBLER

    1. MOV

        Adalah perintah untuk mengisi, memindahkan atau memperbaharui isi suatu register, variabel atau suatu lokasi memori.

        Syntax : MOV[operand1],[operand2]

        a. operand1 berupa register, variabel, lokasi memori

        b. operand2 berupa register, variabel, lokasi memori ataupun bilangan

        Contoh : 

        MOV AH,AL    ; mengkopi isi register AL ke register AH

        MOV AH,02    ; mengisi register AH dengan 02


    2. Int (Interrupt)

        Subrotine yang akan dipanggil setelah tersedia pada memori komputer.

        Ada dua jenis yaitu :

        a. BIOS Interrupt yaitu 0H hingga 1FH yang disediakan oleh BIOS (Basic Input Output System).

            Contoh : Int 16H service 1FH berfungsi untuk mengecek apakah ada tombol keyboard yang ditekan.

        b. DOS Interrupt yaitu Int 1FH keatas yang disediakan oleh DOS (Disk Operating System).

            Contoh : Int 20H berfungsi menghentukan kerja suatu program.


C. Int 21h service 0Ah

Int 21h adalah salah satu Int yang termasuk DOS Interrupt, karena INT 21h mempunyai banyak sekali tugas, maka tugasnya dibagi-bagi menjadi beberapa bagian. Untuk memanggil bagian-bagian itu perlu    menyertakan nomor bagiannya yang disebut juga service number. Contoh 21h yang bertugas mencatak sebuah huruf ke layar yaitu fungsi kedua dari Int 21h.

Service 0AH digunakan untuk melakukan input dengan lebih dari 1 karakter, dengan syarat register harus berisikan service number dari 21H tersebut.

Service 09H digunakan untuk mencetak huruf ke layar, untuk penggunaannya diakhiri dengan tanda dolar '$'

4. Percobaan [Kembali]





Listing Program :

;PROGRAM MENULIS DAN MEMBACA MEMORI
;Program isikan Nomor Induk Mahasiswa (NIM)
    Start: JMP MULAI
    TANYA db 'NIM Anda?:',13,10, '$'
    NIM db 11,?,11 DUP(?)
    JAWAB db 13,10, 'NIM:$'
    MULAI: MOV AH,09H
        MOV DX, OFFSET TANYA
        INT 21H                 ;MENCETAK TANYA
        MOV AH,0AH
        MOV DX, OFFSET NIM
        PUSH DX                 ; MENYIMPAN DX KE STACK
        INT 21H                 ; INPUT DARI KEYBOARD
        MOV BX,OFFSET NIM
        INC BX                  ; MENUNJUK KEPADA INDIKATOR (mm)
                                ; BEBERAPA HURUF YANG TELAH DIMASUKKAN
        MOV DL,[BX]             ; MASUKKAN [BX] KE DX
        XOR DH,DH
        INC BX                  ; menunjuk kepada awal kata yang dimasukkan
        ADD BX,DX               ; supaya menunjuk kepada huruf terakhir masukan
        MOV DL,'$'              ; mengganti ODh dengan '$' supaya bisa dicetak
        MOV [BX],DL             ; MASUKAN DL KE [BX]
        MOV DX, OFFSET JAWAB
        MOV AH,09H
        INT 21H                 ; CETAK JAWAB
        POP DX                  ; AMBIL DX DARI STACK
        INC DX
        INC DX                  ; menambahkannya dengan 2 supaya menunjuk kepada awal masukan
        
        MOV AH,09H              ; CETAK NILAI
        INT 21H
        MOV AH,4CH 
        INT 21H

5. Video Simulasi [Kembali]

6. Download File [Kembali]

    a. Download program klik disini

    b. Video penjelasan 

    c. Datasheet Intel 8086 klik disini

    e. Program Emu8086  klik disini

    f. Kode HTML 


[menuju awal]

Tidak ada komentar:

Posting Komentar

ELEKTRONIKA

 BAHAN PRESENTASI UNTUK MATA KULIAH  ELEKTRONIKA C Disusun Oleh : Abdul Hadi Aldoreza 2210952008 Dosen Pengampu : Dr. Darwison, M.T JURUSAN ...