Jumat, 10 Juni 2011

tutorial emu8086 untuk pemula

tutorial ini ditujukan bagi mereka yang tidak akrab dengan assembler sama sekali, atau memiliki ide yang sangat jauh tentang hal itu. tentu saja jika Anda memiliki pengetahuan tentang beberapa bahasa pemrograman lain (dasar, c / c + +, pascal ...) yang dapat membantu Anda banyak.
tapi bahkan jika Anda sudah familiar dengan assembler, masih merupakan ide yang baik untuk melihat melalui dokumen ini untuk mempelajari emu8086 sintaks.

diasumsikan bahwa Anda memiliki pengetahuan tentang representasi nomor (hex / bin), jika tidak sangat dianjurkan untuk mempelajari sistem penomoran tutorial sebelum melanjutkan.


apa bahasa assembly?

bahasa assembly adalah bahasa pemrograman tingkat rendah. Anda perlu mendapatkan beberapa pengetahuan tentang struktur komputer untuk mengerti apa-apa. komputer model sederhana sebagai i lihat:

bus sistem (ditunjukkan dengan warna kuning) menghubungkan berbagai komponen komputer.
CPU merupakan jantung dari komputer, sebagian besar dari perhitungan terjadi di dalam CPU.
RAM adalah tempat ke tempat program dimuat dalam rangka untuk dijalankan.


di dalam cpu



Tujuan umum register

8086 CPU memiliki 8 register tujuan umum, mendaftarkan masing-masing memiliki nama sendiri:
  • AX - register akumulator (dibagi menjadi AH / AL).
  • BX - register alamat dasar (dibagi menjadi BH / BL).
  • CX - register count (dibagi menjadi CH / CL).
  • DX - data register (dibagi menjadi DH / DL).
  • SI - sumber register indeks.
  • DI - tujuan register indeks.
  • BP - pointer dasar.
  • SP - stack pointer.

meskipun nama register, itu programmer yang menentukan penggunaan untuk setiap register tujuan umum. tujuan utama dari register adalah untuk menyimpan nomor (variabel). ukuran register di atas adalah 16 bit, itu adalah sesuatu seperti: 0011000000111001b (dalam bentuk biner), atau 12345 dalam desimal (manusia) terbentuk.


4 register tujuan umum (AX, BX, CX, DX) dibuat dari dua register yang terpisah 8 bit, sebagai contoh jika AX = 00110000 00111001 b, maka AH = 00110000 b dan AL = 00111001 b. Oleh karena itu, ketika Anda mengubah salah satu bit register 8 register 16 bit juga diperbarui, dan sebaliknya. yang sama untuk lainnya 3 register, "H" adalah untuk "L" tinggi dan untuk bagian rendah.


karena register yang terletak di dalam CPU, mereka jauh lebih cepat daripada memori. Mengakses lokasi memori memerlukan penggunaan sistem bus, sehingga memakan waktu lebih lama. Mengakses data di register biasanya memerlukan waktu. Oleh karena itu, Anda harus mencoba untuk menjaga variabel dalam register. set register yang sangat kecil dan kebanyakan register mempunyai tujuan khusus yang membatasi penggunaan mereka sebagai variabel, tetapi mereka masih merupakan tempat yang sangat baik untuk menyimpan data sementara perhitungan.


register segmen


  • CS - poin di segmen berisi program yang berjalan.
  • DS - umumnya menunjuk pada bagian dimana variabel didefinisikan.
  • ES - register segmen tambahan, terserah programmer untuk menentukan penggunaannya.
  • SS - poin di segmen yang berisi tumpukan.
meskipun mungkin untuk menyimpan data dalam register segmen, ini tidak pernah merupakan ide yang baik. register segmen memiliki tujuan yang sangat khusus - menunjuk pada blok diakses dari memori.

register segmen bekerja sama dengan tujuan umum mendaftar untuk mengakses nilai memori. Sebagai contoh jika kita ingin mengakses memori pada alamat fisik 12345h (heksadesimal), kita harus mengatur DS = 1230h dan SI = 0045h. Ini bagus, karena cara ini kita dapat mengakses memori lebih banyak dibandingkan dengan satu register yang terbatas pada nilai 16 bit.

CPU membuat perhitungan alamat fisik dengan mengalikan segment register dengan 10h dan menambahkan tujuan umum mendaftarkan untuk itu (1230h * 10h + 45h = 12345h):


alamat dibentuk dengan 2 register disebut alamat yang efektif.
secara default BX, SI dan DI bekerja register dengan segmen DS mendaftar;

BP dan SP bekerja dengan segmen SS mendaftar.

lain register tujuan umum tidak dapat membentuk alamat efektif!

juga, meskipun BX dapat membentuk alamat efektif, BH dan BL tidak bisa.


tujuan khusus register


  • IP - penunjuk instruksi.
  • flag register - menentukan keadaan saat mikroprosesor.

IP register selalu bekerja sama dengan register segmen CS dan ini menunjuk ke instruksi yang sedang dijalankan.

flag register yang diubah secara otomatis oleh CPU setelah operasi matematika, hal ini memungkinkan untuk menentukan jenis hasilnya, dan untuk menentukan kondisi untuk mentransfer kontrol ke bagian lain dari program tersebut.

umumnya Anda tidak dapat mengakses langsung register, cara Anda dapat mengakses AX dan register umum lainnya, tetapi adalah mungkin untuk mengubah nilai dari register sistem menggunakan beberapa trik yang Anda akan belajar sedikit kemudian.

baagian selanjutnya download disini

3 komentar: