BAB II LANDASAN TEORI 2.1 TEORI MODUL
Program 1 Mendemokan perintah percabangan
2.1.2 Membuat dan Memanggil Prosedur
2.1.2.2 Menggunakan Stack
Stack dapat kita bayangkan sebagai sebuah tabung yang panjang.
Sedangkan nilai pada register dapat dibayangkan berbentuk koin
Dennis Auldentio Wenas 202011359 yang dapat dimasukkan dalam tabung tersebut. Operasi stack menggunakan prinsip LIFO(Last In First Out). Artinya data terakhir yang disimpan akan dikeluarkan terlebih dahulu. Data yang disimpan adalah data dari register 16 bit (AX, BX, CX dan DX), atau dalam arti besarnya tiap penyimpanan sebesar 2 bytes. Data yang bisa ditampung pada register stack adalah sebesar 64 Kbytes.
Untuk memasukkan nilai suatu register pada stack, digunakan perintah push dengan syntax:
PUSH Reg16Bit MOV AX,12 MOV BX,33 MOV CX,99
PUSH AX ; Simpan nilai AX pada stack PUSH BX ; Simpan nilai BX pada stack PUSH CX ; Simpan nilai CX pada stack
Untuk mengambil keluar koin nilai pada tabung stack, digunakan perintah pop dengan syntax:
POP Reg16Bit
Perintah POP akan mengambil koin nilai pada stack yang paling atas dan dimasukkan pada Reg16Bit.
Dennis Auldentio Wenas 202011359 2.2 TEORI PENUNJANG
Stack
Stack merupakan bagian memori yang digunakan untuk menyimpan nilai dari suatu register secara sementara. Operasi stack dinamakan juga LIFO (Last In First Out).
Bila kita terjemahkan secara bebas, stack artinya adalah 'tumpukan'. Stack adalah bagian memory yang digunakan untuk menyimpan nilai dari suatu register untuk sementara. Operasi-operasi pada assembler yang langsung menggunakan stack misalnya pada perintah PUSH, POP, PUSF dan POPF.
Pada program COM yang hanya terdiri atas satu segment, dimanakah letak dari memory yang digunakan untuk stack ?. Seperti pasangan CS:IP yang menunjukkan lokasi dari perintah selanjutnya yang akan dieksekusi, pada stack digunakan pasangan SS:SP untuk menunjukkan lokasi dari stack. Untuk itu marilah kita lihat dengan debug:
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=3143 ES=3143 SS=3143 CS=3143 IP=0100 NV UP EI PL NZ NA PO NC 3143:0100 0F DB 0F
Dari percobaan ini dapat kita lihat bahwa SS menunjukkan angka yang sama dengan CS(3143) atau dengan kata lain CS dan SS berada pada satu segment.
Register IP yang menunjukkan lokasi stack bernilai FFFE atau dengan kata lain stack terletak pada akhir segment. Karena inilah pada program COM sebaiknya anda jangan sembarangan mengubah data pada akhir segment, karena hal ini akan mengacaukan program. Bila kita gambarkan letak dari stack akan tampak seperti gambar di bawah ini
PUSH DAN POP Pengoperasian Stack : 1. PUSH
Dennis Auldentio Wenas 202011359 Untuk menambahkan sebuah word yang baru pada stack kita PUSH ke stack. Sintaksnya adalah:
PUSH sumber
Eksekusi PUSH menyebabkan terjadinya hal berikut:
a. SP (stack pointer) dikurangi 2
b. Salinan isi sumber disalin ke alamat yang ditetapkan oleh SS:SP.
Sumber tidak berubah 2. POP
Untuk mengambil (remove) item pada puncak stack, kita lakukan POP.
Sintaksnya adalah:
POP tujuan
Eksekusi POP menyebabkan terjadinya hal berikut:
1. Isi dari SS:SP (puncak stack) disalin ke tujuan 2. SP ditambah 2.
Dengan perintah "PUSH", kita menyimpan nilai register DX pada stack, kemudian pada perintah "POP" kita mangambil keluar nilai yang disimpan tersebut dari stack. Dari program ini dapat dilihat bagaimana stack menggantikan varibel. yang digunakan untuk menyimpan nilai pada register DX. Kini lihatlah bagaimana program yang menggunakan pengulangan didalam pengulangan dengan memanfaatkan stack ini. Dalam bahasa Pascal programnya akan tampak seperti berikut:
For i:= 10 DownTo 1 Do For j:= 5 DownTo 1 Do For s:= 3 DownTo 1 Do Begin
End
Dalam bahasa assembler akan tampak seperti:
MOV CX,10 i:
PUSH CX MOV CX,5
Dennis Auldentio Wenas 202011359 j:
PUSH CX MOV CX,3 s:
LOOP s POP CX LOOP j POP CX LOOP i
Sebagai contoh lainnya pada perintah berikut:
MOV AX,12 MOV BX,33 MOV CX,99
PUSH AX ; Simpan nilai AX pada stack PUSH BX ; Simpan nilai BX pada stack PUSH CX ; Simpan nilai CX pada stack
Perintah POP akan mengambil koin nilai pada stack yang paling atas dan dimasukkan pada Reg16Bit. Dari sini dapat anda lihat bahwa data yang terakhir dimasukkan akan merupakan yang pertama dikeluarkan. Inilah sebabnya operasi stack dinamankan LIFO(Last In First Out).
Sebagai contohnya, untuk mengambil nilai dari register AX, BX dan CX yang disimpan pada stack harus dilakukan pada register CX dahulu barulah BX dan AX, seperti:
POP CX ; Ambil nilai pada puncak stack, masukkan ke CX POP BX ; Ambil nilai pada puncak stack, masukkan ke BX POP AX ; Ambil nilai pada puncak stack, masukkan ke AX
Bila anda terbalik dalam mengambil nilai pada stack dengan POP AX kemudian POP BX dan
POP CX, maka nilai yang akan anda dapatkan pada register AX, BX dan CX akan terbalik.
Sehingga register AX akan bernilai 99 dan CX akan bernilai 12.
Dennis Auldentio Wenas 202011359 PUSF DAN POPF
PUSF dan POPF, sama halnya dengan perintah PUSH dan POP. Perintah PUSF digunakan untuk menyimpan nilai dari flags register pada stack sedangkan POPF digunakan untuk mengambil nilai pada stack dan disimpan pada flags register. Kedua perintah ini digunakan tanpa operand:
PUSHF ; Simpan nilai Flags pada stack
POPF ; Ambil nilai pada stack
Perintah PUSHF dan POPF digunakan untuk menyelamatkan kondisi dari flag terhadap perubahan. PUSHF dan POPF biasanya digunakan pada operasi yang sangat mementingkan nilai pada flag ini, seperti pada operasi aritmatika.
Dennis Auldentio Wenas 202011359 2.2.1 RANGKUMAN
Procedure
Prosedure adalah bagian perangkat lunak yang dapat dipergunakan berulang kali, mengingat bahwa prosedur disimpan pada memori sekali, namun digunakan seseringkali mungkin. Hal ini tentu saja menghemat ruang memori dan memudahkan pengembangan perangkat lunak. Satu- satunya kerugian dari prosedur ialah bahwa prosedur sedikit menghabiskan waktu sari komputer untuk terhubung dengan prosedur tersebut hingga kemudian selesai menjalankan prosedur tersebut. Instruksi CALL ialah instruksi yang melakukan hubungan dengan prosedur dan RET ( Return) untuk kembali dari prosedur. Perintah "RET(Return)"
digunakan untuk mengembalikan Kontrol program pada sipemanggil procedure. Pada bentuk NEAR perintah RET ini akan memPOP atau mengambil register IP dari stack sebagai alamat loncatan menuju program pemanggil procedure. Sedangkan pada bentuk "FAR" perintah RET akan mengambil register IP dan CS dari stack sebagai alamat loncatan menuju program pemanggil procedure. Perintah Call ini akan menyimpan register IP saja bila procedure yang dipanggil berbentuk "NEAR". Bila procedure yang dipanggil berbentuk "FAR", maka perintah "CALL" akan menyimpan register CS dan IP. Dalam Assembler ada peraturan khusus mengenai penyimpanan prosedur, sebuah prosedur di awali dengan directive PROC dan diakhiri dengan directive ENDP. Dengan menggunakan procedure suatu program yang besar dapat diselesaikan dengan lebih mudah. Proses pencarian kesalahan pun akan lebih mudah bil;a digunakan procedure. Sintaks deklarasi prosedur adalah:
Nama PROC tipe ; badan/bagian dari prosedur RET
Nama ENDP
Tipe operand yang dapat dipilih adalah NEAR atau FAR. Bentuk NEAR digunakan jika procedure tersebut dipanggil oleh program yang letaknya masih satu segmen dari procedure tersebut. Far digunakan apabila procedure dapat dipanggil dari segmen lain.
Dennis Auldentio Wenas 202011359 BAB III METODE PRAKTIKUM
3.1 LANGKAH PERCOBAAN
1. Nyalakan komputer, kemudian jalankan Aplikasi emu8086
2. Kemudian tulis dan jalankan program yang sudah dibuat pada aplikasi emulator
3. Kemudian screen shoot hasil program
4. Hasil screen shoot pada Program 1 - 2 dimasukkan dalam laporan praktikum 5. Kerjakan tugas akhir berdasarkan materi yang diberikan. Tambahkan keterangan pada perintah-perintah yang diberikan pada mikroprosesor.
Kerjakan masing- masing.
6. Hasil tugas akhir di-screen shot dan dilampirkan pada laporan praktikum.
Dennis Auldentio Wenas 202011359 BAB IV HASIL DAN ANALISA
4.1 HASIL PENGUJIAN Program 1
Program 2
Dennis Auldentio Wenas 202011359 Program 3
Dennis Auldentio Wenas 202011359 4.2 ANALISA PEMBAHASAN
Pada Modul ini membahas tentang Prosedur dan Stack pada Mikroprosesor dengan tujuan yaitu Memahami perintah dan proses operasi prosedur pada mikroprosesor, Dapat mendekalarasikan prosedur menggunakan PROC dan menutup prosedur dengan ENDP, Dapat melakukan operasi pemanggilan prosedur dengan CALL dan mengembalikan dengan ke program utama dengan RET, Memahami perintah dan operasi stack pada mikroprosesor, dan Dapat melakukan operasi stack dengan PUSH dan POP. Dengan Alat dan Bahan yang digunakan yaitu Komputer dan aplikasi EMU 8086.
Pengertian prosedur sendiri merupakan suatu alat bantu yang sangat berguna yaitu dengan prosedir suatu program yang besa bisa diselesaikan dengan lebih mudah dimana proses pencarian kesalahanpun akan lebih mudah bisa digunakan prosedur. Prosedur didentifikasi dengan nama, diikuti dengan bagian baris tugas yang akan dikerjakan oleh prosedur. Akhir dari prosedur ditunjukkan dengan pernyataan pengembalian. Membuat dan memanggil prosedur yaitu dengan “Nama_Prosedur” adalah nama dari prosedur yang kita definiskan sendiri dimana untuk memudahkan nama untuk prosedur tersebut.
Perintah RET (Return) digunakan untuk mengembalikan control program pada si pemanggil prosedur sednagkan untuk memanggil atau menjalankan prosedur dengan operasi CALL, dengan nama syntax CALL NamaP.
Stack adalah bagian memory yang digunakan untuk menyimpan nilai dari suatu register untuk sementara. Operasi stack menggunakan prinsip LIFO (Last in First Out). Artinya data terakhir yang disimpan akan dikeluarkan terlebih dahulu. Data yang disimpan data dari register 16 bit (AX,BX, CX dan DX), atau dalam arti besarnya tiap penyimpanan sebesar 2 bytes dan Data yang bisa tampingng pada resgiter stack adalah sebesar 64.
Program 1 ini adalah melakukan prosedur, dengan menggunakan header .MODEL SMALL, .CODE, dan .ORG100h. .MODE SMALL disebut sebagai size atau ukuran file dari program 1 ini tetapi ukuran file tersebut tidak lebih dari 64 Kb, , .CODE ini adalah perintah untuk masukkan segment dari .Code tersebut, .ORG 100 H menunjukkan dimana ketika memulai program ini dimulai dari bit 100 Hexadesimal. Proses adalah label. Kemudian ada syntax
Dennis Auldentio Wenas 202011359 CALL Cetak_Kar ini adalah nama prosedur fungsinya untuk memanggil label prosedur, dan ada INT 20h ini adalah perintah mengakhiri program. Kemudian ada Program yaitu MOV AH,02H dimana fungsinya untuk mencetak sebuah karakter secara otomatis dimana karakter yang dicetak adalah sebuah huruf S yang dimasukkan diregister DL, MOV DL,”s”, untuk mencetak dari perintah 02h dan INT 21H melaksanakan perintah dan menampilkan pada layer hitam, dan ada RET perintah ini untuk mengembalikan kepada pemanggil yaitu CALL.
Ketika kita melakukan RET maka eksekusi program akan lompat ke INT 20h dan ada Cetak_Kar End ini adalah perintah untuk mengakhiri prosedur dengan menggunakan syntaxProsedur dan diakhiri End.
Pada Program 2 ini Mencetak kalimat dengan jumlah karakter tertentu, yaitu dengan menggunakan header .MODEL SMALL, .CODE, dan .ORG100h.
.MODE SMALL disebut sebagai size atau ukuran file dari program 1 ini tetapi ukuran file tersebut tidak lebih dari 64 Kb, , .CODE ini adalah perintah untuk masukkan segment dari .Code tersebut, .ORG 100 H menunjukkan dimana ketika memulai program ini dimulai dari bit 100 Hexadesimal. TData adalah lebel. Dan JMP Proses berfungsi untuk melakukan lompatan ke label proses , dan ada Data KLm dengan menggunakan Define Byte (DB) “Aku Suka Praktikum Mikroprosesor” yaitu bilangan array. Karena sebuah array maka program ini tidak bisa langsung mencetak semua karakter itu maka harus melakukan penambahan sebuah indeks percetakannya. Kemudian ada MOV CX, 24, Perintah MOV CX ini adalah perintah melakukan pengulangan atau melakukan pengulangan sebanyak 24 kali atau mencetak sebanyak 24 karakter.
Kemudian MOV DL, Klm (BX) ini sebuah perintah input dari semua data KLm BX dimana data KLm BX adalah bilangan array, array ini dimasukan diresgiter DL. Kemudian Call Cetak_Kar perintah ini memanggil Programnya yaitu MOV AH, 02h yang adalah mencetak karakter secara otomatis, kemudian ada INT 21h. Ketika di Single step terus menerus sampai selesai mencetak semua Kata yang ada di DB. Kemudian ada Cetak Kar_End adalah perintah untuk mengakhiri prosedur dengan menggunakan syntaxProsedur dan diakhiri End.
Program 3 ini membahas tentang stack, disini ada MOV AX,12 dimana , MOV BX, 33, dan MOV CX, 99 yang adalah bilangan nilai decimal. Tetapi
Dennis Auldentio Wenas 202011359 yang akan muncul pada register adalah bilangan heksadesimal. Ada PUSH adalah untuk menyimpan nilai register secara sementara pada stack sedangkan pop adalah mengambil data yang disimpan pada stack.
Dennis Auldentio Wenas 202011359 4.3 TUGAS AKHIR
Buatlah program PUSH dan POP dengan nilai register AX = 22, BX = 44, dan CX = 88!
Dennis Auldentio Wenas 202011359 BAB V PENUTUP
5.2 KESIMPULAN
1. Memahami perintah dan proses operasi prosedur pada mikroprosesor
Prosedur merupakan suatu alat bantu yang sangat berguna. Dengan prosedur suatu program yang besar bisa diselesaikan dengan lebih mudah. Proses pencarian kesalahanpun akan lebih mudah bila digunakan prosedur. Prosedur diidentifikasi dengan nama, diikuti dengan bagian baris tugas yang akan dikerjakan oleh prosedur.
2. Dapat mendekalarasikan prosedur menggunakan PROC dan menutup prosedur dengan ENDP. Sebuah prosedur di awali dengan directive PROC dan diakhiri dengan directive ENDP. Dengan menggunakan procedure suatu program yang besar dapat diselesaikan dengan lebih mudah.
3. Dapat melakukan operasi pemanggilan prosedur dengan CALL dan mengembalikan dengan ke program utama dengan RET. Instruksi CALL ialah instruksi yang melakukan hubungan dengan prosedur dan RET ( Return) untuk kembali dari prosedur. Perintah "RET(Return)" digunakan untuk mengembalikan Kontrol program pada sipemanggil procedure.
4. Memahami perintah dan operasi stack pada mikroprosesor. Stack merupakan bagian memori yang digunakan untuk menyimpan nilai dari suatu register secara sementara. Operasi stack dinamakan juga LIFO (Last In First Out).
5. Dapat melakukan operasi stack dengan PUSH dan POP
Intruksi PUSH dan POP merupakan intruksi penting untuk menyimpan dan mengambil kembali data dari memori stack secara LIFO (last-in, first-out).
Mikroprosesor mempunyai enam bentuk intruksi PUSH dan POP, yaitu register, memori, immediate, register segmen, flag, dan semua register
5.2 SARAN
Sudah cukup baik, tetapi perlu mengatur kata-kata yang baik