1 / 18

Instruksi Aritmatika dan Logika

NEXT. Instruksi Aritmatika dan Logika. PENDAHULUAN

ceana
Download Presentation

Instruksi Aritmatika dan Logika

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. NEXT 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 80386 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.

  2. NEXT • 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 80386 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.

  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 5-3. Selain itu, juga uga dijelaskan instruksi XADD yang terdapat dalam 80486 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 32.000 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 80386 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 +000 1 2345H 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 32- 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 80386 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, lainjuga 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 8086-80286 terjadi pada angka 8-bit atau 16-bit, dan angka 32-bit pada 80386-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 A0 0000 R MOV AL,NUMB ; get NUMB 0003 B4 00 MOV AH, 0 ; zero-extend 0005 F6 36 0002 R DIV NUMB1 ; divide by NUMB1 0009 A2 0003 R MOV ANSO, AL ; save quotient 000C 88 26 0004 R MOV ANSR, AH ; save remainder

  13. ARITMATIKA BCD DAN ASCII Mikroprosesor memperbolehkan manipulasi data BCD (binary-coded decimal) dan ASCII (American StandardCode 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 (decimaladjust after addition) yang mengikuti penjumlahan BCD, dan DAS (decimal adjustafter 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 D8 0031 MOV AX, 31H ; load ASCII 1 0003 04 39 ADD AL, 39 H ; add ASCII 9 0005 37 AAA ; adjust 0006 05 3030 ADD AX, 3030 H ; answer to ASCII

  17. NEXT • 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!

  18. TUTUP Terima Kasih

More Related