• Tidak ada hasil yang ditemukan

BAB 4 STACK AREA, SUBROUTINE dan INSTRUKSI BLOK

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB 4 STACK AREA, SUBROUTINE dan INSTRUKSI BLOK"

Copied!
42
0
0

Teks penuh

(1)

BAB

BAB

4

4

STACK AREA, SUBROUTINE dan

STACK AREA, SUBROUTINE dan

INSTRUKSI BLOK

INSTRUKSI BLOK

Oleh Oleh :: Setiawardhana Setiawardhana Buku

Buku:: BahasaBahasa Assembly (Buku KomputerAssembly (Buku Komputer 3)3) oleholeh : Son: Son KuswadiKuswadi

Politeknik Elektronika Negeri

(2)

STACK AREA

STACK AREA

Menyelamatkan register dalam operasi Menyelamatkan register dalam operasi

yang meloncat

yang meloncat--loncat dari program utama loncat dari program utama ke program lain

ke program lain

Pada daerah ini register dapat disimpan Pada daerah ini register dapat disimpan

sementara dan dipanggil lagi dengan satu sementara dan dipanggil lagi dengan satu

instruksi saja instruksi saja

(3)

STACK AREA

STACK AREA

STACK AREA RAM ROM FFFF 0FFF 0E00 07FF 0000

(4)

STACK AREA

STACK AREA

Stack Pointer = SP Stack Pointer = SP

Internal register 16 bit khusus yang Internal register 16 bit khusus yang

menjaga alamat dalam daerah ini menjaga alamat dalam daerah ini

SP selalu menunjuk TOS SP selalu menunjuk TOS

TOS = Top Of Stack TOS = Top Of Stack

(5)

STACK AREA

STACK AREA

Gambar TOS Gambar TOS DATA 3 DATA 2

DATA 1 TOS LAMA

TOS BARU

0FFF

(6)

STACK

STACK

-

-

TOS

TOS

TOS harus di inisialisasi TOS harus di inisialisasi

SP diset sembarang saat start up SP diset sembarang saat start up

Instruksi set SP: Instruksi set SP:

LD SP,data 16 bit LD SP,data 16 bit

(7)

STACK

STACK

Instruksi utama Instruksi utama

PUSH

PUSH MenyimpanMenyimpan POP

(8)

STACK

STACK

-

-

PUSH

PUSH

PUSH yang berlaku PUSH yang berlaku

  PUSHPUSH BCBC   PUSH DEPUSH DE   PUSH HLPUSH HL   PUSHPUSH AFAF

(9)

STACK

STACK

Contoh Program PUSH

Contoh Program PUSH

Listing : Listing : LD SP,3FFFh LD SP,3FFFh LD LD B,45hB,45h LD LD C,2AhC,2Ah PUSH BC PUSH BC LD LD D,89hD,89h LD LD E,1EhE,1Eh PUSH DE PUSH DE

(10)

STACK

STACK

Contoh Program PUSH

Contoh Program PUSH

Tidak Diketahui 45 2A 89 1E TOS lama Register B 3FFF 3FFE 3FFD 3FFC 3FFB Register C Register D Register E (TOS baru)

(11)

STACK

STACK

Flowchart PUSH

Flowchart PUSH

START PUSH

SP=SP-1

Tulis register orde tinggi ke stack

SP=SP-1

Tulis register orde rendah ke stack

(12)

STACK

STACK

POP

POP

POP yang berlaku POP yang berlaku

  POPPOP BCBC   POPPOP DEDE   POPPOP HLHL   POPPOP AFAF

(13)

STACK

STACK

Contoh Program POP

Contoh Program POP

Listing : Listing : LD LD BC,000hBC,000h LD LD DE,000hDE,000h POP POP DEDE POP POP BCBC

(14)

STACK

STACK

Contoh Program POP

Contoh Program POP

Tidak Diketahui 45 2A 89 1E TOS lama Register B 3FFF 3FFE 3FFD 3FFC 3FFB Register C Register D Register E (TOS baru) PROSES SEBELUM

(15)

STACK

STACK

Contoh Program POP

Contoh Program POP

