pemrograman mikrotik
Pemrograman
mikro
Pemrograman
mikro adalah proses penerjemahan dan eksekusi dari setiap instruksi prosesor
menjadi urutan instruksi yang lebih kecil mikro. Ini untuk mengatakan bahwa
mikro-program adalah proses penulisan kode mikro untuk prosesor-mikro. Ini
mendefinisikan fungsi prosesor-mikro sambil mengeksekusi instruksi
mesin-bahasa.
Juga
dikenal sebagai mikro-coding, konsep pemrograman mikro pertama kali
dikembangkan pada tahun 1951 oleh Maurice Wilkes. Ini adalah teknik yang
digunakan dalam menerapkan sebuah Unit Kontrol. Micro-kode atau mikro-program
dikembangkan sebagai instruksi set CPU. Dengan demikian, insinyur desain CPU
menulis mikro-program untuk mengimplementasikan set instruksi mesin. Dalam
proses pengembangan produk perangkat lunak, ini-kode mikro dapat ditulis atau
diubah beberapa kali bahkan selama tahap desain nanti. fleksibilitas seperti di
affords mikro-program besar kebebasan untuk merancang insinyur untuk mengubah
dan / atau datang dengan set instruksi yang lebih kompleks dan dengan demikian
sebagian besar memfasilitasi desain CPU fleksibel. Pada beberapa komputer, mikro-kode
yang disimpan dalam ROM dan karenanya tidak dapat dimodifikasi. Tapi di
komputer yang lebih besar, mereka disimpan dalam EPROM dan, dengan demikian,
dapat digantikan dengan versi segar atau yang lebih baru. Konsep pemrograman
mikro juga digunakan dalam pengembangan perangkat lunak online.
perkembangan
pesat dalam teknologi komputer dalam beberapa tahun terakhir telah membuat
konsep pemrograman mikro tampak agak berlebihan. Program menjadi lebih kompleks
dan ini memiliki dampak langsung pada kinerja perangkat lunak dan pembangunan.
Interpreter dan compiler telah membuat kode tingkat rendah dari perintah
tingkat tinggi. Kemajuan tersebut telah digantikan keunggulan microprogramming.
Ada telah skema desain CPU yang tidak menggunakan pemrograman mikro seperti TTA
Prosesor, Superscaler Prosesor, Prosesor RISC, dan Prosesor RISC.
Pemrograman
mikro menawarkan suatu pendekatan yang lebih terstruktur untuk merancang unit
kendali logika (CLU) dibandingkan dengan kendali hard-wired. Rancangan pemrograman
mikro relatif mudah diubah-ubah dan dibetulkan,menawarkan kemampuan diagnostik
yang lebih baik dan lebih dapat diandalkan daripada rancangan hard-wired.
Karena waktu akses memori kendali ROM menentukan kecepatan operasi CLU maka
kendali microprogrammed mungkin menghasilkan CLU yang lebih lambat dibandingkan
dengan kendali hard-wired.Alasannya adalah bahwa waktu yang diperlukan untuk
menjalankan suatu instruksi-mikro juga harus mencakup waktu akses ROM.
Sebaliknya, suatu keterlambatan dalam CLU hard-wired hanya mungkin disebabkan
oleh keterlambatan waktu penyebaran melalui perangkat keras, yang relatif
sangat kecil. Bagaimanapun juga, ilmu ekonomi kelihatannya lebih menyukai
kendali hard-wired hanya jika sistem itu tidak terlalu kompleks dan hanya
memerlukan beberapa operasi kendali.
Dalam komputer,
pipeline adalah satu set dari elemen pemrosesan
data dihubungkan secara seri, sehingga hasil keluaran dari satu
elemen adalah masukkan bagi elemen berikutnya. Elemen - elemen dari sebuah
pipeline sering dijalankan secara paralel.
Contoh pipeline dalam komputer adalah:
Contoh pipeline dalam komputer adalah:
- pipeline instruksi. Biasanya digunakan di unit pemroses sentral agar istruksi - instruksi dapat dijalankan dalam satu waktu dalam satu sirkuit digital. Biasanya sirkuitnya dibagi dalam beberapa tahap, termasuk decode instruksi, aritmatika dan tahap - tahap penjemputan data dari register, dimana setiap tahap melakukan satu instruksi dalam satu waktu.
- pipeline grafis, sering ditemukan dalam sebagian besar unit pemrosesan grafis, yang terdiri dari berbagai unit aritmatik atau unit pemroses sentral lengkap, yang menerapkan berbagai macam tahap dari operasi render yang umum (seperti proyeksi perspektif, kalkulasi warna dan pencahayaan, primitif gambar, dan sebagainya).
- pipeline perangkat lunak. Dimana keluaran dari suatu program langsung dipakai oleh program lain sebagai masukkan sehingga dapat langsung diproses.
Konsep
Pipeline adalah konsep alami di kehidupan
sehari-hari. Umpamakan sebuah perakitan mobil,
asumsikan beberapa langkah di jalur perakitan adalah untuk memasang mesin,
memasang kap, dan memasang roda (dalam urutan tersebut, dengan berbagai macam
kemungkinan langkah - langkah lain di antara langkah - langkah tersebut).
Sebuah mobil di jalur perakitan hanya satu dari tiga langkah diatas dapat
selesai dalam suatu waktu. Setelah sebuah mobil telah terpasang mesinnya, mobil
tersebut pindah ke pemasangan kap, dan mobil kedua sedang dalam tahap
pemasangan mesin. Setelah mobil pertama selesai memasang kap, mobil kedua dalam
tahap pemasangan kap, mobil pertama dalam tahap pemasangan roda, dan mobil
ketiga yang baru masuk dalam tahap pemasangan mesin. Dan begitu seterusnya.
Jika seumpama pemasangan mesin butuh 20 menit, pemasangan kap butuh 5 menit dan
pemasangan roda butuh 10 menit, maka menyelesaikan ketiga mobil tersebut jika
satu mobil dirakit dalam satu waktu akan membutuhkan waktu 105 menit. Sedangkan
jika menggunakan jalur perakitan seperti yang disebutkan diatas, waktu yang
diperlukan untuk menyelesaikan ketiganya hanya 75 menit.Pemrograman Mikro Processor Dengan Debug
DEBUG adalah alat bantu dalam perancangan peralatan
berbasis mikro-prosesor, karena dapat mencapai tingkat perangkat keras
yang paling dalam dari suatu komputer, misal menulis informasi ke dalam
boot sector, direktori, FAT, menjalankan interupsi BIOS atau DOS.Hal-hal penting dalam Debug :
*Hanya mengenal dan selalu bekerja dengan bilangan-bilangan heksadesimal
*Bekerja dengan penunjukan ke alamat-alamat memori memakai format segment : offset.
*Kemampuan mengakses daerah “very low level access” (software / hardware). Setiap jenis komputer (mainframe, minicomputer, microcomputer) memiliki sarana debugging berbeda.
*Hanya mengenal dan selalu bekerja dengan bilangan-bilangan heksadesimal
*Bekerja dengan penunjukan ke alamat-alamat memori memakai format segment : offset.
*Kemampuan mengakses daerah “very low level access” (software / hardware). Setiap jenis komputer (mainframe, minicomputer, microcomputer) memiliki sarana debugging berbeda.
Langkah mengaktifkan DEBUG.EXE / DEBUG.COM :
a> Debug (enter)
–
Perintah DEBUG
1. R (Register)
Untuk menampilkan informasi komposisi register-register di dalam mikroprosesor, alamat memori, serta isi dari alamat memori tersebut yang mungkin berupa instruksi yang akan dilaksanakan oleh komputer, atau data.
Contoh :
A:\>DEBUG (enter)
r (enter)
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=29E7 ES=29E7 SS=29E7 CS=29E7 IP=0100 NV UP EI PL NZ NA PO NC
29E7:0100 0114 ADD[SI],DX DS:0000=20CD
AX, BX, CX, DX, SP, BP, SI, DI, DS, ES, SS, CS, dan IP adalah register internal mikroprosesor yang dipakai dalam CPU.
NV, UP, EI, PL, NZ, NA, PO, dan NC adalah output dari sebuah register yang disebut register status atau register flag.
Angka 29E7:0100 adalah alamat lokasi memori dengan format segment:offset.
Kedua nilai tersebut merupakan kombinasi antara register CS (Code Segment)
dengan IP (Instruction Pointer).
0114 adalah isi alamat memori bersangkutan, byte ke-1 berisi nilai ’01’, dan byte ke-2 berisi nilai ’14’. Karena setiap alamat memori berisi satu byte, tentunya nilai 01 itulah yang berdiam pada alamat offset 0100, sedangkan nilai 14 ada di alamat 0101 ADD[SI],DX adalah terjemahan intruksi dari alamat memori bersangkutan.
Untuk mengubah nilai-nilai register internal dapat menggunakan perintah :
· RAX = mengubah nilai register AX
· RBX = mengubah nilai register BX
· RCX = mengubah nilai register CX
· RDX = mengubah nilai register DX
· RSP = mengubah nilai register SP
· RBP = mengubah nilai register BP
· RSI = mengubah nilai register SI
· RDI = mengubah nilai register DI
· RDS = mengubah nilai register DS
· RES = mengubah nilai register ES
· RSS = mengubah nilai register SS
· RCS = mengubah nilai register CS
· RIP = mengubah nilai register IP
Sebagai contoh untuk mengubah nilai register AX dari nilai ‘0000’ ke nilai ‘1111’ :
A:\>Debug (enter)
-RAX (enter)
AX 0000
: 1111 (diisi setelah ‘:’ dan enter)
Contoh diatas juga berlaku untuk register internal lainnya dan untuk diperhatikan bahwa angka-angka yang dimasukkan kedalam register harus nilai heksadesimal.
2. D (Dump)
Berfungsi untuk melihat isi blok memori.
Contoh :
A:\>Debug (enter)
-d 0100 (enter)
Hasil yang diperoleh : (import dari sidekick ke text !)
Dari tampilan tersebut, terbagi menjadi 3 bagian, yaitu :
· Bagian kiri : menampilkan alamat-alamat memori dengan format segment:offset
· Bagian tengah : menampilkan angka-angka dalam heksadesimal sebagai isi dari alamat-alamat memori
· Bagian kanan : menampilkan kode-kode karakter ASCII sebagai terjemahan dari angka heksadesimal tersebut
Debug hanya akan memperlihatkan 96 jenis karakter ASCII tercetak (printable character), mulai dari nilai desimal 33 – 127. Di luar nilai itu, karakter yang ditampilkan hanyalah berupa tanda titik (dot atau period).
Beberapa parameter yang dapat digunakan :
· L (length / panjang)
Memiliki arti menampilkan data sepanjang 2 byte, bila parameter ‘L’ tidak diberikan, maka otomatis akan ditampilkan 128 byte data.
-D 0100 L 2 (enter)
· Alamat awal – alamat akhir
-D 0100 01FF (enter)
· Alamat segment:offset
-D FFFF:0000 (enter)
· Alamat segment:offset sampai segment:offset
-D F000:E000 F000:E000 (enter)
3. U (Unassemble)
Berfungsi untuk menampilkan listring dari suatu program bahasa mesin.
Contoh :
A:\>Debug (enter)
-U FFFF:0000 (enter)
Hasil : import dari sidekick ke text !
Beberapa bentuk perintah ‘U’ :
· U F000:E05B (enter)
4. E (enter)
Berfungsi untuk mengisi atau mengubah data dalam memori.
Contoh :
A:\>Debug (enter)
-E 0100 (enter)
Hasil :
-E 0100
29E7:0100 01.
Setelah angka 01, dapat dimasukkan nilai untuk mengganti angkat tersebut langsung di belakangnya yang diakhir dengan menekan ENTER atau menekan SPACE BAR untuk berpindah ke alamat berikutnya atau menekan tanda ‘-‘ (Hyphen) untuk mundur ke lokasi sebelumnya.
5. F (Fill)
Berfungsi untuk mengisi lokasi memori. Perbedaan dengan perintah ‘E (Enter)’, yang menawarkan modifikasi memori secara satu alamt demi satu alamat, sedang ‘F (Fill” untuk mengubah isi alamat memori dalam jumlah besar, sesuai dengan rentang (range) yang dikehendaki.
Contoh :
A:\>Debug (enter)
-F 0100 017F 58 (enter)
Berarti isilah mulai alamat offset 0100 sampai offset 017F dengan nilai heksa 58 (karakter ASCII ‘x’).
atau
– F F 0100 017F ‘x’ (enter)
Beberapa bentuk perintah ‘F’ :
· F 0100 L 1 41 (enter)
Arti : mulai offset 0100 sebanyak 1 byte diisi dengan nilai heksa 41 (karakter ASCII ‘A’).
6. C (Compare)
Berfungsi untuk membandingkan isi sebuah blok memori dengan isi blok memori lainnya.
Format perintah : C alamat1 panjang alamat2
Contoh :
A:\>Debug (enter)
-C 0100 L 10 0200 (enter)
Berarti mulai offset 0100 sebanyak 16 byte (10 heksa) bandingkan dengan offset 0200. Hasil yang dimunculkan hanyalah nilai-nilai yang berbeda setiap alamat.
Apabila dilayar tidak memberikan reaksi apapun selain kembali ke prompt ‘-‘ atau hyphen, berarti kedua blok memori persis sama.
7. S (Search)
Berfungsi untuk mencari data baik yang berupa karakter maupun untaian karakter (string) di dalam suatu blok memori tertentu.
Apabila dalam pencarian, data yang dicari diketemukan, maka akan ditampilkan semua alamat dari data tersebut lengkap dengan nilai segment dan offsetnya, sebaliknya bila tidak diketemukan akan kembali ke prompt ‘-‘.
Format perintah : S alamat awal panjang alamat akhir
Contoh :
A:\>Debug (enter)
-S F000:E000 L FF “IBM” (enter)
Berarti mulai alamat F000:E000 sebanyak FFh byte cari string “IBM”.
-S F000:E000 L FF “A” (enter)
Berarti mulai alamat F000:E000 sebanyak FFh byte cari string “A”..
8. M (Move)
Berfungsi untuk memindahkan atau menyalin data yang ada di suatu lokasi memori ke alamat memori lainnya.
Format perintah : M alamat asal panjang alamat tujuan
Contoh :
A:\>Debug (enter)
-M 0100 L 7F 0200 (enter)
Berarti mulai alamat offset 0100 sebanyak 7Fh byte isi memorinya pindahkan atau kopikan ke offset 0200.
Dari pembahasan perintah-perintah DEBUG dapat disimpulkan bahwa DEBUG dibuat dengan tujuan untuk dapat mengeksplorasi program-program yang sudah dibuat berikut segala dampaknya terhadap sistem dan aplikasi, sedangkan ASSEMBLY diadakan dengan untuk mempermudah seorang programmer dalam menyusun instruksi-instruksi pada sebuah program yang sedang dibuat.
INSTRUKSI-INSTRUKSI MIKROPROSESOR
Untuk dapat mempergunakan serta memanfaatkan sebuah mikroprosesor, kita harus mengenal terlebih dahulu instruksi-instruksi yang bisa dijalankan oleh mikroprosesor yang bersangkutan. Karena pada hakekatnya, seluruh kemampuan yang ada pada mikroprosesor terletak pada kecanggihan perintah-perintah yang terdapat didalamnya. Tanpa adanya instruksi-instruksi yang membentuk sebuah program, mikroprosesor tidak lebih hanya merupakan serpihan tanpa guna. Setiap mikroprosesor mempunyai perbendaharaan instruksi sendiri-sendiri, yang disebut dengan ‘Set Instruksi’ atau ‘Instruction Set’.
Operasi, Operator dan Operand
Pada dasarnya mikroprosesor mampu melakukan beberapa jenis operasi, antara lain operasi perhitungan (arithmetic), operasi logika (logical operation), operasi transfer data (data transfer operation), manipulasi string serta kendali prosesor.
Masing-masing jenis instruksi tersebut adalah sebagai berikut :
a. Perhitungan
ADD (penjumlahan), SUB (pengurangan), MUL (perkalian), DIV (pembagian)
b. Logika
AND (logika DAN), OR (logika OR), XOR (logika Exclusive OR)
c. Transfer Data
MOV (pindahkan/salin), IN (Input), OUT (Output), dan sebagainya.
d. Transfer Kendali
JMP (loncat), CALL (panggil), RET (kembali), INT (interupsi), dsb
e. Manipulasi String
MOVS (pindahkan/salin string), CMPS (bandingkan string), LODS (muatkan byte/word ke register AX), dan sebagainya.
f. Kendali Prosesor
CLC (hilangkan bawaan/carry), CLI (hilangkan interupsi), dan sebagainya.
Pada instruksi-instruksi komputeri, operator diterapkan sebagai Operation-Code (Op-Code), sedangkanbilangan disebut Operand (adalah obyek dari suatu operasi).
Operasi Transfer Data
1. Pemindahan data dari data register ke register
Format : MOV register, register
Contoh :
-a 0100 (enter)
xxxx : 0100 mov AX,DX (enter)
xxxx : 0102 (enter)
2. Pemindahan data dari memori ke register
Format : MOV register, memori
Contoh :
-a 0100 (enter)
xxxx : 0100 mov BX,[0200] (enter)
xxxx : 0104 (enter)
3. Memindahkan data langsung ke dalam register
Format : MOV register, bilangan
Contoh :
-a 0100 (enter)
xxxx : 0100 mov AX,1111 (enter)
xxxx : 0103 mov BX,2222 (enter)
xxxx : 0106 mov CX,3333 (enter)
xxxx : 0109 mov DX,4444 (enter)
xxxx : 010C (enter)
-a 0100
xxxx : 0100 mov AH,FFFF (enter)
xxxx : 010C (enter)
Apa yang terjadi ? Beri alasan !
4. Memindahkan data dari register ke memori
Format : MOV memori, register
Contoh :
-a 0100
xxxx : 0100 mov [0200],AX (enter)
xxxx : 0103 (enter)
5. Pertukaran data antar register
Format : XCHG register, register
Contoh :
-a 0100
xxxx : 0100 xchg AX,BX (enter)
xxxx : 0102 (enter)
Operasi Aritmatik
1. Menjumlahkan dua bilangan dengan perintah ADD
Format : ADD register,register
2. Mengurangkan dua bilangan dengan perintah SUB
Format : SUB register,register
3. Perkalian dua bilangan dengan perintah MUL
Format : MUL register
4. Membagi dua bilangan dengan perintah DIV
Format : DIV register
Operasi Logika
1. Instruksi logika AND
Format : AND register,register
2. Instruksi logika OR
Format : OR register,register
3. Instruksi logika XOR
Format : XOR register,register
semoga materi ini berguna bagi pembaca trimakasih.
a> Debug (enter)
–
Perintah DEBUG
1. R (Register)
Untuk menampilkan informasi komposisi register-register di dalam mikroprosesor, alamat memori, serta isi dari alamat memori tersebut yang mungkin berupa instruksi yang akan dilaksanakan oleh komputer, atau data.
Contoh :
A:\>DEBUG (enter)
r (enter)
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=29E7 ES=29E7 SS=29E7 CS=29E7 IP=0100 NV UP EI PL NZ NA PO NC
29E7:0100 0114 ADD[SI],DX DS:0000=20CD
AX, BX, CX, DX, SP, BP, SI, DI, DS, ES, SS, CS, dan IP adalah register internal mikroprosesor yang dipakai dalam CPU.
NV, UP, EI, PL, NZ, NA, PO, dan NC adalah output dari sebuah register yang disebut register status atau register flag.
Angka 29E7:0100 adalah alamat lokasi memori dengan format segment:offset.
Kedua nilai tersebut merupakan kombinasi antara register CS (Code Segment)
dengan IP (Instruction Pointer).
0114 adalah isi alamat memori bersangkutan, byte ke-1 berisi nilai ’01’, dan byte ke-2 berisi nilai ’14’. Karena setiap alamat memori berisi satu byte, tentunya nilai 01 itulah yang berdiam pada alamat offset 0100, sedangkan nilai 14 ada di alamat 0101 ADD[SI],DX adalah terjemahan intruksi dari alamat memori bersangkutan.
Untuk mengubah nilai-nilai register internal dapat menggunakan perintah :
· RAX = mengubah nilai register AX
· RBX = mengubah nilai register BX
· RCX = mengubah nilai register CX
· RDX = mengubah nilai register DX
· RSP = mengubah nilai register SP
· RBP = mengubah nilai register BP
· RSI = mengubah nilai register SI
· RDI = mengubah nilai register DI
· RDS = mengubah nilai register DS
· RES = mengubah nilai register ES
· RSS = mengubah nilai register SS
· RCS = mengubah nilai register CS
· RIP = mengubah nilai register IP
Sebagai contoh untuk mengubah nilai register AX dari nilai ‘0000’ ke nilai ‘1111’ :
A:\>Debug (enter)
-RAX (enter)
AX 0000
: 1111 (diisi setelah ‘:’ dan enter)
Contoh diatas juga berlaku untuk register internal lainnya dan untuk diperhatikan bahwa angka-angka yang dimasukkan kedalam register harus nilai heksadesimal.
2. D (Dump)
Berfungsi untuk melihat isi blok memori.
Contoh :
A:\>Debug (enter)
-d 0100 (enter)
Hasil yang diperoleh : (import dari sidekick ke text !)
Dari tampilan tersebut, terbagi menjadi 3 bagian, yaitu :
· Bagian kiri : menampilkan alamat-alamat memori dengan format segment:offset
· Bagian tengah : menampilkan angka-angka dalam heksadesimal sebagai isi dari alamat-alamat memori
· Bagian kanan : menampilkan kode-kode karakter ASCII sebagai terjemahan dari angka heksadesimal tersebut
Debug hanya akan memperlihatkan 96 jenis karakter ASCII tercetak (printable character), mulai dari nilai desimal 33 – 127. Di luar nilai itu, karakter yang ditampilkan hanyalah berupa tanda titik (dot atau period).
Beberapa parameter yang dapat digunakan :
· L (length / panjang)
Memiliki arti menampilkan data sepanjang 2 byte, bila parameter ‘L’ tidak diberikan, maka otomatis akan ditampilkan 128 byte data.
-D 0100 L 2 (enter)
· Alamat awal – alamat akhir
-D 0100 01FF (enter)
· Alamat segment:offset
-D FFFF:0000 (enter)
· Alamat segment:offset sampai segment:offset
-D F000:E000 F000:E000 (enter)
3. U (Unassemble)
Berfungsi untuk menampilkan listring dari suatu program bahasa mesin.
Contoh :
A:\>Debug (enter)
-U FFFF:0000 (enter)
Hasil : import dari sidekick ke text !
Beberapa bentuk perintah ‘U’ :
· U F000:E05B (enter)
4. E (enter)
Berfungsi untuk mengisi atau mengubah data dalam memori.
Contoh :
A:\>Debug (enter)
-E 0100 (enter)
Hasil :
-E 0100
29E7:0100 01.
Setelah angka 01, dapat dimasukkan nilai untuk mengganti angkat tersebut langsung di belakangnya yang diakhir dengan menekan ENTER atau menekan SPACE BAR untuk berpindah ke alamat berikutnya atau menekan tanda ‘-‘ (Hyphen) untuk mundur ke lokasi sebelumnya.
5. F (Fill)
Berfungsi untuk mengisi lokasi memori. Perbedaan dengan perintah ‘E (Enter)’, yang menawarkan modifikasi memori secara satu alamt demi satu alamat, sedang ‘F (Fill” untuk mengubah isi alamat memori dalam jumlah besar, sesuai dengan rentang (range) yang dikehendaki.
Contoh :
A:\>Debug (enter)
-F 0100 017F 58 (enter)
Berarti isilah mulai alamat offset 0100 sampai offset 017F dengan nilai heksa 58 (karakter ASCII ‘x’).
atau
– F F 0100 017F ‘x’ (enter)
Beberapa bentuk perintah ‘F’ :
· F 0100 L 1 41 (enter)
Arti : mulai offset 0100 sebanyak 1 byte diisi dengan nilai heksa 41 (karakter ASCII ‘A’).
6. C (Compare)
Berfungsi untuk membandingkan isi sebuah blok memori dengan isi blok memori lainnya.
Format perintah : C alamat1 panjang alamat2
Contoh :
A:\>Debug (enter)
-C 0100 L 10 0200 (enter)
Berarti mulai offset 0100 sebanyak 16 byte (10 heksa) bandingkan dengan offset 0200. Hasil yang dimunculkan hanyalah nilai-nilai yang berbeda setiap alamat.
Apabila dilayar tidak memberikan reaksi apapun selain kembali ke prompt ‘-‘ atau hyphen, berarti kedua blok memori persis sama.
7. S (Search)
Berfungsi untuk mencari data baik yang berupa karakter maupun untaian karakter (string) di dalam suatu blok memori tertentu.
Apabila dalam pencarian, data yang dicari diketemukan, maka akan ditampilkan semua alamat dari data tersebut lengkap dengan nilai segment dan offsetnya, sebaliknya bila tidak diketemukan akan kembali ke prompt ‘-‘.
Format perintah : S alamat awal panjang alamat akhir
Contoh :
A:\>Debug (enter)
-S F000:E000 L FF “IBM” (enter)
Berarti mulai alamat F000:E000 sebanyak FFh byte cari string “IBM”.
-S F000:E000 L FF “A” (enter)
Berarti mulai alamat F000:E000 sebanyak FFh byte cari string “A”..
8. M (Move)
Berfungsi untuk memindahkan atau menyalin data yang ada di suatu lokasi memori ke alamat memori lainnya.
Format perintah : M alamat asal panjang alamat tujuan
Contoh :
A:\>Debug (enter)
-M 0100 L 7F 0200 (enter)
Berarti mulai alamat offset 0100 sebanyak 7Fh byte isi memorinya pindahkan atau kopikan ke offset 0200.
Dari pembahasan perintah-perintah DEBUG dapat disimpulkan bahwa DEBUG dibuat dengan tujuan untuk dapat mengeksplorasi program-program yang sudah dibuat berikut segala dampaknya terhadap sistem dan aplikasi, sedangkan ASSEMBLY diadakan dengan untuk mempermudah seorang programmer dalam menyusun instruksi-instruksi pada sebuah program yang sedang dibuat.
INSTRUKSI-INSTRUKSI MIKROPROSESOR
Untuk dapat mempergunakan serta memanfaatkan sebuah mikroprosesor, kita harus mengenal terlebih dahulu instruksi-instruksi yang bisa dijalankan oleh mikroprosesor yang bersangkutan. Karena pada hakekatnya, seluruh kemampuan yang ada pada mikroprosesor terletak pada kecanggihan perintah-perintah yang terdapat didalamnya. Tanpa adanya instruksi-instruksi yang membentuk sebuah program, mikroprosesor tidak lebih hanya merupakan serpihan tanpa guna. Setiap mikroprosesor mempunyai perbendaharaan instruksi sendiri-sendiri, yang disebut dengan ‘Set Instruksi’ atau ‘Instruction Set’.
Operasi, Operator dan Operand
Pada dasarnya mikroprosesor mampu melakukan beberapa jenis operasi, antara lain operasi perhitungan (arithmetic), operasi logika (logical operation), operasi transfer data (data transfer operation), manipulasi string serta kendali prosesor.
Masing-masing jenis instruksi tersebut adalah sebagai berikut :
a. Perhitungan
ADD (penjumlahan), SUB (pengurangan), MUL (perkalian), DIV (pembagian)
b. Logika
AND (logika DAN), OR (logika OR), XOR (logika Exclusive OR)
c. Transfer Data
MOV (pindahkan/salin), IN (Input), OUT (Output), dan sebagainya.
d. Transfer Kendali
JMP (loncat), CALL (panggil), RET (kembali), INT (interupsi), dsb
e. Manipulasi String
MOVS (pindahkan/salin string), CMPS (bandingkan string), LODS (muatkan byte/word ke register AX), dan sebagainya.
f. Kendali Prosesor
CLC (hilangkan bawaan/carry), CLI (hilangkan interupsi), dan sebagainya.
Pada instruksi-instruksi komputeri, operator diterapkan sebagai Operation-Code (Op-Code), sedangkanbilangan disebut Operand (adalah obyek dari suatu operasi).
Operasi Transfer Data
1. Pemindahan data dari data register ke register
Format : MOV register, register
Contoh :
-a 0100 (enter)
xxxx : 0100 mov AX,DX (enter)
xxxx : 0102 (enter)
2. Pemindahan data dari memori ke register
Format : MOV register, memori
Contoh :
-a 0100 (enter)
xxxx : 0100 mov BX,[0200] (enter)
xxxx : 0104 (enter)
3. Memindahkan data langsung ke dalam register
Format : MOV register, bilangan
Contoh :
-a 0100 (enter)
xxxx : 0100 mov AX,1111 (enter)
xxxx : 0103 mov BX,2222 (enter)
xxxx : 0106 mov CX,3333 (enter)
xxxx : 0109 mov DX,4444 (enter)
xxxx : 010C (enter)
-a 0100
xxxx : 0100 mov AH,FFFF (enter)
xxxx : 010C (enter)
Apa yang terjadi ? Beri alasan !
4. Memindahkan data dari register ke memori
Format : MOV memori, register
Contoh :
-a 0100
xxxx : 0100 mov [0200],AX (enter)
xxxx : 0103 (enter)
5. Pertukaran data antar register
Format : XCHG register, register
Contoh :
-a 0100
xxxx : 0100 xchg AX,BX (enter)
xxxx : 0102 (enter)
Operasi Aritmatik
1. Menjumlahkan dua bilangan dengan perintah ADD
Format : ADD register,register
2. Mengurangkan dua bilangan dengan perintah SUB
Format : SUB register,register
3. Perkalian dua bilangan dengan perintah MUL
Format : MUL register
4. Membagi dua bilangan dengan perintah DIV
Format : DIV register
Operasi Logika
1. Instruksi logika AND
Format : AND register,register
2. Instruksi logika OR
Format : OR register,register
3. Instruksi logika XOR
Format : XOR register,register
semoga materi ini berguna bagi pembaca trimakasih.
Sumber:
- http://priohimawan.blogspot.co.id/2014/01/pemrograman-mikro.html
- https://buatberbagisaja.wordpress.com/2011/06/28/pemrograman-mikro-processor-dengan-debug/
- https://buatberbagisaja.wordpress.com/2011/06/28/pemrograman-mikro-processor-dengan-debug/

Komentar
Posting Komentar