Sunday, April 3, 2011

Bahasa Pemrograman Assembly Dengan Pentium (Pengenalan)

1. Pengenalan

Mikroprosesor Teori dan Aplikasi dengan 68000/68020 dan Pentium
Intel Pentium adalah sebuah mikroprosesor 32-bit berdasarkan 80486 . 80486, di sisi lain, adalah sebuah 80386 yang ditingkatkan. Oleh karena itu, sebelum melanjutkan lebih jauh, sebuah gambaran dari
fitur dari 80386 dan 80486 akan sangat membantu. Intel 80386 pertama Intel 32-bit
microprogrammed mikroprosesor. pengenalan pada tahun 1985 difasilitasi pendahuluan
sistem operasi Microsoft Windows. Persyaratan komputer berkecepatan tinggi dari
antarmuka grafis sistem operasi Windows itu dipasok oleh 80386. Juga,

pada chip memori, manajemen memori 80386 boleh dialokasikan dan dikelola
oleh sistem operasi. Di masa lalu, manajemen memori dilakukan oleh perangkat lunak.
Ini 80386 ini didasarkan pada mikroprosesor 16-bit Intel, 8086. 80386
kompatibel dengan 8086 pada tingkat kode obyek perangkat lunak. 80386 mencakup
32-bit delapan tujuan umum register. Prosesor dapat menangani 8 -, 16 -, dan data 32-bit jenis.

-Ia memiliki data terpisah 32-bit dan pin alamat 32-bit, dan menghasilkan alamat fisik 32-bit.

-80386 dapat mengatasi secara langsung hingga 4 GB (232) dari memori fisik. 80386 Ini dapat dihubungkan ke memori cache eksternal. Chip ini memiliki 132 pin dan biasanya ditempatkan di paket pin grid array (PGA) . 80386 ini dirancang menggunakan HCMOS kecepatan tinggi I11
teknologi.

80386 ini pipelined dan dapat melakukan instruksi mengambil, decoding, pelaksanaan,
dan fungsi manajemen memori secara paralel. Manajemen memori on-chip dan
perlindungan hardware menerjemahkan alamat logis ke alamat fisik dan menyediakan
aturan perlindungan yang diperlukan dalam lingkungan multitasking. 80386 berisi total 129 instruksi. Mekanisme perlindungan yang 80386, paging, dan instruksi untuk mendukung mereka yang tidak terdapat pada 8086.
Perbedaan utama antara 8086 dan 80386 adalah bahwa 80386 berisi 32-bit alamat dan jenis data dan paging dan manajemen memori. Untuk memberikan ini fitur dan aplikasi lain, beberapa instruksi baru ditambahkan dalam instruksi 80386

Seperti 80386, 80486,yang diperkenalkan pada tahun 1989 adalah sebuah mikroprosesor 32-bit. Processor ini mengeksekusi instruksi set lengkap 80386 dan 80387DX dan floating-point
coprocessor. Tidak seperti 80386, 80486 perangkat keras floating-point on-chip menghilangkan
kebutuhan chip eksternal floating-point coprocessor, dan cache on-chip meminimalkan
kebutuhan cache eksternal dan logika kontrol terkait.


2 Pentium Registers

Pentium mengandung 8 -, 16 -,dan 32-bit register diklasifikasikan ke dalam empat kelompok: general purpose register, stack pointer dan register indeks, penunjuk instruksi diperpanjang dan mendaftarkan bendera, dan register segmen.
Ini dijelaskan berikutnya.

2.1 General-Purpose Registers

Pentium memiliki empat 32-bit register tujuan umum:
EAX, EBX, ECX, dan EDX. Register ini dapat digunakan untuk aritmatika, logika, dan lainnya
operasi sebagai berikut:

-EAX, EBX, ECX, dan EDX sebagai empat 32-bit register

-AX (16 bit rendah EAX), BX (16 bit rendah EBX), CX (low 16 bit ECX), dan DX
(rendah 16 bit EDX) sebagai empat register 16-bit

-AH, AL, BH, BL, CH, CL, DH, dan DL sebagai delapan 8-bit register

Beberapa register tujuan umum melakukan fungsi-fungsi khusus untuk instruksi tertentu
sebagai berikut:

-Penggunaan EAX, AX, dan register AL diasumsikan oleh beberapa instruksi. I / O
(IN atau OUT) instruksi selalu menggunakan EAX, AX, atau AL untuk memasukkan atau keluaran 32 -, 16 - atau 8-bit data dari atau ke port VO. Instruksi perkalian dan pembagianjuga menggunakan EAX, AX, atau AL.

