Bahasa Himpunan & Pengaturcaraan Sistem Aras Rendah x86 · Pelajaran

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.

Pelajaran 2 daripada 412 langkah

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 source ditambah kepada nilai destination.
  • 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 kernel

Penolakan: Arahan SUB

Arahan SUB ialah lawan kepada ADD. Arahan ini menolak operan sumber daripada operan destinasi.

  • Sintaks: SUB destination, source
  • Nilai source ditolak daripada nilai destination.
  • 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 kernel

Pendaraban: MUL & IMUL

Pendaraban dalam bahasa himpunan x86 menggunakan MUL untuk nombor tanpa tanda dan IMUL untuk nombor bertanda.

  • MUL dan IMUL sering menggunakan daftar AX, EAX atau RAX secara tersirat sebagai salah satu operan.
  • Untuk pendaraban 32-bit, jika anda mendarab nilai dalam EAX dengan daftar lain (contohnya, EBX), hasil 64-bit disimpan merentasi dua daftar: 32 bit rendah dalam EAX dan 32 bit tinggi dalam EDX.

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 kernel

Pembahagian: 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 (EDX menyimpan 32 bit tinggi, manakala EAX menyimpan 32 bit rendah).
  • Pembahagi ditentukan sebagai operan (contohnya, daftar atau lokasi memori).
  • Selepas pembahagian, hasil bahagi disimpan dalam EAX, manakala baki disimpan dalam EDX.

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 kernel

Logik 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, 0b00001111

Apakah 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/IDIV menjalankan pengiraan.
  • Logik: AND, OR, XOR, NOT memanipulasi 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!

Percuma untuk bermula

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

  1. Arahan Pergerakan Data (MOV, PUSH, POP)
  2. Operasi Aritmetik dan Logik
  3. Lompatan Bersyarat dan Gelung
  4. Arahan Operasi Bit dan Anjakan
← Kembali ke Bahasa Himpunan & Pengaturcaraan Sistem Aras Rendah x86