Está en la página 1de 21

Operasi Stack

1. Pendahuluan
Secara umum stack adalah tempat peletakkan sementara
register. Stack pada file COM terdapat di akhir segment
dan ketika pertama kali dijalankan program penunjuk
stack (SP) akan langsung ke byte membuat stack sendiri.
Sedang pada EXE harus membuat stack sendiri dan
mengalihkan penunjuk stack ke tempat yang telah dibuat.
Adapun contoh pengefisienan operasi stack
pada pembuatan program dapat dilihat pada
saat membuat program mencetak huruf A
hingga Z dengan diselingi spasi pada setiap
huruf bila tidak memakai operasi stack, program
akan berbentuk
No Program sumber No Program sumber
program (source program) program (source program)

1. MOV AH, 02 6. MOV DL, 20

2. MOV CX, 1A 7. MOV DL, BL


3. MOV DL,41 8. INC DL
4. INT 21 9. LOOP 107
5. MOV BL, DL 10. INT 20

Program 1. STACK.COM Tanpa Operasi Stack


Pada saat MOV BL,DL di baris ke 5, digunakan
untuk melakukan penyelamatan isi register DL
ke register BL supaya isi dari register DL (41
hexa) tidak hilang , kemudian di install kembali
pada saat MOV DL, BL di baris ke 7 dan
ditambah 1 pada INC DL di baris 8.
Pada prinsip begitulah kira-kira kerja dari
operasi stack. Namun pada operasi stack
penyelamatan tidak diletakkan pada register/
variabel melainkan pada stack.
2. Perintah Stack

Operasi stack mempunyai 2 fungsi yaitu fungsi


untuk memasukkan isi suatu register/ variabel ke
stack dan mengeluarkan isi register / variabel
dari stack.
Adapun perintah untuk memasukkan isi register
pada stack adalah perintah PUSH dengan
bentuk umum penulisan :
PUSH [operand 16 bit ]
Jadi untuk perintah PUSH harus digunakan
register 16 bit yang bisa berupa register 16 bit
ataupun variabel 16 bit.
Selain perintah PUSH, masih terdapat satu
macam perintah pemasukan ke stack yaitu
PUSHF yang digunakan untuk memasukkan
Flag Register ke dalam stack untuk
mengamankan Flag Register supaya tidak
berubah (bila diperlukan untuk operasi
berikutnya).
Perintah lain untuk operasi stack adalah perintah
yang berfungsi untuk mengeluarkan isi stack ke
sebuah register atau variabel yang mempunyai
tata penulisan sebagai berikut:
POP [operand 16 bit ]
Dan perintah pengeluaran isi stack ke Flag
Register adalah : POPF.
Berikut contoh program menggunakan operasi
stack, maka dapat ditulis sebagai berikut :
No Program sumber No Program sumber
program (source program) program (source program)
1. MOV AH, 02 6. MOV DL, 20
2. MOV CX, 1A 7. POP DX
3. MOV DL,41 8. INC DL
4. INT 21 9. LOOP 107
5. PUSH DX 10. INT 20
3. Cara Kerja Stack
Sebelum membahas operasi stack lebih lanjut,
dibawah ini ada sedikit program tentang cara
kerja stack sebagi berikut :
No program Program sumber No program Program sumber
(source program) (source program)
1. MOV CX, 0009 6. PUSH CX

2. MOV DL, 31 7. MOV CX, 001A


3. MOV AH, 02 8. MOV DL, 61

4. INT 21 9. INT 21
5. PUSH DX 10. INC DL
No Program sumber No program Program sumber
program (source program) (source program)
11. LOOP 0110 16. POP CX
12. MOV DL, 0D 17. POP DX
13. INT 21 18. INC DL
14. MOV DL, 0A 19. LOOP 0107

15. INT 21 20. INT 20


Pada program di atas akan menghasil output pada
layar seperti gambar 1.
1abcdefghijklmnopqrstuvwxyz
2abcdefghijklmnopqrstuvwxyz
3abcdefghijklmnopqrstuvwxyz
4abcdefghijklmnopqrstuvwxyz
5abcdefghijklmnopqrstuvwxyz
6abcdefghijklmnopqrstuvwxyz
7abcdefghijklmnopqrstuvwxyz
8abcdefghijklmnopqrstuvwxyz
9abcdefghijklmnopqrstuvwxyz
Pada baris ke 5 dan 6 terlihat bahwa sedang
melakukan operasi penyimpanan register ke stack
dan baris 16 mengambil isi stack menggunakan
perintah POP.
Bila digambarkan stack pada akhir segment, dapat menunjukkan
bahwa ketika melakukan PUSH terhadap register DX yang
seandainya berisikan bilangan 0021 hexa, maka pada stack akan
terlihat

PSP 0000

