Kamis, 13 Juli 2017

BAHASA ASSEMBLY "EMU8086"

PEMROGRAMAN BAHASA ASSEMBLY MENGGUNAKAN “EMU8086”

Emu8086 merupakan aplikasi emulator bagi pemrograman bahasa assembler atau mikrokontroler. Dengan menggunakan aplikasi emulator, kita dapat mensimulasikan apakah program kontrol hardware yang kita buat sudah benar atau masih salah.
Dalam “emu8086” terdapat beberapa menu, antara lain:
  1. Emulate : untuk menjalankan emulator kode program yang kita buat
  2. Compile : untuk membuat (compile) “binary executable file” atau ekstensi “.com” atau “.exe” dari kode program.
  3. Run : menjalankan aplikasi dari emulator yang dihasilkan (execute).
  4. Single Step : Menjalankan aplikasi dengan cara tracing (diproses perbaris kode program).
Memulai pemrograman bahasa Assembler terdiri dari beberapa kode operasi code (op code) dan pseudo ops. Bentuk instruksinya adalah op code diikuti operand. Opcode adalah perintah yang akan dilaksanakan, sedangkan operand dpaat terdiri dari sumber (source) dan tujuan (destination).

PENGGUNAAN "EMU8086"
 include emu8086.inc
ORG 100h
PRINT "Hello World"
Gotoxy 10,5
PUTC 65
PUTC 'B'
RET
END

>>> STACK

Stack adalah suatu area di memori yang menyimpan data sementara. Stack digunakan dengan instruksi CALL untuk menyimpan  alamat  yang  dikembalikan  pada  prosedur, instruksi   RET   mengambil   nilai   ini   dari   stack   dan mengembalikannya ke offset. Stack menggunakan algoritma LIFO (Last In First Out) artinya jika kita push nilai satu per satu kedalam stack : 1,2,3,4,5 nilai pertama yang dapat kita pop adalah 5, lalu 4,3,2, dan terakhir 1

>>> Contoh program STACK

ORG 100h

MOV AX,1234h
PUSH AX ; simpan nilai AX di stack

MOV AX,5678h ; modify nilai AX

POP AX ; kembalikan nilai original AX

RET
END

>>> Contoh program STACK - kedua

ORG 100h

MOV AX,1212h   ; modify nilai AX
MOV BX,3434h  ; modify nilai BX

PUSH AX      ; nilai AX dimasukkan ke stack
PUSH BX      ; nilai BX dimasukkan ke stack

POP AX    ; nilai AX dikeluarkan dari stack
POP BX    ; nilai BX dikeluarkan dari stack

RET
END

>>> Membuat Sistem Operasi Sendiri

Biasanya, saat komputer dihidupkan akan mencoba me-load 512-byte sector pertama (Cylinder 0, Head 0, Sector 1) dari disk drive, misal A: ke lokasi memori 0000h:7C00h dan memberikan kontrolnya. Jika gagal BIOS mencoba menggunakan MBR dari hard drive primer. Dalam bagian ini akan mencoba mengcover booting dari sebuah floppy drive, dengan prinsip yang sama dapat juga dilakukan di harddisk. 
Menggunakan floppy memiliki beberapa keuntungan :
- OS kita tetap utuh(windows, dos, linux, unix, be-os...)
- Mudah dan aman memodifikasi boot record pada floppy disk.

>>> Program dari sistem operasi sendiri

;directive utk membuat BOOT file:
#make_boot#

;Boot record di load di 0000:7C00
;informasikan compiler utk membuat permintaan yg benar
 
ORG 7C00h

PUSH CS ; yakinkan DS=CS
POP DS

LEA SI,msg ; load alamat message ke register SI

MOV AH, 0Eh ; teletype id fungsi

print : MOV AL,[SI]
        CMP AL,0
        JZ done
        INT 10h ;cetak dg teletype
        JMP print

done : MOV AH, 0  ; tunggu utk 'any key'
       INT 16h

MOV AX, 0040h
MOV DS,AX
MOV w.[0072h], 0000h ; cold boot

JMP 0FFFFh:0000h  ;reboot

new_line EQU 13,10
msg DB 'Helo ini boot program saya yg pertama'
DB new_lne, 'Tekan sembarang tombol utk reboot',0