Tidak Diketahui 45

2A 89 1E

TOS setelah POP BC

3FFF

3FFE 3FFD 3FFC 3FFB

TOS setelah POP DE

TOS awal

(16)

SUBROUTINE

SUBROUTINE

Bila kita sering memanggil fungsi yang Bila kita sering memanggil fungsi yang

sama sama

Instruksi :

Instruksi : CALL subroutineCALL subroutine

Kembali ke program utama dengan : Kembali ke program utama dengan :

RET RET

(17)

SUBROUTINE

SUBROUTINE

Object Code

Object Code MnemonicMnemonic 8000

8000 C3C3 CALL TESTCALL TEST 8001 8001 4040 8002 8002 8080 8003 8003

Setelah CALL, PC berisi 8003, dan Setelah CALL, PC berisi 8003, dan

disimpan di SP disimpan di SP

(18)

SUBROUTINE

SUBROUTINE

XX 03 80 TOS lama TOS baru

(19)

SUBROUTINE

SUBROUTINE

Mnemonic CALL

Mnemonic CALL 

 CALLCALL addraddr 

 CALLCALL Z,addrZ,addr 

 CALLCALL NZ,addrNZ,addr 

 CALLCALL C,addrC,addr 

 CALLCALL NC,addrNC,addr 

 CALLCALL PE,addrPE,addr 

 CALLCALL PO,addrPO,addr 

 CALLCALL P,addrP,addr 

(20)

SUBROUTINE

SUBROUTINE

Mnemonic RET Mnemonic RET   RETRET   RETRET ZZ   RETRET NZNZ   RETRET CC   RETRET NCNC   RETRET PEPE   RETRET POPO   RETRET PP   RETRET MM

(21)

Alternate Register

Alternate Register

Instruksi yang digunakan Instruksi yang digunakan

EX

EX AF,AF’AF,AF’ EXX

EXX

Instruksi tersebut untuk menyelamatkan Instruksi tersebut untuk menyelamatkan

data secar cepat, bila terjadi interupsi, data secar cepat, bila terjadi interupsi,

karena prosesnya lebih cepat dibanding karena prosesnya lebih cepat dibanding

PUSH PUSH

(22)

Index Register IX,IY

Index Register IX,IY

Lebih mudah untuk mengakses sub kelompok data dari Lebih mudah untuk mengakses sub kelompok data dari

sekelompok data sekelompok data

Contoh : Contoh :

Alamat

Alamat Data blokData blok 8500

8500 | Nama| Nama sub blok 1sub blok 1 | Umur | Umur | Tinggi | Tinggi | Berat | Berat | Telepon | Telepon 8580

8580 | Nama| Nama sub blok 2sub blok 2 | Umur | Umur | Tinggi | Tinggi | Berat | Berat | Telepon | Telepon

(23)

Index Register IX,IY

Index Register IX,IY

Mnemonic yang digunakan : Mnemonic yang digunakan :

LD

LD IX,8500HIX,8500H LD

(24)

Index Register IX,IY

Index Register IX,IY

8500

8500 LDLD DE,0080hDE,0080h 8051

8051 LDLD IX,8500hIX,8500h Subblok1

Subblok1 80528052 LDLD A,(IX+2)A,(IX+2) |

| ADD IX,DEADD IX,DE 875F 875F 8580 8580 LDLD A,(IX+2)A,(IX+2) 8581 8581 Subblok1 Subblok1 85828582 | | 85FF 85FF

(25)

Instruksi Blok

Instruksi Blok

Instruksi yang bisa beroperasi dalam blok Instruksi yang bisa beroperasi dalam blok

Bisa ditentukan batas alamat yang dicari Bisa ditentukan batas alamat yang dicari Bisa memberikan informasi tentang ada Bisa memberikan informasi tentang ada

atau tidaknya data atau tidaknya data

(26)

Instruksi Blok

Instruksi Blok

Konsep Operasi

Konsep Operasi

START B=8040 DATA di B=FF B=AFFF B=B+1 Exit Keterangan :

Zero flag = True bila ketemu

Zero flag = False bila tidak ketemu

