Perwakilan dan Jenis Data
Pelajari cara integer, aksara dan jenis data lain disimpan dalam memori serta dimanipulasikan menggunakan arahan himpunan.
Perwakilan dan Jenis Data ialah pelajaran Bahasa Himpunan & Pengaturcaraan Sistem Aras Rendah x86 percuma di CoddyKit. Ini ialah pelajaran 3 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.
Apakah Jenis Data?
Dalam bahasa pemasangan, kita bekerja secara langsung dengan bit dan bait mentah. Namun, bagaimanakah kita tahu sama ada jujukan bait mewakili nombor, aksara atau sesuatu yang lain?
Di sinilah jenis data berperanan! Jenis data memberikan makna kepada data mentah, lalu membantu Anda dan CPU memahami cara mentafsir serta memanipulasi maklumat.
Saiz Data Biasa
Bahasa pemasangan x86 mentakrifkan saiz piawai untuk data. Saiz ini sepadan secara langsung dengan jumlah ruang memori yang digunakan oleh sesuatu data:
- BYTE: 8 bit
- WORD: 16 bit (2 bait)
- DWORD: Word Berganda, 32 bit (4 bait)
- QWORD: Word Kuad, 64 bit (8 bait)
Saiz ini penting untuk mengisytiharkan pemboleh ubah dan bekerja dengan daftar.
Mentakrifkan Data: DB, DW, DD, DQ
Untuk menyimpan data dalam memori, kita menggunakan arahan pentakrifan data. Arahan ini memberitahu pemasang untuk menyimpan ruang dan, jika perlu, memulakannya dengan suatu nilai.
DB: Takrif Bait (8-bit)DW: Takrif Word (16-bit)DD: Takrif Word Berganda (32-bit)DQ: Takrif Word Kuad (64-bit)
Anda akan kerap melihat arahan ini apabila mencipta pemboleh ubah dalam atur cara Anda.
Integer Tidak Bertanda
Integer tidak bertanda ialah nombor yang sentiasa positif atau sifar. Semua bitnya digunakan untuk mewakili magnitud nombor tersebut.
Contohnya, bait tidak bertanda 8-bit boleh menyimpan nilai daripada 0 hingga 255. Word tidak bertanda 16-bit boleh menyimpan nilai daripada 0 hingga 65,535.
Apabila Anda tidak memerlukan nombor negatif, jenis tidak bertanda amat sesuai dan memberikan julat positif yang lebih besar.
Integer Bertanda (Pelengkap Dua)
Integer bertanda boleh mewakili nilai positif dan negatif. Satu bit, biasanya Bit Paling Signifikan (MSB), digunakan untuk menunjukkan tanda (0 untuk positif, 1 untuk negatif).
Nombor negatif biasanya diwakili menggunakan Pelengkap Dua. Sistem ini membolehkan operasi aritmetik berfungsi dengan lancar untuk nilai positif dan negatif.
Bait bertanda 8-bit mempunyai julat daripada -128 hingga +127.
Data Aksara: ASCII
Aksara seperti 'A', 'b' atau '7' juga disimpan sebagai nombor! Piawaian yang paling biasa untuk ini ialah ASCII (Kod Piawai Amerika untuk Pertukaran Maklumat).
Setiap aksara diberikan nilai berangka unik 8-bit (1 bait). Contohnya, aksara 'A' diwakili oleh nilai perpuluhan 65 (atau heksaperpuluhan 0x41).
Anda boleh mentakrifkan aksara tunggal atau rentetan penuh menggunakan arahan DB.
Kod: Mentakrifkan dan Mengakses Data
Contoh ini menunjukkan cara mentakrifkan jenis data yang berbeza, kemudian memuatkan nilainya ke dalam daftar CPU. Hal ini menunjukkan cara bahasa pemasangan mengendalikan lokasi memori yang dinamakan.
section .data
; Define various data types
myByte db 10 ; An 8-bit unsigned integer
myWord dw 256 ; A 16-bit unsigned integer
myDword dd 65536 ; A 32-bit unsigned integer
myChar db 'X' ; An 8-bit character (ASCII value 88)
myString db "Hello", 0 ; A string (null-terminated)
section .text
global _start
_start:
; Move byte into AL register
mov al, [myByte]
; Move word into BX register
mov bx, [myWord]
; Move dword into ECX register
mov ecx, [myDword]
; Move char into DL register
mov dl, [myChar]
; Exit gracefully (Linux syscall)
mov eax, 1 ; sys_exit syscall number
xor ebx, ebx ; Exit code 0
int 0x80 ; Invoke kernel
Manfaat Penjajaran Data
Penjajaran data bermaksud meletakkan data dalam memori pada alamat yang merupakan gandaan saiznya. Contohnya, DWORD (4 bait) mungkin dijajarkan pada alamat yang berakhir dengan 0, 4, 8 atau C (heks).
Walaupun penjajaran tidak diwajibkan oleh semua CPU, penjajaran yang betul boleh meningkatkan prestasi dengan ketara. CPU boleh mengambil data yang sejajar dengan lebih cekap, selalunya dalam satu capaian memori, sekali gus mengelakkan kerja tambahan.
Pemasang kadangkala menyediakan arahan seperti ALIGN untuk membantu memastikan penjajaran yang betul.
Mengapa Jenis Data Penting
Memahami jenis data amat penting kerana jenis data menentukan:
- Penggunaan Memori: Jumlah ruang yang digunakan oleh data Anda.
- Pemilihan Arahan: Arahan bahasa pemasangan yang sesuai (contohnya,
ADD,MOV) untuk saiz data tersebut. - Tafsiran: Sama ada CPU menganggap
0xFFsebagai255(tidak bertanda) atau-1(bertanda).
Pemilihan jenis yang teliti mengelakkan ralat dan memastikan atur cara Anda berkelakuan seperti yang dijangka pada tahap paling rendah.
Semakan Pantas: Saiz Data
Anda telah mempelajari saiz data biasa dan cara saiz tersebut ditakrifkan. Mari uji pengetahuan Anda!
Imbas Kembali: Perwakilan Data
Syabas! Anda telah meneroka konsep asas perwakilan data dalam bahasa pemasangan x86.
- Kita mentakrifkan data menggunakan arahan seperti
DB,DW,DDdanDQuntuk pelbagai saiz. - Integer boleh bertanda (positif/negatif) atau tidak bertanda (positif sahaja).
- Aksara disimpan menggunakan piawaian ASCII, dengan setiap aksara mempunyai nilai berangka.
- Memahami penjajaran data dapat membantu mengoptimumkan prestasi.
Seterusnya, kita akan terus membina pengetahuan ini untuk melaksanakan operasi yang lebih kompleks!
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 “Perwakilan dan Jenis Data” percuma?
Ya — teks penuh “Perwakilan dan Jenis Data” 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 “Perwakilan dan Jenis Data”?
Pelajari cara integer, aksara dan jenis data lain disimpan dalam memori serta dimanipulasikan menggunakan arahan himpunan. 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 3 daripada 4.
Berapa lamakah pelajaran “Perwakilan dan Jenis Data” 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
- Menyingkap Daftar x86
- Mod Pengalamatan Memori
- Perwakilan dan Jenis Data
- Daftar FLAGS dan Bit Status