Apa itu STACK ?



Bahasa Rakitan
Pengertian STACK dan contoh programnya.


Apa itu 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 :
  • Contoh pertama         
            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 kedua
            ORG 100h
            MOV AX,1212h
            MOV BX,3434h
            PUSH AX
            PUSH BX
            POP AX
            POP BX
            RET
            END

 Note : Setelah tanda titik koma merupakan penjelasan fungsi dari skrip didepannya.


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

Menggunakan floppy memiliki beberapa keuntungan:
- OS kita tetap utuh(windows, dos, linux, unix, be-os...)
- Mudah dan aman memodifikasi boot record pada floppy disk..


Membuat Sistem Operasi Sendiri (Lanjutan..) 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


 

Thank you for looking at my blog. Semoga bermanfaat ..............................

Komentar