• Tidak ada hasil yang ditemukan

Stack Addressing, Stack Pointer, Stack RAM, dan Konsep Subrutin

N/A
N/A
Protected

Academic year: 2021

Membagikan "Stack Addressing, Stack Pointer, Stack RAM, dan Konsep Subrutin"

Copied!
11
0
0

Teks penuh

(1)

MODUL KE

9

Sistem Mikroprosesor (3 sks)

MATERI KULIAH :

Pengertian stack addressing (kaitannya dengan Stack RAM dan Stack Pointer); beberapa contoh program pendek menggunakan stack addressing. Penjelasan konsep subrutin dan contoh global program menggunakan subrutin. Pengelompokan instruksi mikroprosesor : data manipulation instruction, data transfer instruction, program

manipulation instruction, status management instruction.

POKOK BAHASAN :

Stack Addressing, Stack Pointer,

Stack RAM, dan Konsep Subrutin

Oleh Ir. INDRAGUNG PRIYAMBODO, MT.

9.1 Stack Addressing, Stack Pointer, dan Stack RAM

Stack pointer (SP), stack RAM, dan stack addressing merupakan pengertian-pengertian

yang penjelasannya saling berkaitan. Sehingga pada subbab/modul ini akan dibahas secara global dahulu, baru kemudian diberikan contoh-contohnya.

 Stack Addressing

 Merupakan metode pengalamatan yang alamat efektifnya (alamat yang dituju) ditentukan oleh isi stack pointer (SP), jadi alamat yang dituju = (SP) atau isi SP.  Ini berarti, isi SP harus ditentukan terlebih dulu, dan perlu hati-hati dalam

menentukan isi SP dikarenakan SP banyak digunakan oleh mikroprosesor untuk mengatur operasi-operasinya.

 Stack Pointer (SP)

 Merupakan register alamat (address register) yang terletak di dalam mikroprosesor dan digunakan untuk menyimpan “sebuah” alamat berikut (TOS = top of stack) dari stack RAM yang dapat diisi.

 Pengertian dari TOS disini adalah isi dari stack RAM yang paling atas/puncak atau isi dari stack RAM yang terakhir masuk (berarti yang pertama akan keluar).

(2)

 Stack RAM

 Merupakan suatu memori baca-tulis (RAM) yang pada umumnya terletak di luar mikroprosesor.

 Stack RAM digunakan untuk menyimpan data/informasi penting (misalnya isi akumulator, isi index register, status register) dalam operasi-operasi yang menggunakan SP. Misalnya untuk operasi :

 JSR = Jump to Subroutine  RTS = Return from Subroutine  RTI = Return from Interupt  Dan sebagainya

 Stack RAM bersifat LIFO (Last In First Out) atau FILO (First In Last Out), yang berarti bahwa informasi yang terakhir masuk ke stack RAM merupakan informasi yang nantinya akan dikeluarkan terlebih dulu, atau juga berarti bahwa informasi yang pertama masuk ke stack RAM merupakan informasi yang nantinya akan keluar paling akhir.

 Bila informasi yang disimpan dalam stack RAM dikehendaki tetap ada meski

power off  maka perlu ada Vcc Stand-by untuk stack RAM, sehingga perlu

ada program pengambilan kembali (jika power off) harus tersimpan di ROM. Contoh cara penyimpanan informasi di dalam stack RAM

Kondisi Stack RAM mula-mula Kondisi Stack RAM setelah Operasi

Alamat Isi/Data Alamat Isi/Data

m – 7 TOS SP m – 6 CC m – 5 Acc. B m – 4 Acc. A m – 3 IX H m – 2 IX L m – 1 PC H m TOS SP m PC L m + 1 m + 1 m + 2 Pengisian m + 2 Pengisian

Stack RAM Stack RAM

Keterangan :

 SP : Stack Pointer

 CC : Condition Code Register

(3)

 Acc. A : Accumulator A

 IX H : Index Register Higher Order 8 bits

 IX L : Index Register Lower Order 8 bits

 PC H : Program Counter Higher Order 8 bits

 PC L : Program Counter Lower Order 8 bits

 Karena stack RAM bersifat LIFO dan SP merupakan TOS dari stacj RAM, maka

stack RAM hanya dapat menambah atau mengurangi/menghapus informasi/

item dari yang teratas :

Penambahan item pada stack RAM  menggunakan instruksi PUSH

Penghapusan/pengurangan item pada stack RAM  menggunakan

instruksi POP atau PULL

 Keuntungan Pemakaian Stack Pointer (SP) atau Stack Addressing :

 Dapat menyimpan data ke stack RAM tanpa mengganggu data yang

