Stack dan Procedure
Stack Stack adalah struktur data satu dimensi. Proses : “Last In First Out” (LIFO). Operasi : PUSH dan POP
Push Untuk menambahkan sebuah word yang baru pada stack kita PUSH ke stack. Sintaksnya adalah: PUSH sumber Eksekusi PUSH menyebabkan terjadinya hal berikut: SP (stack pointer) dikurangi 2 Salinan isi sumber disalin ke alamat yang ditetapkan oleh SS:SP. Sumber tidak berubah.
Push 5678 1234 0100 00F0 00F2 00F4 00F6 00F8 00FA 00FC 00FE Offse t SP AX BX STACK (empty) Empty Stack 5678 1234 00FC 00F0 00F2 00F4 00F6 00F8 00FA 00FE 0100 Offset SP AX BX STACK Setelah PUSH BX
Pop Untuk mengambil (remove) item pada puncak stack, kita lakukan POP. Sintaksnya adalah: POP tujuan Eksekusi POP menyebabkan terjadinya hal berikut: Isi dari SS:SP (puncak stack) disalin ke tujuan SP ditambah 2.
Pop 5678 1234 0001 FFFF 00FC 00F0 00F2 00F4 00F6 00F8 00FA 00FE 0100 Offse t SP CX DX STACK Sebelum POP 5678 1234 0001 00FE 00F0 00F2 00F4 00F6 00F8 00FA 00FC 0100 Offse t SP CX DX STACK Setelah POP CX
Algoritma Membalikkan Input Tampilkan ‘?’ Inisialisasi pencacah ke 0 Baca sebuah karakter WHILE karakter bukan carriage return DO Dorong (push) karakter ke dalam stack Increment pencacah END_WHILE Ke baris berikutnya FOR pencacah sekian kali DO Sembulkan (pop) karakter dari stack Tampilkan END_FOR
Procedure Procedure Call and Return MAIN PROC CALL PROC1 Next instruction PROC1 PROC first instruction RET Procedure Call and Return
Deklarasi Procedure Sintaks deklarasi prosedur adalah: Nama PROC tipe ; badan/bagian dari prosedur RET Nama ENDP
Org 100h Proses: call cetak_kar ret Cetak_kar proc near Mov ah, 02h Mov dl, ‘s’ Int 21h Ret Cetak_kar endp