AFFF Alamat Kumpulan data Cari FFh Yang pertama

(27)

Instruksi Blok

Instruksi Blok

-

-

Mnemonic

Mnemonic

LDI

LDI Load and IncLoad and Inc LDD

LDD Load and DecLoad and Dec LDIR

LDIR Load Inc and RepeatLoad Inc and Repeat LDDR

LDDR Load Dec and RepeatLoad Dec and Repeat CPI

CPI Compare and IncCompare and Inc CPD

CPD Compare and DecCompare and Dec CPIR

CPIR Compare Inc and RepeatCompare Inc and Repeat CPDR

(28)

Instruksi Blok

Instruksi Blok

Pasangan Register

Pasangan Register

BC

BC Untuk Counter 16 bitUntuk Counter 16 bit HL

HL Memori pointer untuk source Memori pointer untuk source operand

operand DE

DE Memori pointer untuk destination Memori pointer untuk destination operand

(29)

Instruksi LDI

Instruksi LDI

Memindahkan data 1 byte setiap kali Memindahkan data 1 byte setiap kali

dieksekusi. dieksekusi.

Data yang ditunjukkan HL(source) Data yang ditunjukkan HL(source)

dipindah ke alamat yang ada pada DE dipindah ke alamat yang ada pada DE

(destination) (destination)

Setelah instruksi maka: Setelah instruksi maka:

HL = HL HL = HL --11 DE = DE DE = DE--11 BC = BC BC = BC--11

(30)

Instruksi LDI

Instruksi LDI

Memindahkan data dari alamat 8050h ke alamat

Memindahkan data dari alamat 8050h ke alamat

8100h sebanyak 20 bytes 8100h sebanyak 20 bytes LD LD HL,8050hHL,8050h LD LD DE,8100hDE,8100h LD LD BC,20BC,20 LOOP:

LOOP: LDILDI

JP

JP PE,LOOPPE,LOOP

HALT

(31)

Instruksi

Instruksi

-

-

LDD

LDD

Komsep Sama dengan LDI Komsep Sama dengan LDI

Perbedaannya : Perbedaannya : HL = HL HL = HL –– 11 DE = DE DE = DE –– 11 BC = BC BC = BC –– 11

(32)

Instruksi

Instruksi

-

-

LDD

LDD

Memindahkan data dari alamat 8000

Memindahkan data dari alamat 8000--83FF 83FF ke alamat 7400

ke alamat 7400--77FF ( 1024 bytes data )77FF ( 1024 bytes data ) LD LD BC,1024BC,1024 LD LD HL,83FFhHL,83FFh LD LD DE,77FFhDE,77FFh LOOP: LOOP: LDDLDD JP JP PE,LOOPPE,LOOP

(33)

Instruksi LDIR dan LDDR

Instruksi LDIR dan LDDR

Memindahkan 512 data dari alamat 8000 Memindahkan 512 data dari alamat 8000-

-81FFFh ke alamat 9000 81FFFh ke alamat 9000--91FFFh91FFFh LD LD BC,512BC,512 LD LD HL,8000hHL,8000h LD LD DE,9000hDE,9000h LDIR LDIR

(34)

Instruksi LDIR dan LDDR

Instruksi LDIR dan LDDR

Memindahkan 512 data dari alamat 8000 Memindahkan 512 data dari alamat 8000-

-81FFFh ke alamat 9000 81FFFh ke alamat 9000--91FFFh91FFFh LD LD BC,512BC,512 LD LD HL,81FFhHL,81FFh LD LD DE,91FFhDE,91FFh LDDR LDDR

(35)

Instruksi LDIR dan LDDR

Instruksi LDIR dan LDDR

Perbedaan LDIR dan LDDR Perbedaan LDIR dan LDDR



 Waktu tanggapan terhadap InterupsiWaktu tanggapan terhadap Interupsi



 Output dari Refresh AddressOutput dari Refresh Address

“Tidak menjadi bahasan sub materi disini”

(36)

Blok Compare Instruction

Blok Compare Instruction