sebelumnya telah ada.

 Transfer data ke/dari stack RAM dapat berlangsung cepat dengan instruksi yang relatif singkat. Hal ini dikarenakan informasi alamat telah ada dalam SP.  Sifat LIFO dari stack RAM dapat digunakan untuk menyimpan return address

setelah mikroprosesor melaksanakan program subrutin atau program interupsi.

 Kerugian Pemakaian Stack Pointer (SP) atau Stack Addressing :

 Sulit untuk mencari kesalahan dan melakukan koreksi terhadap program

 Mudah melakukan/terjadi kesalahan  sehingga perlu hati-jhati dalam pemrograman SP.

1.A. CONTOH OPERASI STACK

1. Untuk melaksanakan program : PUSH A POP C

Kondisi awal

STACK RAM MIKROPROSESOR

10 blank blank blank blank :: A 35 B 123 C 64 D 15

(4)

Setelah instruksi PUSH A

STACK RAM MIKROPROSESOR

35 10 blank blank blank :: A 35 B 123 C 64 D 15

Setelah instruksi POP C

STACK RAM MIKROPROSESOR

10 blank blank blank blank :: A 35 B 123 C 35 D 15

2. Untuk melaksanakan program : PUSH A PUSH C POP D POP B

Kondisi awal

STACK RAM MIKROPROSESOR

10 blank blank blank blank :: A 35 B 123 C 64 D 15

(5)

Setelah instruksi PUSH A

STACK RAM MIKROPROSESOR

35 10 blank blank blank :: A 35 B 123 C 64 D 15

Setelah instruksi PUSH C

STACK RAM MIKROPROSESOR

64 35 10 blank blank :: A 35 B 123 C 64 D 15

Setelah instruksi POP D

STACK RAM MIKROPROSESOR

35 10 blank blank blank :: A 35 B 123 C 64 D 64

Setelah instruksi POP B

STACK RAM MIKROPROSESOR

10 blank blank blank blank :: A 35 B 35 C 64 D 64

(6)

1.B. CONTOH OPERASI STACK MENGGUNAKAN SP

1. Untuk melaksanakan program : PUSH A POP B

Kondisi Awal POP A

STACK RAM MIKROPROSESOR

Alamat Isi/Data 45 44 43 42 41 40 26 10 A 17 B 33 SP 41

Setelah instruksi PUSH A

STACK RAM MIKROPROSESOR

Alamat Isi/Data 45 44 43 42 41 40 17 26 10 A 17 B 33 SP 42

Setelah instruksi POP B

STACK RAM MIKROPROSESOR

Alamat Isi/Data 45 44 43 42 41 40 26 10 A 17 B 17 SP 41

Setelah instruksi POP A

STACK RAM MIKROPROSESOR

Alamat Isi/Data 45 44 43 42 41 40 10 A 26 B 17 SP 40

(7)

9.2 Konsep Subrutin (Subroutine)

Konsep subrutin secara global digambarkan seperti berikut ini.

Program Utama

Subrutin 1

Start

1

CALL Subrutin 1

Instruksi Berikutnya 2 Subrutin 2

CALL Subrutin 2 Start

Instruksi Berikutnya

4  

  3

  RETURN

RETURN

Beberapa hal yang terkait dengan subrutin adalah :

 Diawali dengan instruksi yang berlabel sebagai alamat masuk atau alamat yang dipanggil.

 Instruksi pertamannya harus membuat temporary storage (untuk mengamankan kondisi mutakhir), terutama bila subrutin dapat dipanggil oleh interupt (dapat diinterupsi).

 Ditengahnya memberikan suatu hasil.

 Diakhirir dengan instruksi RETURN untuk kemlabi ke program utama (main

program).

Program Utamanya (main program) :

 Harus passing parameter (menyiapkan data untuk input-nya) untuk digunakan oleh subrutin.

 Harus menyiapkan return address di stack (yang berarti sebelumnya stack

pointer harus sudah diinisiasi terlebih dahulu).

Catatan :

 Biasanya otomatis dilakukan oleh instruksi CALL.

(8)

atau SPHL : (HL)  SP  Harus melakukan CALL subrutin.  Menginterpretasikan hasil subrutin.

CONTOH OPERASI SUBRUTIN

Untuk melaksanakan program berikut ini

M E M O R I Urutan Proses Alamat Isi/Data 11 12 : 24 : : 33 34 : 39 : 48 : : 64 65 CALL Subrutin 1 : : Start Subrutin 1 : : CALL Subrutin 2 : : RETURN : Start Subrutin 2 : : RETURN : a b f c e d Kondisi awal

