OPERASI STACK
Pengertian Operasi Stack
Stack (tumpukan) adalah bagian memori yang digunakan untuk menyimpan nilai dari register hanya sementara saja. Pada stack digunakan pasangan SS:SP untuk menunjukkan lokasi dari stack. Perintah yang digunakan adalah PUSH (menaruh ke dalam stack), dan POP (mengambil data dari stack).
Instruksi PUSH untuk operasi stack
Merupakan instruksi untuk memasukkan data ke dalam stack (tumpukan). Data berasal dari data mentah, register atau isi lokasi memori
Sintaks: PUSH reg
PUSH [lokasi memori]
PUSH data
Contoh:
PUSH BX ; menyimpan isi BX ke stack (16 bit)
PUSH EAX ; menyimpan isi EAX ke stack (32 bit)
PUSH [DI] ; menyimpan isi dari lokasi memori beralamat di
[DSx10h+DI] ke stack
PUSH 12h ; menyimpan data 12h ke stack
Instruksi POP
Merupakan instruksi untuk mengambil kembali data dari stack (kebalikan PUSH) ke dalam register atau lokasi memori
Sintaks: POP reg
POP [alamat]
POPF ;mengambil isi stack dan ditempatkan di reg flag
Contoh:
POP BX ;mengambil isi stack dan ditempatkan di BX
POP [DI] ;mengambil isi stack dan ditempatkan ke alamat DS:DI
Berikut ini contoh program lengkap untuk operasi stack:
;Cara kerja stack
.model small
.code
org 100h
MULAI: JMP START
KAL DB ‘STMIK BS$’
TUKAR DB 13,10,’$’
Stacks DW ?
START: LEA DX, KAL
MOV Stacks, DX
MOV AH, 09h
LEA DX, TUKAR
INT 21h
MOV DX,Stacks
INT 21h
INT 20h
END MULAI
Dari contoh program di atas kita modifikasi menjadi:
.model small
.code
org 100h
MULAI: JMP START
KAL DB ‘STMIK BS$’
TUKAR DB 13,10,’$’
START: LEA DX, KAL
PUSH DX
MOV AH,09h
INT 21h
LEA DX, TUKAR
INT 21h
POP DX
INT 21h
INT 20h
END MULAI
Instruksi PUSHF
Merupakan instruksi untuk memasukkan isi register flag ke dalam stack
Sintaks: PUSHF
Perpindahan data selain MOV
Beberapa instruksi perpindahan data selain memakai MOV meliputi: PUSH, POP, XCHG, LEA, perpindahan data string (LODS, STOS dan MOVS)
Aturan penulisan operasi perpindahan data (sintaks)
Instruksi XCHG (exchange)
Berfungsi untuk menukarkan isi register dengan register lain atau isi register dengan isi lokasi memori. Tidak berlaku untuk antar lokasi memori.
Sintaks: XCHG reg, reg
XCHG reg, [alamat]
Contoh:
XCHG AX, BX ;menukar isi AX dengan BX
XCHG DX, [DI] ;menukar isi DX dengan isi lokasi memori DI
XCHG [SI], CH ;menukar isi lokasi memori dengan CH
ADS HERE !!!