0100
PROGRAM
Penunjuk (SP) 99 00 FFFD
21 00
FFFB
00 00
FFFF
Pada saat perintah PUSH CX dengan register CX
berisikan angka 0009, maka akan terlihat di stack
sebagai berikut :
PSP 0000

0100
PROGRAM
Penunjuk (SP)
09 00
FFFB
21 00
FFFD
00 00
FFFF
Pada saat perintah POP CX, keadaan stack akan
kembali lagi pada tampilan stack pertama.
Sedangkan pada saat melakukan POP pada
tampilan stack akan kosong dan tinggal 0000 yang
merupakan awal stack.
Dari pembayangan di atas dapat disimpulkan
bahwa pada operasi stack yang pertama masuk
adalah yang terakhir keluar dari stack dan yang
terkahir masuk ke stack, maka dialah yang
pertama keluar dari stack. Sistem demikian sering
disebut dengan LIFO (Last In First Out)
SOAL-SOAL
1. Pada file apakah letak stack diakhir segment :
a. COM c. EXE
b. BAT d. DLL

2. Instruksi untuk memasukkan isi register ke stack :


a. POP c. MOV
b. PUSH d. DEC
2. Instruksi untuk memasukkan isi register ke stack :
a. POP c. MOV
b. PUSH d. DEC

3. Instruksi untuk mengeluarkan isi stack ke register :


a. PUSH c.POP
b. MOV d. DEC
3. Instruksi untuk mengeluarkan isi stack ke register :
a. PUSH c.POP
b. MOV d. DEC

4. Pada file apakah stack harus dibuat sendiri dan mengalihkan


petunjuk stack ke lokasi yang telah dibuat :
a. COM c. DLL
b. BAT d. EXE
4. Pada file apakah stack harus dibuat sendiri dan
mengalihkan petunjuk stack ke lokasi yang telah dibuat :
a. COM c. DLL
b. BAT d. EXE

5. Instruksi untuk memasukkan flag register ke dalam stack


a. PUSHF c. POPF
b. PUSH d. POP
5. Instruksi untuk memasukkan flag register ke dalam stack
a. PUSHF c. POPF
b. PUSH d. POP

1. Pada file apakah letak stack diakhir segment :


a. COM c. EXE
b. BAT d. DLL

También podría gustarte

  • Cur Hat
    Cur Hat
    Documento2 páginas
    Cur Hat
    qmouse89
    Aún no hay calificaciones
  • Barak Pert.9
    Barak Pert.9
    Documento18 páginas
    Barak Pert.9
    qmouse89
    Aún no hay calificaciones
  • POPULASI DAN SAMPEL
    POPULASI DAN SAMPEL
    Documento72 páginas
    POPULASI DAN SAMPEL
    RyandaSaputraMzi
    Aún no hay calificaciones
  • Barak Pert.14
    Barak Pert.14
    Documento22 páginas
    Barak Pert.14
    qmouse89
    Aún no hay calificaciones
  • Barak Pert.4
    Barak Pert.4
    Documento18 páginas
    Barak Pert.4
    qmouse89
    Aún no hay calificaciones
  • Barak Pert.10
    Barak Pert.10
    Documento19 páginas
    Barak Pert.10
    qmouse89
    Aún no hay calificaciones
  • Barak Pert.12
    Barak Pert.12
    Documento20 páginas
    Barak Pert.12
    qmouse89
    Aún no hay calificaciones
  • Barak Pert.13
    Barak Pert.13
    Documento23 páginas
    Barak Pert.13
    qmouse89
    Aún no hay calificaciones
  • Barak Pert.11
    Barak Pert.11
    Documento21 páginas
    Barak Pert.11
    qmouse89
    Aún no hay calificaciones
  • Barak Pert.3
    Barak Pert.3
    Documento20 páginas
    Barak Pert.3
    qmouse89
    Aún no hay calificaciones
  • Barak Pert.5
    Barak Pert.5
    Documento24 páginas
    Barak Pert.5
    qmouse89
    Aún no hay calificaciones
  • Mikroprosesor
    Mikroprosesor
    Documento73 páginas
    Mikroprosesor
    qmouse89
    Aún no hay calificaciones
  • Barak Pert.2
    Barak Pert.2
    Documento23 páginas
    Barak Pert.2
    qmouse89
    Aún no hay calificaciones
  • Barak Pert.1
    Barak Pert.1
    Documento24 páginas
    Barak Pert.1
    qmouse89
    Aún no hay calificaciones
  • Pertemuan 1-6 Mikro
    Pertemuan 1-6 Mikro
    Documento8 páginas
    Pertemuan 1-6 Mikro
    qmouse89
    Aún no hay calificaciones
  • Presentasi Rakor Batam Mei 2009 2
    Presentasi Rakor Batam Mei 2009 2
    Documento9 páginas
    Presentasi Rakor Batam Mei 2009 2
    qmouse89
    Aún no hay calificaciones