Bahasa Assembly
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,5nilai 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
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.
Programnya
;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

Komentar
Posting Komentar