Mnemonic Mnemonic



 CPICPI Compare with IncCompare with Inc



 CPDCPD Compare with DecCompare with Dec



 CPIRCPIR Compare Inc and RepeatCompare Inc and Repeat



 CPDRCPDR Compare Dec and RepeatCompare Dec and Repeat

Pasangan register yang dipakai :

Pasangan register yang dipakai :



 HLHL Memori pointer yang di compareMemori pointer yang di compare



(37)

CPI dan CPD

CPI dan CPD

Isi dari data di memori yang alamatnya Isi dari data di memori yang alamatnya

ditunjuk oleh register HL di compare ditunjuk oleh register HL di compare

dengan data di register A. dengan data di register A.

Setelah di eksekusi : Setelah di eksekusi :



 Flag menunjukkan hasil compareFlag menunjukkan hasil compare



 HL=HLHL=HL++11



(38)

CPI

CPI

Memindahkan data sebanyak 20 bytes dari

Memindahkan data sebanyak 20 bytes dari

alamat 8040h ke 8054h, bilangan yang di

alamat 8040h ke 8054h, bilangan yang di

compare 55h compare 55h LD LD BC,20BC,20 LD LD HL,8040hHL,8040h LD LD A,55hA,55h LOOP:

LOOP: CPICPI

JP

JP Z,COCOKZ,COCOK

JP

(39)

CPD

CPD

Memindahkan data sebanyak 20 bytes dari

Memindahkan data sebanyak 20 bytes dari

alamat 8040h ke 8054h, bilangan yang di

alamat 8040h ke 8054h, bilangan yang di

compare 55h compare 55h LD LD BC,20BC,20 LD LD HL,8054hHL,8054h LD LD A,55hA,55h LOOP:

LOOP: CPICPI

JP

JP Z,COCOKZ,COCOK

JP

(40)

Instruksi CPIR dan CPDR

Instruksi CPIR dan CPDR

Kemiripan operasi Kemiripan operasi



 CPIRCPIR IncrementIncrement



 CPDRCPDR DecrementDecrement

Proses berhenti apabila Proses berhenti apabila



 Register BC = 0Register BC = 0



(41)

CPIR

CPIR

LD LD BC,20BC,20 LD LD HL,8040hHL,8040h LD LD A,55hA,55h CPIR CPIR JP JP Z,COCOKZ,COCOK

(42)

CPDR

CPDR

LD LD BC,20BC,20 LD LD HL,8054hHL,8054h LD LD A,55hA,55h CPIR CPIR JP JP Z,COCOKZ,COCOK

Referensi

Dokumen terkait

Huda memanfaatkan teknik demonstrations-performance dan media VCD untuk meningkatkan keterampilan siswa dalam bermain drama yang bertujuan mencoba mengajak siswa untuk

Metode pelaksanaan pekerjaan balok dilakukan dengan metode bekisting konvensional. Dimulai dengan pembuatan gambar rencana penulangan dan struktur yang disebut shop drawing

Tidore Timur sendiri m erupakan pemekaran dari kecamat an t idore, yang sebelumya 4 Kelurahan yait u kelurahan dow ora, kelurahan kalaodi, kelurahan t osa dan kelurahan mafut ut

Dalam hal ini FIFA sebagai pemerintahan dari aktor non-negara yang bersifat global mempunyai kekuatan dikarenakan tidak ada organisasi internasional lainnya yang

Kias adalah merupakan salah satu sumber hukum yang menjadikan hukum Islam tidak sempit dan tidak kaku, sebab segala persoalan yang baru muncul dalam kehidupan

Langkah atau meja keempat Posyandu sekaligus adanya penyuluhan kesehatan, menjelaskan data KMS atau keadaan anak berdasarkan data kenaikan berat badan yang digambarkan

Gerakan Mahasiswa Sebagai Kelompok Penekan : Studi Kasus Keluarga Mahasiswa UGM dari Masa Orde Lama, Orde Baru, Hingga Post Reformasi.. Jurusan

hal ini sesuai dengan syarat orang yang berakad dalam konsep akad wakalah bil ujrah dan dalam transaksi ini tidak ada unsur paksaan antara kedua belah pihak.. Hal ini