-Register ECX atau CX dikenal sebagai register di dilindungi counter masing-masing
modus dan modus yang nyata karena beberapa petunjuk menggunakan register untuk hitungan loop untuk iteratif petunjuk.

-Register EDX atau DX digunakan selama instruksi perkalian dan pembagian. EDX
digunakan oleh perkalian 32 X 32 dan instruksi 64 + 32 . DX, di sisi lain, digunakan oleh perkalian 16 x 16 dan instruksi divisi 32 + 16 .
Perhatikan bahwa BX dapat digunakan sebagai pointer 16-bit untuk memori saat EAX, EBX, ECX, dan EDX dapat digunakan sebagai pointer 32-bit untuk memori.


2.2 Stack Pointers and Index Registers

Pentium stack pointer register dapat digunakan sebagai 32-bit atau 16-bit register sebagai berikut:





Pentium Register
ESP dan EBP sebagai sistem 32-bit stack pointer dan pengguna 32-bit masing-masing stack pointer
dalam protected mode
SP dan BP sebagai sistem 16-bit stack pointer dan 16-bit stack pointer pengguna masing-masing dalam
real mode (register pointer stack biasanya digunakan untuk operasi stack)
ESI dan ED1 sebagai register 32-bit
SI dan DI sebagai register 16-bit [register indeks (SI, DI, ESI, EDI) juga dapat digunakan sebagai tujuan umum atau pointer register memori atau dengan instruksi string]


2.3 Extended Instruction Pointer and Flag Register

Extended instruction pointer (EIP), berisi alamat offset relatif terhadap awal
segmen kode saat instruksi sekuensial berikutnya yang akan dilaksanakan di dilindungi
modus. Urutan rendah 16 bit EIP bernama IP dan bermanfaat bila Pentium mengeksekusi
petunjuk dalam mode real. Register flag sebuah register 32-bit bernama EFLAGS , ditampilkan
pada Gambar 10.1 (b). Urutan rendah 16 bit EFLAGS bernama FLAGS. Pentium flag
dalam register EFLAGS dikelompokkan menjadi tiga jenis: bendera status, bendera kontrol, dan sistem bendera. Dalam mode real, bendera status dan bendera kontrol yang digunakan. Flag sistem bersama dengan status dan kontrol bendera digunakan dalam modus dilindungi.
Status bendera termasuk CF, PF, AF, ZF, SF, dan OF.

-AF (membawa bendera bantu) diset ke 1 jika ada membawa akibat penambahan 4 rendah
bit ke 4 bit tinggi atau meminjam karena pengurangan dari 4 bit rendah dari
tinggi 4 bit nomor; jika tidak, AF = 0. Bendera ini digunakan oleh aritmatika BCD
instruksi.

-CF (membawa bendera) diset ke 1 jika ada yang membawa dari tambahan atau meminjam dari pengurangan, jika tidak, CF = 0.

-OF (bendera overflow) diset ke 1 jika ada overflow aritmatika (yaitu, jika ukuran
hasilnya melebihi kapasitas lokasi tujuan), jika tidak, OF = 0 . Catatan
overflow itu,

di mana Cf adalah membawa final dan Cp adalah membawa sebelumnya.
Interrupt pada instruksi overflow tersedia untuk menghasilkan interrupt menunjukkan
terjadinya suatu overflow.

-SF (bendera tanda) diset ke 1 jika bit yang paling signifikan hasilnya adalah 1 mengindikasikan
angka negatif, SF = 0 jika bit yang paling signifikan hasilnya adalah 0 menunjukkan
positif nomor.

-PF (bendera paritas) diset ke 1 jika hasilnya bahkan paritas; PF = 0 bila hasil telah
odd parity.

-ZF (bendera nol) diset ke 1 jika hasilnya adalah nol; ZF = 0 untuk hasil nol.
Pentium memiliki bit kontrol 3 dalam register bendera yang dapat diatur atau dibersihkan oleh
programmer:

-Setting DF (bendera arah) ke string menyebabkan 1 instruksi untuk autodecrement; kliring

-DF untuk 0 instruksi string menyebabkan untuk AUTOINCREMENT.

-Setting IF (bendera interrupt) untuk 1 menyebabkan Pentium untuk mengenali eksternal maskable
menyela; kliring JIKA ke 0 Menonaktifkan interupsi tersebut.

