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
  1. 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

Postingan Populer