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:
- 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).
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.
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
- 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
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