-Setting TF (bendera perangkap) untuk 1 tempat Pentium dalam modus single-langkah. Dalam mode ini, Pentium menghasilkan interrupt internal setelah pelaksanaan setiap instruksi. pengguna dapat menulis rutin layanan pada alamat vector interrupt untuk menampilkan isi dari register yang diinginkan dan lokasi memori. Pengguna demikian dapat men-debug sebuah program.
Flag-flag sistem kontrol I / O, interrupt maskable, debugging, switching tugas, dan
memungkinkan virtual 8086 eksekusi dalam lingkungan, dilindungi multitasking.
IOPL (I / O tingkat perlakuan) adalah bidang 2-bit yang mendukung perlindungan Pentium
fitur.

-NT (tugas bersarang) mengontrol operasi IRET. Jika NT = 0, kembali biasa dari interrupt
diambil oleh Pentium oleh bermunculan EFLAGS, CS, dan EIP dari stack. Jika NT = 1,
Pentium kembali dari interrupt melalui switching tugas.

-RF(resume flag) digunakan selama debugging.


-VM (virtual 8086 mode): ketika VM bit diset ke 1, Pentium melaksanakan 8086
program. Ketika bit VM adalah 0, Pentium beroperasi dalam mode dilindungi.
AC (alignment check): Apabila bit AC set ke 1, Pentium beroperasi sejalan
periksa mode dan menghasilkan pengecualian ketika referensi dibuat untuk sebuah memori teralign
alamat.

-VIF (bendera interupsi virtual) adalah salinan dari bit bendera interupsi.

-VIP (virtual interrupt pending) digunakan dalam multitasking untuk menyediakan sistem operasi
dengan bendera interupsi virtual dan informasi tertunda mengganggu.

-ID (identifikasi) memberikan kemampuan untuk mengatur dan jelas bendera ID. Hal ini menunjukkan bahwa
prosesor mendukung instruksi CPUID. Instruksi CPUID menyediakan
informasi untuk perangkat lunak tentang mikroprosesor Pentium, seperti versi
jumlah dan produsen.


2.4 Segmen Register

Register segmen enam 16-bit (CS, SS, DS, ES, FS, dan GS) menghasilkan alamat memori
bila dikombinasikan dengan register tertentu dalam Pentium. Register ini mendukung tersegmentasi memori mekanisme Pentium. Dalam mekanisme ini, memori dibagi menjadi segmen di mana setiap segmen adalah bagian kecil dari memori. Pentium, setiap saat, dapat arahkan ke enam segmen memori utama. Sebuah program berisi instruksi dan data. Pentium menggunakan memori tersegmentasi untuk menyimpan instruksi dalam sebuah segmen kode dan bagian data program dalam data segmen. CS mendaftar menunjuk ke segmen kode sedangkan register DS menunjuk ke segmen data. SS mendaftar menunjuk ke stack segmen. Tiga segmen data lainnya register, ES, FS, dan GS, digunakan dalam cara yang sama seperti DS mendaftar. Ini register dapat digunakan jika program tersebut juga membutuhkan memori tambahan untuk menyimpan data.
Sebuah register segmen bekerja secara berbeda dalam modus nyata dan dilindungi operasi.
Mari kita bahas mereka berikut ini.


2.5 Mode Operasi

