PUSH AND POP PROGRAM
1. memahami instruksi bahasa asemmbly
2. mampu menampilkan huruf dan angka pada emu 8086
3, mampu menampilkan huruf dan angka sesuai yang di minta secara berurutan
program karena semuanya diserahkan kepada pemakai.
REGISTER
Register adalah sebagian kecil memori komputer yang
dipakai untuk tempat penampungan data. Sebagian besar
register yang terdapat pada mikroprosesor 8088 adalah 16 bit.
Ada 5 kelompok Register, yaitu :
1. General Purpose Register
General purpose register dapat dibagi menjadi register
low dan high bits yang masing-masing berkemampuan 8 bit.
Seperti register AX, register low-nya adalah AL dan register
high-nya adalah AH.
Ada empat macam General purpose register yaitu:
18
a. Register AX (AH + AL) atau Accumulator Register adalah
register aritmatik untuk dipakai dalam operasi
pertambahan, pengurangan, perkalian dan pembagian.
Register AH dapat juga digunakan untuk tempat nilai service
number untuk beberapa interrupt tertentu.
b. Register BX (BH + BL) atau Base register adalah salah
satu dari dua register base Addressing mode, yang dapat
mengambil atau menulis langsung dari/ke memory.
c. Register CX (CH + CL) atau Counter Register adalah
suatu counter untuk meletakkan jumlah lompatan pada
loop yang dilakukan.
d. Register DX (DH + DL) atau Data Register mempunyai tiga
tugas, yaitu:
1. Membantu AX dalam proses perkalian dan
pembagian, terutama perkalian dan pembagian 16 bit.
2. DX merupakan register offset dari DS
3. DX bertugas menunjukkan nomor port pada operasi
port
2. Segment Register
a. CS (Code Segment) Register adalah berfungsi menunjukkan
segment program berada dengan pasangan register ini
adalah register IP.
b. DS (Data Segment) Register adalah berfungsi
menunjukkan segment dari segment data. Pasangan dari DS
adalah DX.
c. SS (Stack Segment) Register adalah berfungsi
menunjukkan segment dari segment stack. Pasangan dari SS
adalah SP
d. ES (Extra Segment) Register adalah berfungsi untuk
pemograman pada saat melakukan operasi ke segment lain.
3. Pointer Register berfungsi menyimpan offset dari relative
address.
a. IP (Instruction Pointer) Register adalah berfungsi untuk
menunjukkan baris perintah program. Pada saat pertama
program dijalankan register ini akan langsung menunjuk
pada awal program.
b. SP (Stack Pointer) Register adalah merupakan pasangan
SS yang digunakan untuk operasi stack. Pada saat
pertama program dijalankan register ini akan menunjuk
pada byte terakhir stack.
c. BP (Base Pointer) Register adalah mempunyai fungsi sama
dengan register BX, tetapi BX menulis dan membaca
dengan segment DS (Data Segment) sedang BP menulis
dan membaca dengan segment SS (Stack Segment).
19
4. Index Register yaitu SI (Source Index) dan DI (Destination
Index) adalah berfungsi melakukan operasi STRING. Namun
demikian, kedua register ini sering digunakan untuk menulis dan
membaca ke atau dari memori seperti halnya BX dan BP.
5. Flag Register adalah berfungsi mengecek apakah sesuatu
berfungsi atau tidak.
Contohnya:
a. Interrupt Flag mengecek apakah pada saat operasi Interrupt
sedang aktif atau tidak, bila tidak aktif, Interrupt tidak akan
dijalankan.
b. Carry Flag mengecek apakah pada saat operasi terjadi
kesalahan atau tidak,
c. Sign Flag menunjukkan apakah suatu bilangan bertanda
atau tidak dan sebagainya.
Gambar 23 di bawah ini adalah bit-bit register Flag
Gambar 23. Flag Register
Pengalamatan Memori dan Segment Register
Komputer dengan mikroprosesor 8088 memiliki ruang memori
sebesar 1 megabyte, seperti gambar 24.
Pengalamatan ruang memori tersebut merupakan
pengalamatan mutlak dengan kemampuan 20 bit.
Dengan register uP 8088 berkemampuan 16 bit, berarti
masih kekurangan 4 bit untuk menampung suatu alamat memori.
Maka dilakukan penomoran dengan dua register. Sebuah
register berisi 16 bit dihitung dari kiri disebut register
Segment dan sebuah register lain lagi berisi 16 bit dihitung dari
kanan adalah Register Offset. Isi register segment biasa disebut
segment dan isi register offset disebut offset. Cara
pengalamatan memori yang dilakukan komputer sering disebut
relative address.
Contoh relative address dan alamat mutlak dalam
komposisi bit adalah :
20
- A131:077A
Komposisi Bit Segment 1010 0001 0011 0001 0000
Komposisi Bit Offset ___ 0000 0111 0111 1010 +
Alamat Mutlak 1010 0001 1010 1000 1010
( A1A8A Hexa)
- 5678:A007
(60787 Hexa)
Gambar 24. Ruang Memori 1 Megabyte
PERINTAH DASAR ASSEMBLER
1. MOV
Perintah untuk mengisi, memindahkan,
memperbaharui isi suatu register, variabel ataupun suatu
lokasi memori.
21
Tata penulisan: MOV [operand1],[operand2]
a. Operand1 berupa register, variabel, lokasi memory dan
b. Operand2 berupa: register, variabel, lokasi memory
ataupun bilangan.
Contoh :
2. Int (Interrupt)
Subrotine yang akan dipanggil sudah tersedia pada
memori komputer.
Ada dua jenis yaitu :
a. Bios Interrupt yaitu Int 0H hingga 1FH yang disediakan
oleh BIOS (Basic Input Output System).
Contoh: Int 16H service 01H berfungsi untuk mencek apakah
ada tombol keyboard yang ditekan.
b. DOS Interrupt yaitu Int 1FH keatas yang disediakan oleh
DOS (Disk Operating System).
Contoh: Int 20H berfungsi menghentikan kerja suatu
program.
3. Int 20h dan Int 21h service 02h
a. Int 20h
Bertugas memberhentikan proses komputer terhadap
suatu program COM. Bila pada setiap program COM yang
dibuat tidak terdapat Int 20h, maka akan terjadi hanging pada
komputer. Hal ini terjadi karena komputer tidak menemukan
perintah pemberhentian proses.
b. Int 21h Service 02
Seperti Int 20h, Int 21h adalah salah satu Int yang termasuk
DOS Interrupt, karena Int 21h mempunyai banyak sekali tugas,
maka tugasnya dibagi-bagi menjadi beberapa bagian. Untuk
memanggil bagian-bagian itu, perlu menyertakan nomor
bagiannya yang disebut juga dengan service number. Contoh Int
21h yang bertugas mencetak sebuah huruf ke layar yaitu fungsi
kedua dari Int 21h.
Untuk menjalankan fungsi Int 21h service 02 harus dipenuhi
beberapa syarat yaitu :
a) Register AH, harus berisi service number dari Int 21h
yang akan dijalankan (02h).
b) Register DL, harus berisi bilangan hexa dari karakter ASCII
(American Standard Code for Information Interchange) yang
akan dicetak.
22
OPERASI ARITMATIK
1. Operasi Pertambahan
Ada dua macam perintah pertambahan, yaitu :
a. Pertambahan dengan 1
Dengan perintah seperti: A = A+ 1, yang bermaksud
pertambahan dengan 1, contoh dalam program ditunjukkan pada
gambar 25.
Tata penulisan: INC [Register/Variabel]
b. Pertambahan selain Satu
Dengan 'ADD' dapat menambahkan berapa saja pada suatu
register ataupun suatu variabel.
Tata penulisan: ADD [operand1],[operand2]
dimana isi operand1 adalah register atau variabel dan operand2
berupa register, variabel atau bilangan.
Hasil pertambahan disimpan di operand1 , seperti contoh
berikut ini.
Contoh:
ADD AH,AL dengan isi AH adalah 12 dan AL adalah
3, maka komputer melaksanakan perintah
tersebut sebagai berikut :
AH............... 12
AL................ 3_ +
AH............... 15
Untuk perintah ADD kedua operand harus mempunyai besar
kemampuan yang sama seperti AH dan AL yang sama-sama 8 bit.
Gambar 25. Program Aplikasi INC untuk Tampilkan Angka 0 s/d 9
23
Penjelasan per baris program adalah :
a) MOV CX,0Ah ; Pada baris program ini, mengisikan
jumlah loop yang ingin dilakukan dengan perincian 0 - 9
terdiri dari 10 angka. Bila 10 dikonversikan ke bilangan
hexa, maka akan didapat angka A hexa.
b) MOV DL,30h ; Bilangan ASCII yang sama dengan
30 hexa adalah '0' yang akan dicetak dahulu dan
dimasukkan dalam DL sesuai dengan Int 21 hexa service
02 hexa.
c) MOV AH, 02h ; AH diisi dengan service number dari
Interrupt.
d) INT 21h ; Menjalankan Interrupt 21 hexa.
e) INC DL ; Menambahkan DL dengan 1 menjadi 31
hexa yang berarti '1'.
f) LOOP ulangi ; Lompat ke arah MOV AH,02h dan dilakukan
sebanyak 10 kali, setiap kali isi CX dikurangi satu hingga
akhirnya mencapai nol (0).
g) INT 20h ; Perintah INT 20h untuk mengakhiri program
Hasil program ini ditunjukkan pada gambar 26.
Gambar 26. Hasil Program Menampilkan Angka 0 sampai 9
2. Alat dan Bahan
[Kembali]
Software : Aplikasi Emu 8086
3. Dasar Teori
[Kembali]
Emulator emu86
Untuk membantu dalam memahami atau penyesuaikan alur
kerja program yang diinginkan maka dapat dilakukan dengan bantuan
emulator emu86. Pada emulator ini ada menu emulate untuk
menjalankan program dengan dua pilihan yaitu single step untuk
eksekusi per baris instruksi atau Run untuk eksekusi keseluruhan
instruksi sampai akhir program. Tampilan Menu Utama Emu86,
seperti gambar 20
Gambar 20. Menu Utama Emu86
File program dapat dibentuk dalam format ekstensi *.COM dalam
program TASMB yaitu dengan menekan O yaitu option, lalu F8 untuk
menyimpan hasil compile ke dalam *.com, seperti gambar 21. Setelah
itu file *.com dapat dipanggil oleh emu86 untuk dapat di emulator-kan
Gambar 22. Tampilan *.asm dan *.com
Setiap menekan tombol single step maka instruksi per baris
dieksekusi dan perubahan register dapat dilihat pada tampilan
register, seperti gambar 22 di atas.
Setiap menekan tombol single step maka instruksi per baris
dieksekusi dan perubahan register dapat dilihat pada tampilan
register, seperti gambar 22 di atas.
| 2.1.1.3 | Teori Bahasa Assembler Dalam bahasa tingkat rendah tidak dibutuhkan struktur |
REGISTER
Register adalah sebagian kecil memori komputer yang
dipakai untuk tempat penampungan data. Sebagian besar
register yang terdapat pada mikroprosesor 8088 adalah 16 bit.
Ada 5 kelompok Register, yaitu :
1. General Purpose Register
General purpose register dapat dibagi menjadi register
low dan high bits yang masing-masing berkemampuan 8 bit.
Seperti register AX, register low-nya adalah AL dan register
high-nya adalah AH.
Ada empat macam General purpose register yaitu:
18
a. Register AX (AH + AL) atau Accumulator Register adalah
register aritmatik untuk dipakai dalam operasi
pertambahan, pengurangan, perkalian dan pembagian.
Register AH dapat juga digunakan untuk tempat nilai service
number untuk beberapa interrupt tertentu.
b. Register BX (BH + BL) atau Base register adalah salah
satu dari dua register base Addressing mode, yang dapat
mengambil atau menulis langsung dari/ke memory.
c. Register CX (CH + CL) atau Counter Register adalah
suatu counter untuk meletakkan jumlah lompatan pada
loop yang dilakukan.
d. Register DX (DH + DL) atau Data Register mempunyai tiga
tugas, yaitu:
1. Membantu AX dalam proses perkalian dan
pembagian, terutama perkalian dan pembagian 16 bit.
2. DX merupakan register offset dari DS
3. DX bertugas menunjukkan nomor port pada operasi
port
2. Segment Register
a. CS (Code Segment) Register adalah berfungsi menunjukkan
segment program berada dengan pasangan register ini
adalah register IP.
b. DS (Data Segment) Register adalah berfungsi
menunjukkan segment dari segment data. Pasangan dari DS
adalah DX.
c. SS (Stack Segment) Register adalah berfungsi
menunjukkan segment dari segment stack. Pasangan dari SS
adalah SP
d. ES (Extra Segment) Register adalah berfungsi untuk
pemograman pada saat melakukan operasi ke segment lain.
3. Pointer Register berfungsi menyimpan offset dari relative
address.
a. IP (Instruction Pointer) Register adalah berfungsi untuk
menunjukkan baris perintah program. Pada saat pertama
program dijalankan register ini akan langsung menunjuk
pada awal program.
b. SP (Stack Pointer) Register adalah merupakan pasangan
SS yang digunakan untuk operasi stack. Pada saat
pertama program dijalankan register ini akan menunjuk
pada byte terakhir stack.
c. BP (Base Pointer) Register adalah mempunyai fungsi sama
dengan register BX, tetapi BX menulis dan membaca
dengan segment DS (Data Segment) sedang BP menulis
dan membaca dengan segment SS (Stack Segment).
19
4. Index Register yaitu SI (Source Index) dan DI (Destination
Index) adalah berfungsi melakukan operasi STRING. Namun
demikian, kedua register ini sering digunakan untuk menulis dan
membaca ke atau dari memori seperti halnya BX dan BP.
5. Flag Register adalah berfungsi mengecek apakah sesuatu
berfungsi atau tidak.
Contohnya:
a. Interrupt Flag mengecek apakah pada saat operasi Interrupt
sedang aktif atau tidak, bila tidak aktif, Interrupt tidak akan
dijalankan.
b. Carry Flag mengecek apakah pada saat operasi terjadi
kesalahan atau tidak,
c. Sign Flag menunjukkan apakah suatu bilangan bertanda
atau tidak dan sebagainya.
Gambar 23 di bawah ini adalah bit-bit register Flag
| X | X | X | X | O | D | I | T | S | Z | X | A | X | P | X | C |
| O = Overflow Flag D = Direction Flag I = Interrupt Flag T = Trap Flag S = Sign Flag | Z = Zero Flag A = Auxiliary Carry Flag P = Parity Flag C = Carry Flag X = Reserved (kosong) |
Komputer dengan mikroprosesor 8088 memiliki ruang memori
sebesar 1 megabyte, seperti gambar 24.
Pengalamatan ruang memori tersebut merupakan
pengalamatan mutlak dengan kemampuan 20 bit.
Dengan register uP 8088 berkemampuan 16 bit, berarti
masih kekurangan 4 bit untuk menampung suatu alamat memori.
Maka dilakukan penomoran dengan dua register. Sebuah
register berisi 16 bit dihitung dari kiri disebut register
Segment dan sebuah register lain lagi berisi 16 bit dihitung dari
kanan adalah Register Offset. Isi register segment biasa disebut
segment dan isi register offset disebut offset. Cara
pengalamatan memori yang dilakukan komputer sering disebut
relative address.
Contoh relative address dan alamat mutlak dalam
komposisi bit adalah :
20
- A131:077A
Komposisi Bit Segment 1010 0001 0011 0001 0000
Komposisi Bit Offset ___ 0000 0111 0111 1010 +
Alamat Mutlak 1010 0001 1010 1000 1010
( A1A8A Hexa)
- 5678:A007
| Komposisi Bit Segment | 0101 0110 0111 | 1000 0000 |
| Komposisi Bit Offset | ___ 1010 0000 0000 0111 + | |
| Alamat Mutlak 0110 | 0000 0111 | 1000 0111 |
Gambar 24. Ruang Memori 1 Megabyte
PERINTAH DASAR ASSEMBLER
1. MOV
Perintah untuk mengisi, memindahkan,
memperbaharui isi suatu register, variabel ataupun suatu
lokasi memori.
21
Tata penulisan: MOV [operand1],[operand2]
a. Operand1 berupa register, variabel, lokasi memory dan
b. Operand2 berupa: register, variabel, lokasi memory
ataupun bilangan.
Contoh :
| MOV AH,AL MOV AH, 02 | ; mengkopi isi register AL ke register AH. ; mengisi register AH dengan 02 |
Subrotine yang akan dipanggil sudah tersedia pada
memori komputer.
Ada dua jenis yaitu :
a. Bios Interrupt yaitu Int 0H hingga 1FH yang disediakan
oleh BIOS (Basic Input Output System).
Contoh: Int 16H service 01H berfungsi untuk mencek apakah
ada tombol keyboard yang ditekan.
b. DOS Interrupt yaitu Int 1FH keatas yang disediakan oleh
DOS (Disk Operating System).
Contoh: Int 20H berfungsi menghentikan kerja suatu
program.
3. Int 20h dan Int 21h service 02h
a. Int 20h
Bertugas memberhentikan proses komputer terhadap
suatu program COM. Bila pada setiap program COM yang
dibuat tidak terdapat Int 20h, maka akan terjadi hanging pada
komputer. Hal ini terjadi karena komputer tidak menemukan
perintah pemberhentian proses.
b. Int 21h Service 02
Seperti Int 20h, Int 21h adalah salah satu Int yang termasuk
DOS Interrupt, karena Int 21h mempunyai banyak sekali tugas,
maka tugasnya dibagi-bagi menjadi beberapa bagian. Untuk
memanggil bagian-bagian itu, perlu menyertakan nomor
bagiannya yang disebut juga dengan service number. Contoh Int
21h yang bertugas mencetak sebuah huruf ke layar yaitu fungsi
kedua dari Int 21h.
Untuk menjalankan fungsi Int 21h service 02 harus dipenuhi
beberapa syarat yaitu :
a) Register AH, harus berisi service number dari Int 21h
yang akan dijalankan (02h).
b) Register DL, harus berisi bilangan hexa dari karakter ASCII
(American Standard Code for Information Interchange) yang
akan dicetak.
22
OPERASI ARITMATIK
1. Operasi Pertambahan
Ada dua macam perintah pertambahan, yaitu :
a. Pertambahan dengan 1
Dengan perintah seperti: A = A+ 1, yang bermaksud
pertambahan dengan 1, contoh dalam program ditunjukkan pada
gambar 25.
Tata penulisan: INC [Register/Variabel]
b. Pertambahan selain Satu
Dengan 'ADD' dapat menambahkan berapa saja pada suatu
register ataupun suatu variabel.
Tata penulisan: ADD [operand1],[operand2]
dimana isi operand1 adalah register atau variabel dan operand2
berupa register, variabel atau bilangan.
Hasil pertambahan disimpan di operand1 , seperti contoh
berikut ini.
Contoh:
ADD AH,AL dengan isi AH adalah 12 dan AL adalah
3, maka komputer melaksanakan perintah
tersebut sebagai berikut :
AH............... 12
AL................ 3_ +
AH............... 15
Untuk perintah ADD kedua operand harus mempunyai besar
kemampuan yang sama seperti AH dan AL yang sama-sama 8 bit.
Gambar 25. Program Aplikasi INC untuk Tampilkan Angka 0 s/d 9
23
Penjelasan per baris program adalah :
a) MOV CX,0Ah ; Pada baris program ini, mengisikan
jumlah loop yang ingin dilakukan dengan perincian 0 - 9
terdiri dari 10 angka. Bila 10 dikonversikan ke bilangan
hexa, maka akan didapat angka A hexa.
b) MOV DL,30h ; Bilangan ASCII yang sama dengan
30 hexa adalah '0' yang akan dicetak dahulu dan
dimasukkan dalam DL sesuai dengan Int 21 hexa service
02 hexa.
c) MOV AH, 02h ; AH diisi dengan service number dari
Interrupt.
d) INT 21h ; Menjalankan Interrupt 21 hexa.
e) INC DL ; Menambahkan DL dengan 1 menjadi 31
hexa yang berarti '1'.
f) LOOP ulangi ; Lompat ke arah MOV AH,02h dan dilakukan
sebanyak 10 kali, setiap kali isi CX dikurangi satu hingga
akhirnya mencapai nol (0).
g) INT 20h ; Perintah INT 20h untuk mengakhiri program
Hasil program ini ditunjukkan pada gambar 26.
Gambar 26. Hasil Program Menampilkan Angka 0 sampai 9
Program Push And Pop
; PROGRAM OPERASI STACK
MOV AH,02H ; Instruksi ini menggerakkan nilai 02H (hexadecimal) ke register AH
MOV CX,1AH ; Menggerakkan nilai hexadecimal 1AH ke register CX. Nilai 1AH adalah jumlah karakter yang akan ditampilkan.
MOV DL,41H ; Menggerakkan nilai hexadecimal 41H ke register DL. Nilai 41H adalah karakter 'A' dalam kode ASCII.
Lagi: INT 21H ;Label yang menandai awal dari loop.Memanggil layanan sistem DOS untuk menampilkan karakter yang disimpan di register DL (yaitu karakter 'A').
PUSH DX ; Menyimpan nilai register DX (karakter 'A') ke dalam stack.
MOV DL,20H ; Menggerakkan nilai hexadecimal 20H ke register DL. Nilai 20H adalah spasi dalam kode ASCII.
INT 21H ;Memanggil layanan sistem DOS untuk menampilkan spasi di layar.
POP DX ;Mengambil nilai dari stack dan menyimpannya kembali ke register DX. Ini mengembalikan karakter 'A' yang sebelumnya disimpan.
INC DL ;Menaikkan nilai di register DL, sehingga sekarang DL berisi karakter 'B'.
LOOP Lagi ; Melakukan loop kembali ke label Lagi hingga register CX (counter loop) menjadi 0.
MOV AH,4CH ; Menggerakkan nilai 4CH (kode layanan DOS untuk mengakhiri program) ke register AH.
INT 21H ; Memanggil layanan sistem DOS untuk mengakhiri program.
; Jadi, program ini secara keseluruhan akan menampilkan karakter 'A' diikuti oleh spasi sebanyak 1AH (atau 26) kali, dengan setiap iterasi karakter yang ditampilkan akan bergeser satu huruf maju dari 'A' ke 'Z'.
| Push and Pop 0-9
; You may
customize this and other start-up templates; ; The location of
this template is c:\emu8086\inc\0_com_template.txt
org 100h
MOV AH,02H
; MOV CX,10
; MOV DL, '0'
;
Lagi: INT 21H
;
INC DL
; LOOP Lagi
;
MOV AH,4CH
; INT 21H
;
ret
Video | ; You may customize this and other start-up templates; | ; The location of this template is c:\emu8086\inc\0_com_template.txt | org 100h | MOV AH,02H ; | MOV CX,10 ; | MOV DL, '0' ; | Lagi: | INT 21H ; | INC DL ; | LOOP Lagi ; | MOV AH,4CH ; | INT 21H ; | ret |
5. File Download[Kembali]
Tidak ada komentar:
Posting Komentar