STACK RAM MIKROPROSESOR

Alamat Isi/Data : FFFB FFFC FFFD FFFE FFFF : : : 39 93 89 SP FFFD PC 11

(9)

a. Setelah Instruksi : CALL Subrutin 1

STACK RAM MIKROPROSESOR

Alamat Isi/Data : FFFB FFFC FFFD FFFE FFFF : : 12 39 93 89 SP FFFC PC 24

Alamat Berikutnya (Instruksi Start Subrutin 1) Alamat dari Instruksi CALL Subrutin 1 + satu = 11 + 1 = 12

b. Setelah Instruksi : Start Subrutin 1

STACK RAM MIKROPROSESOR

Alamat Isi/Data Tetap

: FFFB FFFC FFFD FFFE FFFF : : 12 39 93 89 SP FFFC PC 25

Alamat Berikutnya = Alamat instruksi Start Subrutin 1 + satu = 24+1 = 25

Tetap

c. Setelah Instruksi : CALL Subrutin 2

STACK RAM MIKROPROSESOR

Alamat Isi/Data : FFFB FFFC FFFD FFFE FFFF : 34 12 39 93 89 SP FFFB PC 48

Alamat Berikutnya (Instruksi Start Subrutin 2) Alamat dari Instruksi CALL Subrutin 2 + satu = 33 + 1 = 34

(10)

d. Setelah Instruksi : Start Subrutin 2

STACK RAM MIKROPROSESOR

Alamat Isi/Data Tetap

: FFFB FFFC FFFD FFFE FFFF : 34 12 39 93 89 SP FFFB PC 49

Alamat Berikutnya = Alamat instruksi Start Subrutin 2 + satu = 48+1 = 49

Tetap

e. Setelah Instruksi : RETURN (milik Subrutin 2)

STACK RAM MIKROPROSESOR

Alamat Isi/Data : FFFB FFFC FFFD FFFE FFFF : : 12 39 93 89 SP FFFC PC 34

Alamat Berikutnya (Instruksi Start Subrutin 2) Kembali ke alamat STACK RAM sebelumnya = FFFC

f. Setelah Instruksi : RETURN (milik Subrutin 1)

STACK RAM MIKROPROSESOR

Alamat Isi/Data : FFFB FFFC FFFD FFFE FFFF : : : 39 93 89 SP FFFD PC 12

Alamat Berikutnya (Instruksi Start Subrutin 1) Kembali ke alamat STACK RAM sebelumnya = FFFD

(11)

Bila diringkas untuk bagian yang berubah saja sbb :

Urutan Proses

TOS

(Top of Stack RAM)

SP (Stack Pointer) PC (Program Counter) Alamat Isi/Data a b c d e f Kondisi Awal

Setelah CALL Subrutin 1 Setelah Start Subrutin 1 Setelah CALL Subrutin 2 Setelah Start Subrutin 2

Setelah RETURN Setelah RETURN FFFD FFFC FFFC (Tetap) FFFB FFFB (Tetap) FFFC FFFD 39 12 12 34 34 12 39 FFFD FFFC FFFC FFFB FFFB FFFC FFFD 11 24 25 48 49 34 12

DAFTAR PUSTAKA

[1] Lance A. Leventhal, Introduction to Microprocessors : Software, Hardware,

Programming, Prentice Hall,1978.

[2] Pasahow, Edward, J. , Microprocessor and Microcomputer Interfacing for

Electronics Technicians, McGraw-Hill, New York, 1981.

[3] Chris H. Pappas dan Willian H. Murray III, 80386 Mikroprocessor Handbook,

Osborne McGraw-Hill, 1988

[4] Avtar Singh dan Walter A. Triebel, The 8088 Microprocessor : Programmnig,

Interfacing, Software, Hardware, and Applications, Prentice Hall, International

Editions, 1989

[5] Charles M.Gilmore , Microprocessors:Principles and Applications,

Glencoe/McGraw-Hill, 2nd International Ed. , 1995

[6] Rodnay Azks (alih bahasa : S.H. Nasution), From Chips to Systems : An

Introduction to Microprocessors ( Dari Chip ke Sistem : Pengantar Mikroprosesor),

Sybec Inc., 1981 (Penerbit Erlangga, 1986).

[7] Harry Garland (alih bahasa : M. Barmawi dan M.O. Tjia), Introduction to

Microprocessor System Design ( Pengantar Desain Sistem Mikroprosesor),

McGraw-Hill Inc., 1979 (Penerbit Erlangga, 1984).

[8] Barry B. Brey , Microprocessors and Peripherals : Hardware,Software,Interfacing,

Referensi

Dokumen terkait