Instruksi mesin dinyatakan dengan pola 0 dan l. Pola semacam itu sangat sulit untuk dijelaskan pada saat membahas atau menyiapkan program. Oleh karena itu, kita menggunakan nama simbolik untuk menyatakan pola tersebut. Sejauh ini kita telah menggunakan katakata biasa seperti Move, Add, Increment, dan Branch, untuk instruksi operasi yang menyatakan pola kode biner yang sesuai. Pada saat menulis program untuk komputer tertentu, kata kata tersebut biasanya diganti dengan akronim yang disebut mnemonic, seperti MOV, ADD, INC, dan BR Serupa dengan kita menggunakan notasi R3 untuk mengacu pada register 3, dan LOC untuk mengacu pada lokasi memori. Set lengkap nama simbolik semacam dan aturan penggunaannya membentuk bahasa pemrograman, yang biasanya disebut sebagai bahasa assembly.
Set aturan untuk menggunakan mnemonic dalam spesifikasi instruksi dan program lengkap disebut syntax bahasa.
ASSEMBLER DIRECTIVE
Selain menyediakan mekanisme untuk menyatakan instruksi dalam suatu program, bahasa assembly memungkinkan programer untuk menetapkan informasi lain yang diperlukan untuk mentranslasikan source program ke dalam object program. Kita telah menyebutkan bahwa kita perlu untuk menetapkan nilai numerik ke tiap nama yang digunakan dalam program.
Jika assembler adalah untuk menghasilkan object program sesuai dengan pengaturan ini, maka harus mengetahui :
1. Bagaimana menginterpretasikan nama tersebut
2. Dimana barns menempatkan instruksi tersebut dalam memori
3. Dimana harus menempatkan operand data dalam memori
Source program yang ditulis dalam bahasa assembly harus diassemble menjadi object program bahasa mesin sebelum dapat dieksekusi. Hal ini dilakukan oleh program assembler, yang mengganti semua simbol untuk mode operasi dan penggalamatan dengan kode biner yang digunakaa dalam instruksi mesin, dan mengganti semua nama dan label dengan nilai sebenarnya. Assembler menetapkan alamat untuk instruksi dan blok data, mulai dari alamat yang ada dalam asembler directive ORIGIN. Juga menyisipkan konstanta yang dapat dinyatakan dalam perintah DATAWORD dan ruang memori cadangan sebagaimana yang diminta oleh perintah RESERVE. Bagian utama proses assembly menetapkan nilainilai
untuk menggantikan nama nama tersebut.
NOTAS1 BILANGAN
Pada saat berhadapan dengan nilai numerik, seringkali lebih mudah untuk menggunakan notasi desimal yang telah dikenal. Tentu saja, nilai tersebut disimpan dalam komputer sebagai bilangan biner. Pada beberapa situasi, lebih mudah untuk menetapkan pola biner secara langsung.
Kebanyakan assembler memungkinkan bilangan numerik dinyatakan dengan berbagai cara yang berbeda, menggunakan konvensi yang ditetapkan oleh syntax bahasa assembly.
OPERASI INPUT/OUTPUT DASAR
Kita telah mengasumsikan bahwa data yang dikenai operasi instruksi ini telah disimpan dalam memori. Kita sekarang membahas sarana yang digunakan untuk mentransfer data antara memori komputer dan dunia luar. Operasi Input/Output (I/O) sangat penting, dan cara operasi tersebut dijalankan dapat memiliki efek yang signifikan pada performa komputer Misalkan suatu tugas untuk membaca input karakter dari keyboard dan menghasilkan output karakter pada layar display. Cara sederhana untuk menjalankan tugas I/O tersebut adalah dengan menggunakan metode yang dikenal sebagai programcontrolled
I/O. Kecepatan transfer data dari keyboard ke komputer dibatasi oleh kecepatan mengetik user, yang tampaknya tidak melebihi beberapa karakter per detik. Kecepatan transfer output dari komputer untuk ditampilkan jauh lebih tinggi.
TACK DAN QUEU
Program komputer seringkali memerlukan subtask tertentu yang menggunakan struktur subroutine yang umum. Untuk mengatur hubungan kontrol dan infonnasi antara program utama dan subrotine, maka digunakan suatu struktur data yang disebut stack. Bagian ini akan mendeskripsikan stack, dan struktur data yang berhubungan erat dengannya yang disebut queu.
Data yang dikenai operasi oleh suatu program dapat diatur dengan berbagai cara. Kita telah menangani struktur data sebagai list. Sekarang, kita membahas struktur data penting yang dikenal sebagai stack. Stack adalah list element data, biasanya word atau byte, dengan batasan akses yaitu elemen hanya dapat ditambahkan atau dihapus pada satu ujung list. Ujung ini disebut puncak stack, dan ujung yang lain disebut dasar. Struktur tersebut terkadang disebut sebagai pushdown stack.
Bayangkan tumpukan baki di kafetaria; konsumen mengambil baki baru dari puncak tumpukan, dan baki bersih ditambahkan ke tumpukan tersebut dengan meletakkannya di puncak tumpukan. Frase lain yang deskriptif, stack lastinfirstout (LIFO), juga digunakan untuk mendeskripsikan tipe mekanisme penyimpanan ini; item data terakhir yang diletakkan pada stack tersebut adalah yang pertama kali diambil pada saat pengambilan dimulai. Istilah push dan pop masingmasing digunakan untuk mendeskripsikan peletakkan item baru pada stack dan pemindahkan item paling atas dari stack.
SUBROUTINE
Pada suatu program, seringkali perlu untuk melakukan subtask tertentu berulangkali pada nilai data yang berbeda. Subtask semacam itu biasanya disebut subroutine. Misalnya, suatu subroutine dapat mengevaluasi fungsi sinus atau mensortir suatu list nilai menjadi urutan meningkat atau menurun.
Sangat dimungkinkan untuk menyertakan blok instruksi yang terdiri dari subroutine pada setiap tempat yang memerlukan program tersebut. Akan tetapi untuk menghemat ruang, hanya satu copy dari instruksi yang merupakan subroutine ditempatkan dalam memori, tiap program yang perlu menggunakan subroutine tersebut hanya perlu branch ke lokasi mulainya. Pada saat sualu program branch ke suatu subroutine kita katakan program tersebut memanggil subroutine. Instruksi yang melakukan operasi branch ini disebut instruksi Call.
Setelah subroutine dieksekusi, calling program hams mcresume eksekusi, melanjutkan dengan segera setelah instruksi yang memanggil subroutine tersebut.
Subroutine kembali ke program yang memanggilnya dengan mengeksekusi instruksi Return. Karena subroutine dapat dipanggil dari tempat yang berbeda dalam calling program, maka harus dibuat ketetapan untuk kembali ke lokasi yang sesuai.
SUBROUTINE NESTING DAN STACK PROSESOR
Subroutine nesting dapat dilakukan hingga kedalaman berapapun. Pada akhirnya, subroutine terakhir dinyatakan menyelesaikan komputasinya dan kembali ke subroutine yang memanggilnya.
PARAMETER PASSING
Pada saat calling suatu subroutine, suatu program harus menyediakan parameter ke subroutine, yaitu operand atau alamatnya, yang akan digunakan dalam komputasi. Selanjutnya, subroutine mengembalikan parameter lain, dalam hal ini, hasil komputasi tersebut. Pertukaran informasi antara calling program dan subroutine disebut sebagai parameter passing. Parameter passing dapat dilakukan dengan beberapa cara. Parameter tersebut dapat ditempatkan dalam register atau dalam lokasi memori, sehingga dapat diakses oleh subroutine. Atau alternatif lainnya, parameter tersebut dapat ditempatkan pada stack prosesor yang digunakan untuk menyimpan return address. Parameter passing melalui register prosesor adalah langsung dan efisien.
STACK FRAME UNTUK NESTED SUBROUTINE
Stack adalah struktur data yang sesuai untuk menyimpan return address pada saat subroutine nested. Jelas bahwa stack frame lengkap untuk nested subroutine dibuat pada stack prosesor pada saat dipanggil. Dalam hal ini, perhatikanlah bahwa isi FP yang tersimpan dalam frame terbaru pada puncak stack adalah isi frame pointer untuk stack frame subroutine yang memanggil subroutine terbaru.







0 komentar:
Posting Komentar