Operasi Aritmetik dan Logik
Pelajari cara melakukan operasi aritmetik asas (ADD, SUB, MUL, DIV) dan operasi logik (AND, OR, XOR, NOT) pada data dalam daftar dan memori.
Operasi Aritmetik dan Logik ialah pelajaran Bahasa Himpunan & Pengaturcaraan Sistem Aras Rendah x86 percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Bahasa Himpunan & Pengaturcaraan Sistem Aras Rendah x86, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Bahasa Himpunan & Pengaturcaraan Sistem Aras Rendah x86 merangkumi sejumlah 4 pelajaran.
Pengenalan kepada Operasi Bahasa Himpunan
Selamat datang ke dunia operasi teras bahasa himpunan x86! Hari ini, kita akan mempelajari cara CPU menjalankan pengiraan matematik dan logik asas.
Arahan ini sangat penting. Arahan ini membolehkan atur cara anda mengira nilai, membuat keputusan dan memanipulasi data pada tahap paling rendah.
Penambahan: Arahan ADD
Arahan ADD digunakan untuk menambah dua nombor. Arahan ini menerima dua operan: destinasi dan sumber.
- Sintaks:
ADD destination, source - Nilai
sourceditambah kepada nilaidestination. - Hasilnya disimpan semula dalam operan
destination. - Operan boleh berupa daftar, lokasi memori atau nilai serta-merta (pemalar).
Contohnya, ADD EAX, EBX menambahkan nilai dalam EBX kepada EAX dan menyimpan jumlahnya dalam EAX.
ADD dalam Tindakan
Mari kita lihat ADD dalam atur cara ringkas. Kita akan menambah 3 kepada 5 dan menyimpan hasilnya dalam daftar EAX.
Cuba jalankan contoh ini:
section .text
global _start
_start:
mov eax, 5 ; Load 5 into EAX
add eax, 3 ; Add 3 to EAX (EAX becomes 8)
; Exit the program (Linux 32-bit syscall)
mov eax, 1 ; sys_exit syscall number
xor ebx, ebx ; Exit code 0
int 0x80 ; Call kernelPenolakan: Arahan SUB
Arahan SUB ialah lawan kepada ADD. Arahan ini menolak operan sumber daripada operan destinasi.
- Sintaks:
SUB destination, source - Nilai
sourceditolak daripada nilaidestination. - Hasilnya disimpan semula dalam operan
destination.
Seperti ADD, SUB boleh menggunakan daftar, memori atau nilai serta-merta sebagai operan. Arahan ini penting untuk aritmetik asas dan perbandingan.
SUB dalam Tindakan
Beginilah SUB berfungsi. Kita akan memuatkan 10 ke dalam EAX, kemudian menolaknya dengan 4.
Jalankan kod ini untuk melihat penolakan tersebut:
section .text
global _start
_start:
mov eax, 10 ; Load 10 into EAX
sub eax, 4 ; Subtract 4 from EAX (EAX becomes 6)
; Exit the program (Linux 32-bit syscall)
mov eax, 1 ; sys_exit syscall number
xor ebx, ebx ; Exit code 0
int 0x80 ; Call kernelPendaraban: MUL & IMUL
Pendaraban dalam bahasa himpunan x86 menggunakan MUL untuk nombor tanpa tanda dan IMUL untuk nombor bertanda.
MULdanIMULsering menggunakan daftarAX,EAXatauRAXsecara tersirat sebagai salah satu operan.- Untuk pendaraban 32-bit, jika anda mendarab nilai dalam
EAXdengan daftar lain (contohnya,EBX), hasil 64-bit disimpan merentasi dua daftar: 32 bit rendah dalamEAXdan 32 bit tinggi dalamEDX.
Sentiasa ambil kira saiz operan dan saiz hasil yang mungkin!
Contoh Pendaraban
Mari kita darab 5 dengan 6 menggunakan MUL. Hasilnya ialah 30.
Selepas pelaksanaan, EAX akan menyimpan bahagian rendah hasil, manakala EDX akan menyimpan bahagian tinggi (yang akan bernilai 0 dalam kes ini).
section .text
global _start
_start:
mov eax, 5 ; Load 5 into EAX
mov ebx, 6 ; Load 6 into EBX
mul ebx ; Multiply EAX by EBX. Result in EDX:EAX
; EAX will be 30, EDX will be 0
; Exit the program (Linux 32-bit syscall)
mov eax, 1 ; sys_exit syscall number
xor ebx, ebx ; Exit code 0
int 0x80 ; Call kernelPembahagian: DIV & IDIV
Pembahagian dikendalikan oleh DIV (tanpa tanda) dan IDIV (bertanda). Arahan ini agak lebih kompleks.
- Untuk pembahagian 32-bit, dividen (nombor yang hendak dibahagi) dijangka berada dalam
EDX:EAX(EDXmenyimpan 32 bit tinggi, manakalaEAXmenyimpan 32 bit rendah). - Pembahagi ditentukan sebagai operan (contohnya, daftar atau lokasi memori).
- Selepas pembahagian, hasil bahagi disimpan dalam
EAX, manakala baki disimpan dalamEDX.
Sentiasa pastikan EDX ditetapkan dengan betul (selalunya dikosongkan kepada 0) sebelum pembahagian tanpa tanda jika dividen anda muat dalam EAX.
Contoh Pembahagian
Mari kita bahagikan 10 dengan 3. Kita menjangkakan hasil bahagi 3 dan baki 1.
Perhatikan bahawa EDX dikosongkan sebelum pembahagian kerana dividen kita (10) muat sepenuhnya dalam EAX.
section .text
global _start
_start:
mov eax, 10 ; Load 10 into EAX (low part of dividend)
mov edx, 0 ; Clear EDX (high part of dividend for 32-bit)
mov ebx, 3 ; Load 3 into EBX (divisor)
div ebx ; Divide EDX:EAX by EBX.
; Quotient in EAX (3), Remainder in EDX (1)
; Exit the program (Linux 32-bit syscall)
mov eax, 1 ; sys_exit syscall number
xor ebx, ebx ; Exit code 0
int 0x80 ; Call kernelLogik Bit: AND, OR, XOR, NOT
Selain aritmetik, bahasa himpunan sangat sesuai untuk operasi pada bit. Arahan ini memanipulasi bit individu dalam sesuatu nombor.
AND: Menetapkan bit jika kedua-dua bit sepadan bernilai 1. Berguna untuk menapis bit.OR: Menetapkan bit jika sekurang-kurangnya satu bit sepadan bernilai 1. Berguna untuk menetapkan bit tertentu.XOR: Menetapkan bit jika bit sepadan adalah berbeza. Berguna untuk menogol bit atau mengosongkan daftar dengan pantas (contohnya,XOR EAX, EAX).NOT: Menyongsangkan semua bit (menukar 0 kepada 1 dan 1 kepada 0). Ini ialah operasi satuan (menerima satu operan).
Operasi ini penting untuk kawalan aras rendah, bendera dan manipulasi data.
Semakan Pantas: Operasi Bit
Pertimbangkan petikan bahasa himpunan berikut:
mov al, 0b11001010
and al, 0b00001111Apakah nilai akhir yang disimpan dalam daftar AL selepas arahan ini dilaksanakan?
Imbas Kembali: Operasi Asas
Tahniah! Anda telah mempelajari operasi aritmetik dan logik bit yang penting dalam bahasa himpunan x86.
- Aritmetik:
ADD,SUB,MUL/IMUL,DIV/IDIVmenjalankan pengiraan. - Logik:
AND,OR,XOR,NOTmemanipulasi bit individu untuk menapis, menetapkan, menogol dan menyongsangkan bit.
Arahan ini ialah asas bagi atur cara yang kompleks, membolehkan CPU anda memproses data dan membuat keputusan dengan berkesan. Teruskan berlatih!
Pelajari Assembly dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Soalan Lazim
Adakah pelajaran “Operasi Aritmetik dan Logik” percuma?
Ya — teks penuh “Operasi Aritmetik dan Logik” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Bahasa Himpunan & Pengaturcaraan Sistem Aras Rendah x86, tingkat taraf kepada CoddyKit PRO. Kursus Bahasa Himpunan & Pengaturcaraan Sistem Aras Rendah x86 merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Operasi Aritmetik dan Logik”?
Pelajari cara melakukan operasi aritmetik asas (ADD, SUB, MUL, DIV) dan operasi logik (AND, OR, XOR, NOT) pada data dalam daftar dan memori. Anda berlatih Bahasa Himpunan & Pengaturcaraan Sistem Aras Rendah x86 menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Bahasa Himpunan & Pengaturcaraan Sistem Aras Rendah x86?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Bahasa Himpunan & Pengaturcaraan Sistem Aras Rendah x86 di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Operasi Aritmetik dan Logik” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Bahasa Himpunan & Pengaturcaraan Sistem Aras Rendah x86 ini?
Ya. Setiap pelajaran Bahasa Himpunan & Pengaturcaraan Sistem Aras Rendah x86 menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Arahan Pergerakan Data (MOV, PUSH, POP)
- Operasi Aritmetik dan Logik
- Lompatan Bersyarat dan Gelung
- Arahan Operasi Bit dan Anjakan