Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
Instruksi Aritmatika dan Logika
PENDAHULUAN Pada bab ini, akan dipelajari instruksi aritmatika dan logika. Instruksi aritmatika meliputi penjumlahan, pengurangan, perkalian, pembagian, perbandingan, increment, dan decremerit. Instruksi logika meliputi AND, OR, Ekslusif-OR, NOT, peigeseran (shift), perputaran (rotate), dan perbandingan logika (TEST). Tak ketinggalan adalah pemaparan instruksi sampai Pentium 4, yaitu XADD, SHRD, SHLD, bit tes, dan bit scan. Bab ini menyertakan bahasan instruksi perbandingan string, yang digunakan untuk scannirg data tabular dan perbandingan bagian memori data. Kedua pekerjaan tersebut dilakukan secara efisien dengan instruksi string scan (SCAS) dan perbandingan string (CMPS). Jika Anda familiar dengan mikroprosesor 8-bit, Anda akan mengenali bahwa set instruksi 8086 sampai Pentium 4 jauh lebili baik dibandingkan mikroprosesor 8-bit yang lain karena sebagian besar instruksinya mempunyai dua operand, sementara yang lain lianya satu operand. Bahkan ini merupakan mikroprosesor pertama Anda, Anda akan cepat memahami bahwa mikroprosesor tersebut memunyai instruksi aritmatika dan logika yang canggih dan mudah digunakan. NEXT
2
Usai memelajari bab ini, anda akan mampu untuk :
TUJUAN BAB Usai memelajari bab ini, anda akan mampu untuk : Menggunakan instruksi aritmatika dan logika untuk menyelesaikan aritmatika biner, BCD dan ASCII yang sederhana. 2. Menggunakan AND, OR, dan Eksklusif-OR untuk menyelesaikan manipulasi bit biner. 3. Menggunakan instruksi pergeseran dan perputaran. 4. Menjelaskan operasi sampai Pentium 4: pengubahan dan penjumlahan, pembandingan dan penjumlahan, pergeseran presisi ganda, bit tes, dan instruksi bit scan. 5. Memeriksa isi tabel untuk pencocokkan dengan instruksi string. NEXT
3
Penjumlahan, Pengurangan, dan Perbandingan
Terdapat sejumlah instruksi dalam mikroprosesor yang meliputi penjumlahan, pengurangan, dan perbandingan. Bagian ini akan menjelaskan instruksi penjumlahan, pengurangan, dan perbandingan. Penggunaan instruksi tersebut dalam memanipulasi register dan memori data juga akan diperkenalkan di sini. Penjumlahan Instruksi penjumlahan (ADD) memunyai banyak bentuk dalam mikroprosesor. Bagian ini menguraikan kegunaan instruksi ADD titittik peiijumialiati 8-bit, 16-bit, dan 32-bit. Bentuk kedua dari penjumlahan disebut add-ivith-cprry, yang diperkenalkan dengan instruksi ADC. Pada akhirnya, akan disampaikan instruksi increment (INC). Increment inerupakan tipe instruksi penjumlahan khusus yang menjumlahkan suatu angka dengan satu. Bentuk lain dari penjumlahan, seperti BCD dan ASCII, akan dipelajari pada bagian Selain itu, juga uga dijelaskan instruksi XADD yang terdapat dalam sampai Pentium 4. Tabel 5-1 mengilustrasikan mode pengalamatan yang terdapat pada instruksi ADD. (Mode pengalamatan ini meliputi hampir semua mode yang telah disebutkan pada Bab 3.) Tetapi, karena terdapat lebili dari variasi instruksi ADD dalam set instruksi, tidak mungkin untuk menuliskan semua variasi tersebut dalam tabel. Register seginen lianya dapat dipindahkan, disimpan di dalam stack (push), dan dikeluarkan dari stack (pop). Perlu diketahui bahwa, seperti halnya instruksi yang lain, register 32-bit hanya terdapat pada sainpai Pentium 4.
4
Tabel 5-1 Instruksi Penjumlahan
Bahasa Assembly Operasi ADD AL,BL AL = AL + BL ADD CX,DI CX = CX + DI ADD EBP,EAX EBP = ESP + EAX ADD CL,44H CL = CL + 44H ADD BX,245FH BX = BX + 245FH ADD EDX,12345H EDX = EDX H ADD BXI,AL AL dijumlahkan dengan isi lokasi memori segmen data yang dialamati oleh BX dan hasil penjumlahan disimpan pada lokasi memori ynig sama ADD CL [BP] Isi byte lokasi memori segmen stack yang dialamati oleh BP dijumlahkan dengan Cl dan hasil penjumlahan disimpan dalam CL ADD AL[EBX] Isi byqe lokasi memori segmen data yang dialamati oleh EBX dijumlahkan dengan AL dan hasil penjumlahan disimpan dalam AL ADD BQ[S1 + 2] Isi word lokasi memberi segmen data yang dialamati oleh Sl plus 2 dijumlahkan dengan BX dan hasil penjumlahan disimpan dalam BX ADD CL,TEMP Isi byte lokasi mernori segmen data TEMP dijumlahkan dengan CL dan hasil penjumlahan disimpan dalam CL ADD B.X,TENlP[Dl] Isi word lokasi memori segmen data yang dialamati oleh TEMP plus DI dijumlahkan dengan SX dan hasil penjumlahan disimpan dalam BX ADD [BX + DI],DL DL dijumlahkan dengan isi lokasi memori segmen data yang dialamati oleh BX plus M dwi hasil penjumlahan disimpan di lokasi memori yang sama ADD BYTE PTR [DI]3 3 dijumlahkan dengan isi byte lokasi memori segmen data yang dialamati oleh Of ADD BX,[EAX + 2'ECX] Isi word lokasi memori segmen data yang dialamati oleh penjumlahan 2 kall ECX plus EAX dijumlahkan dengan BX dan hasil penjumlahan disimpan dalam BX
5
PENGURANGAN Terdapat berbagai macam bentuk pengurangan (substraction, atau SUB) dalam set instruksi. Bentuk ini menggunakan setiap bentuk mode pengalamatan untuk 8-bit, 16-bit, atau 32-bit. Bentuk khusus pengurangan (decrement, atau DEC) mengurangi 1 dari suatu register atau lokasi memori. Bagian 5-21 menampilkan materi mengenai pengurangan data BCD dan ASCII. Seperti halnya penjumlahan, angka yang lebih lebar dari 16-bit atau bit llarus dikurangkan secara bertahap. Instruksi substract-with-borrow (SBB) melakukan pengurangan jenis ini. Pda prosesor ,0486 sampai Pentium 4, set instruksi juga meliputi instruksi perbandingan dan pertukaran. Tabel 5-4 berisi daftar beberapa mode pengalamatan yang dapat dikenakan dengan instruksi pengurangan (SUB). Terdapat lebih dari 1000 kernungkinan instruksi pengurangan sehingga inenjadi terlalu banyak untuk ditampilkan di sini. Tipe instruksi pengurangan yang tidak diperbolehkan adalah memori-ke-memori dan pengurangan register segmen. Seperti instruksi aritmatika yang lain, instruksi pengurangan juga dapat memengaruhi bit flag.
6
Gambar 5-2 Pengurangan dengan Borrow yang memperlihatkan bagaimana flag carry (C)
penyebarkan borrow
7
Perbandingan Instruksi perbandingan (CMP) merupakan sebuah pengurangan yang hanya mengubah bit f1ag; operand tujuan tidak pernah berubah. Perbandingan sangat bermanfaat untuk pengecekan isi seluruh isi register atau lokasi memori terhadap nilai yang lain. CMP biasany diikuti dengan instruksi lompatan bersyarat, yang mengetes kondisi bit flag. Tabel 5-7 berisi daftar variasi instruksi perbandingan yang menggunakan model pengalamatan yang yan sama dengan instruksi pengurangan dan penambahan yang telah dibahas di atas. Sama dengan sebelumnya, satu-satunya bentuk yang tidak diperbolehkan adalah perbandingan antara memori dengan memori dan perbandingan register segmen. Contoh 5-12 memperlihatkan sebuah perbandingan yang diikuti dengan instruksi lompatan bersyarat. Pada contoh ini, isi Al dibandingkan dengan IOH. Instruksi lompatan bersyarat yang seringkali mengikuti perbandingan adalah JA (jump above) atau JB (jump bellow). Jika JA mengikuti perbandingan, lompatan terjadi ketika nilai AL di atas IOP. Jika JB mengikuti perbandingan, lompatan terjadi ketika nilai AL di bawah IOH. Pada contoh ini, instruksi JAE mengikuti perbandingan. Instruksi ini mengakibatkan program akan terus ke lokasi memori SUBER jika nilai AL sama dengan atau di atas JOH. Terdapat juga instruksi JBE (jurup below or equal) yang dapat mengikuti perbandingan agar melakukan lompatanjika hasilnya adalah sama atau di bawah nilai 10H. Bab 6 memberikan penjelasan yang lebili detail meagenal perbandingan dan instruksi lompatan bersyarat.
8
Tabel 5-7 Instruksi perbandingan
Bahasa Assembly Operasi CMP CL,BL CL – BL CMP AX,SP AX – SP CMP EBP,ESI EBP – ESI CMP AX,2000H AX – 2000H CMP [DI],CH Isi lokasi rnemori segmen data yang dialamati DI dikurangi CH CMP CL,[BP] CL dikurangi isi lokasi segmen data berukuran byte yang dialamati oleh BP CMP AH,TEMP AH dikurangi isi lokasi segmen data TEMP yang berukuran byte CMP DI,TEMP[BX] DI dikurangi isi lokasi memori segmen data berukuran word yang dialamati oleh penjumlahan TEMP plus BX CMP AL,[DI + ESI] AL dikurangi isi lokasi memori segmen data berukuran byte yang dialamati oleh penjumlahan EDI plus ESI
9
PERKALIAN DAN PEMBAGIAN
Hanya mikroprosesor modern saja yang memunyai instruksi perkalian dan pembagian. Mikroprosesor 8-bit awal tidak dapat mengalikan atau membagi tanpa menggunakan program yang mengalikan atau membagi dengan menggunakan serangkaian pergeseran dan penjumlahan atau pengurangan. Menyadari kelemahan ini, pemanufaktur mikroprosesor instruksi perkalian dan pembagian ke dalam set instruksi mikroprosesor yang lebih baru. Prosesor Pentium-Pentium 4 memunyai rangkaian khusus yang melakukan perkalian dalam waktu satu periode clock, sedangkan pada mikroprosesor Intel yang lama perintah perkalian yang sama memerlukan waktu 40 periode clock. Perkalian Perkalian dilaksanakan dalam byte, word, atau doubleword, dan dapat berupa integer bertanda (IMUL) atau integer tidak beitanda (MUL). Perlu diketahui bahwa hanya prosesor sampai Pentium 4 yang dapat mengalikan doubleword 32-bit. Hasil setelah perkalian selalu berupa hasil selebar dua kalinya. jika dua angka 8-bit dikalikan, perkalian tersebut menghasilkan angka 16-bit; jika dua angka 16-bit dikalikan, perkalian tersebut akan menghasilkan angka 32-bit; dan jika dua angka 32-bit dikalikan, dihasilkan angka 64-bit. Beberapa bit flag (0 dan C) berubah ketika instruksi perkalian dieksekusi, dan menghasilkan hasil yang dapat diprediksi. Fla, lain juga berubah, tetapi hasilnya tidak dapat diprediksi dan oleh karena itu tidak digunakan. Pada perkalian 8-bit, jika most significant 8-bit hasil adalah 0, bit flag C dan O akan sama dengan 0. Flag tersebut menunjukkan apakah hasil memunyai lebar 8-bit (C = 0) ataukah 16-bit (C = 1). Pada perkalian 16-bit, jika most significant 16-bit hasil adalah 0 maka C dan 0 menjadi 0. Adapun pada perkalian 32-bit, C dan O menandakan bahwa most significant 32-bit hasil adalah nol.
10
Contoh 5-13 0000 B3 05 MOV BD,5 ;load data 0002 B1 OA MOV CD,10 0004 8A C1 MOV AL,CL ;position data 0005 F6 H3 MUL BL ;multiply 0008 8B DO MOV DX,AX ;position product
11
Pembagian Seperti halnya perkalian, pembagian pada prosesor terjadi pada angka 8-bit atau 16-bit, dan angka 32-bit pada Pentium 4. angka ini dapat berupa angka integer bertanda (IDIV) atau tak bertanda (DIV). pembilang selalu dua kali lebih lebar dari yang dibagi oleh operand. Jadi, pembagian 8-bit membagi angka 16-bit dengan angka 8-bit; pembagian 16-bit membagi angka 32-bit dengan angka 16-bit; dan pembagian 32-bit membgi angka 62-bit dengan angka 32-bit. Tidak ada instruksi pembagian immediate pada semua mikroprosesor. Tidak ada bit flag yang perubahannya dapat dipresikdi pada pembagian. Pembagian dapat menghasilkan dua tipe kesalahan yang berbeda; yang satu adalah pembagian dengan nol. Sedangkan yang lain adalah overflow pembagian. Overflow pembagian terjadi ketika sebuah angka kecil menjadi pembagian angka besar. Sebagai contoh, misalkan AX = 3000 dan dibagi dengan 2. karena hasil pembagian 8-bit terdapat pada AL, hasil 1500 menyebabkan overflow pembagian karena 1500 tidak cukup jika ditempatkan dalam AL. pada kasus yang sama, mikroprosesor akan membangkitkan interupsi jika terjadi kesalahan pembagian. Pada kebanyakan sistem, interupsi yang disebabkan oleh kesalahan pembagian menampilkan pesan kesalahan pada layer video. Interupsi kesalahan pembagian dan semua interupsi lain pada mikroprosesor akan diuraikan pada Bab 6.
12
CONTOH 5-14 0000 A R MOV AL,NUMB ; get NUMB 0003 B MOV AH, 0 ; zero-extend 0005 F R DIV NUMB1 ; divide by NUMB1 0009 A R MOV ANSO, AL ; save quotient 000C R MOV ANSR, AH ; save remainder
13
ARITMATIKA BCD DAN ASCII
Mikroprosesor memperbolehkan manipulasi data BCD (binary-coded decimal) dan ASCII (American Standard Code for Information Interchange). Manipulasi ini diselesaikan dengan instruksi yang menyesuaikan angka untuk aritmatika BCD dan ASCII. Operasi BCD terdapat pada sistem seperti pada terminal penjualan (contoh, mesin pencatat uang) dan sistem lainnya yang jarang membutuhkan aritmatika. Operasi ASCII dilakukan pada data ASCII yang digunakan oleh berbagai program. Pada banyak kasus, aritmatika BCD dan ASCII jarang digunakan saat ini. ARITMATIKA BCD Dua teknik aritmatika yang bekeja dengan data BCD: penjumlahan dan pengurangan. Set instruksi menyediakan dua instruksi yang mengoreksi hasil penjumlahan BCD dan pengurangan BCD. Instruksi DAA (decimal adjust after addition) yang mengikuti penjumlahan BCD, dan DAS (decimal adjust after substraction) yang mengikuti pengurangan BCD. Kedua instruksi tersebut mengoreksi hasil penjumlahan dan pengurangan sehingga terbentuk angka BCD. Untuk data BCD, angka selalu tampak dalam bentuk packed BCD dan disimpan sebagai dua digit BCD per byte. Instruksi penyesuaian hanya berfungsi dengan register AL setelah penjumlahan dan pengurangan BCD.
14
Contoh 5-19 0000 BA 1234 M0V DX,1234H ;1oad 1,234 0003 BB 3099 MOV BX,3099H ;load 3,099 0006 8A C3 MOV AL,BL ;subtract DL from BL 0008 2A C2 SUB AL,DL 000A 2F DAS ;adjust 000B 8A C8 MOV CL,AL ;answer to CL 000D 8A C7 MOV AL,BH ;subtract DH 000F 1A C6 SBB AL,DH 0011 2F DAS ;adjust 0012 8A E8 MOV CH,AL ;answer to CH
15
Aritmatika ASCII Instruksi aritmatika ASCII berfungsi pada angka berkode ASCII. Angka ini mempunyai nilai dari 30H sampai 39H untuk angka 0-9. Terdapat empat instruksi yang digunakan untuk aritmatika ASCII: AAA (ASCII adjust after addition), AAD (ASCII adjust operasi befire divison), AAM (ASCII adjust after multiplication), dan AAS (ASCII adjust after substraction). Instruksi-instruksi tersebut menggunakan register AX sebagai register sumber dan tujuan.
16
CONTOH 5-21 0000 D MOV AX, 31H ; load ASCII 1 ADD AL, 39 H ; add ASCII 9 AAA ; adjust ADD AX, 3030 H ; answer to ASCII
17
Soal Buatlah tabel dari instruksi penjumlahan!
Soal Buatlah tabel dari instruksi penjumlahan! Gambarkan pengurangan dengan Borrow yang memperlihatkan bagaimana flag carry (C) menyebarkan borrow! Buatlah tabel dari instruksi perbandingan! Buatlah contoh dari instruksi DAA dari bagian Aritmatika BCD! NEXT
18
TUTUP Terima Kasih
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.