Pentium memiliki dua mode pengolahan utama: nyata dan dilindungi. Selain itu,
Pentium mikroprosesor dilengkapi dengan mode sistem manajemen (SMM), yang
memungkinkan seseorang untuk merancang untuk penggunaan daya rendah. SMM dimasukkan melalui aktivasi dari pin interrupt eksternal (sistem manajemen interupsi, SMI #). Real mode adalah mode pengoperasian prosesor pada hardware reset. Mode ini tampaknya programmer sebagai cepat 8086 dengan beberapa instruksi baru. Arsitektur prosesor Pentium yang nyata Mode identik dengan mikroprosesor 8086. modus Dilindungi adalah 32-bit normal penerapan Pentium. Semua instruksi dan fitur dari Pentium yang tersedia di mode ini saja. Sedangkan dalam mode dilindungi, pentium dapat melaksanakan "alamat nyata" mode instruksi langsung di lingkungan, dilindungi multitasking menggunakan fitur yang disebut Virtual 8086 mode (juga disebut V86 mode). Virtual 8086 tidak benar-benar mode Pentium, tetapi atribut yang dapat diaktifkan untuk tugas apapun dengan perangkat lunak yang bersangkutan sementara di dilindungi modus. Fitur ini memungkinkan Pentium untuk bolak-balik berulang kali antara dilindungi dan V86 mode pada kecepatan yang cepat. Ketika masuk ke mode V86, Pentium dapat melaksanakan program 8086. Prosesor kemudian dapat pergi V86 mode dan masukkan dilindungi mode untuk mengeksekusi program Pentium.
Seperti disebutkan sebelumnya, Pentium memasuki modus estat pada saat ulang hardware. Pentium berisi kontrol register CRO dipanggil untuk memfasilitasi switching mode. Dalam modus nyata, perlindungan mengaktifkan (PE) bit pada bit 0 di register 32-bit kontrol, CRO dibersihkan ke nol. Mengatur bit 0 di register kontrol, CRO (PE bit) dengan menjalankan instruksi MOV
seperti MOV CRO, reg32 akan menempatkan Pentium dalam mode dilindungi. Perhatikan bahwa reg32 dapat menjadi salah satu register 32-bit Pentium tujuan umum, seperti EAX. Selain itu, data tidak dapat dipindahkan ke CRO menggunakan mode langsung. Bila Pentium dalam mode dilindungi, pengaturan VM (mode virtual) bit flag register (register EFLAGS) menempatkan Pentium dalam modus V86. Modus nyata dan dilindungi dari Pentium dijelaskan dalam lebih rinci di bawah ini.


2.6 Real Mode

Mode real disediakan dengan Pentium untuk menjalankan program untuk 8086. Dalam modus real operasi, Pentium dapat mengatasi maksimum 1 MB memori utama secara langsung menggunakan alamat fisik 20-bit. Ini berarti bahwa alamat fisik awal adalah Oooh dan alamat fisik terakhir dialamatkan adalah FFFFFH. Dalam mode ini, Pentium menggunakan tersegmentasi memori. Dua komponen, segmen dan nilai nilai offset, diwajibkan untuk menentukan lokasi memori (disebut sebagai alamat logis) dalam organisasi memori tersegmentasi.
programmer menggunakan alamat logis. Pentium hardware menerjemahkan on-chip
alamat logis ke alamat yang sesuai fisik 20-bit dengan menggeser isi
register segmen empat kali ke kiri, dan kemudian menambahkan offset 16-bit untuk itu. Ada beberapa keuntungan untuk bekerja dengan memori tersegmentasi. Pertama, setelah menginisialisasi 16-bit register segmen, Pentium hanya harus berurusan dengan offset. Artinya, Pentium harus memanipulasi dan menyimpan 16 - dan 32-bit offset. Kedua, karena segmentasi memori, Pentium dapat digunakan secara efektif dalam sistem waktu-bersama. Sebagai contoh, dalam waktu-berbagi sistem, beberapa pengguna dapat berbagi satu Pentium. Misalkan Pentium bekerja dengan satu pengguna program untuk, misalnya, 5 ms. Setelah menghabiskan 5 ms dengan salah satu pengguna lain, Pentium kembali untuk mengeksekusi program pengguna pertama. Setiap kali Pentium beralih dari satu program user ke berikutnya, ia harus menjalankan bagian baru dari kode dan bagian baru data. Segmentasi membuatnya mudah untuk beralih dari satu program pengguna yang lain.
Dalam mode real, memori utama Pentium dapat dibagi menjadi 16 segmen dari 64
kB masing-masing (16 x 64 kB = 1 MB). Segmen dapat berisi kode atau data. Pentium menggunakan 16-bit register ke alamat segmen. Misalnya, untuk alamat kode, segmen kode (CS) register harus diinisialisasi dalam beberapa cara (akan dibahas nanti). Sebuah Pentium 16-bit disebut register penunjuk instruksi (IP), yang mirip dengan program counter dari mikroprosesor khas, masing-masing alamat lokasi dalam segmen kode linier. Karena ukuran dari alamat IP adalah 16 bit, ukuran segmen 64 kb (2^16) . Demikian pula, sebuah 16-bit data segmen register (DS, ES, FS, atau GS) harus diinisialisasi untuk memegang nilai segmen segmen data.
Isi dari register 16-bit tertentu yang dirancang untuk mengadakan 16-bit offset dalam data 64-kB segmen. Salah satu dari alamat register dapat digunakan untuk mengatasi setiap lokasi linear sekali segmen data diinisialisasi oleh sebuah instruksi.

Untuk mengakses stack segmen dalam mode real, 16-bit Pentium segmen stack
(SS) register harus diinisialisasi, 64-kB stack ditujukan linear oleh sedikit 16-stackpointer (SP) mendaftar. Perhatikan bahwa memori stack harus menjadi memori (RAM) readwrite.Setiap kali programmer membaca dari atau menulis ke Pentium stack, dua komponen dari alamat memori harus dipertimbangkan: segmen dan nilai nilai offset. SS register menunjuk ke stack saat ini. Alamat 20-bit stack fisik dihitung dari SS dan SP untuk stack instruksi seperti PUSH dan POP.

By : baskarapunya.blogspot.com

0 komentar:

Follow Me

Popular Posts