MENGENAL CARA KERJA KOMPUTER DAN BAHASA PEMROGRAMAN

 


 Register Prosesor

Register prosesor, dalam arsitektur komputer, yaitu sebanyak kecil memori komputer yang memainkan pekerjaan dengan kecepatan sangat tinggi yang dipakai sebagai menerapkan eksekusi terhadap program-program komputer dengan menyediakan akses yang cepat terhadap nilai-nilai yang umum dipakai. Umumnya nilai-nilai yang umum dipakai yaitu nilai yang sedang dieksekusi dalam waktu tertentu.

Register prosesor berdiri pada tingkat tertinggi dalam hierarki memori: ini berfaedah bahwa kecepatannya yaitu yang sangat cepat; kapasitasnya yaitu sangat kecil; dan harga tiap bitnya yaitu sangat tinggi. Register juga dipakai sebagai perkara yang sangat cepat dalam sistem komputer sebagai menerapkan manipulasi data. Register umumnya diukur dengan satuan bit yang mampu ditampung olehnya, seperti "register 8-bit", "register 16-bit", "register 32-bit", atau "register 64-bit" dsb-nya.

Istilah register ketika ini mampu merujuk kepada himpunan register yang mampu diindeks secara langsung sebagai menerapkan input/output terhadap suatu instruksi yang dirumuskan oleh set instruksi. sebagai istilah ini, digunakanlah kata "Register Arsitektur". Sebagai contoh set instruksi Intel x86 merumuskan sekumpulan delapan buah register dengan ukuran 32-bit, tapi CPU yang mengimplementasikan set instruksi x86 mampu mengandung lebih dari delapan register 32-bit.

Jenis register

Register terbagi diproduksi menjadi beberapa kelas:

·       Register data, yang dipakai sebagai menyimpan angka-angka dalam bilangan bulat (integer).

·       Register alamat, yang dipakai sebagai menyimpan alamat-alamat memori dan juga sebagai mengakses memori.

·       Register general purpose, yang mampu dipakai sebagai menyimpan angka dan alamat secara sekaligus.

·       Register floating-point, yang dipakai sebagai menyimpan angka-angka bilangan titik mengambang (floating-point).

·       Register konstanta (constant register), yang dipakai sebagai menyimpan angka-angka tetap yang hanya mampu dibaca (bersifat read-only), semacam phinulltruefalse dan lainnya.

·       Register vektor, yang dipakai sebagai menyimpan hasil pemrosesan vektor yang dilaksanakan oleh prosesor SIMD.

·       Register special purpose yang mampu dipakai sebagai menyimpan data internal prosesor, seperti halnya instruction pointer, stack pointer, dan status register.

·       Register yang spesifik terhadap model mesin (machine-specific register), dalam beberapa arsitektur tertentu, dipakai sebagai menyimpan data atau pengaturan yang berkaitan dengan prosesor itu sendiri. Karena guna dari setiap register langsung diberi pokok ke dalam desain prosesor tertentu saja, mungkin register jenis ini tidak diproduksi menjadi standar selang generasi prosesor.

Ukuran register

Tabel berikut mengandung ukuran register dan padanan prosesornya

Register

Prosesor

4-bit

Intel 4004

8-bit

Intel 8080

16-bit

Intel 8086Intel 8088Intel 80286

32-bit

Intel 80386Intel 80486Intel Pentium ProIntel PentiumIntel Pentium 2Intel Pentium 3Intel Pentium 4Intel CeleronIntel Xeon, AMD K5, AMD K6, AMD Athlon, AMD Athlon MP, AMD Athlon XP, AMD Athlon 4, AMD Duron, AMD Sempron

64-bit

Intel Itanium, Intel Itanium 2, Intel Xeon, Intel Core, Intel Core 2, AMD Athlon 64, AMD Athlon X2, AMD Athlon FX, AMD Turion 64, AMD Turion X2, AMD Sempron

 

Install Tools (NASM)

Untuk assembler program menggunakan NASM dapat dilakukan pada Linux atau Windows, karena NASM tersedia untuk kedua sistem operasi tersebut. Netwide Assembler (NASM) adalah assembler dan dissembler untuk arsitektur Intel x86 dan banyak digunakan untuk membuat program 16-bit, 32-bit (IA-32), dan 64-bit (x86-64).

·       Menyusun Assembly Program Menggunakan NASM untuk Linux

1.    Membuat FIle Sumber

Anda dapat menggunakan editor teks apa saja, seperti GeditKWrite, atau XEmacs, untuk melakukannya. Saat Anda menyimpan file ini, simpan dengan ekstensi ASM.

2.    Merakit File Sumber

Pada langkah ini, Anda perlu mengunduh software dan menginstal NASM di komputer Anda.

Jika Anda menggunakan Debian atau Ubuntu, cukup ketik perintah berikut ini:

sudo apt-get install nasm

Jika Anda menggunakan paket distribusi Linux lainnya, Anda harus menggunakan manajer paket bawaan dari distribusi Linux Anda (misalnya Urpmi, Yum, Emerge) atau mengunduh NASM dari situs web resminya.

Gunakan perintah berikut ini untuk mulai merakit file sumber:

nasm -f elf test.asm

Dalam contoh berikut ini, file ASM yang tersimpan diberi nama test.asm. Proses ini akan membuat file bernama test.o dalam direktori yang sama.
N.B. File ini masih tidak dapat dieksekusi. Ini adalah file objek.

3.    Membuat File Excutable

Sekarang, setelah membuat file objek bernam test.o, kita perlu membuat file executable untuk proses eksekusi.

 

Program Anda mungkin dimulai dengan prosedur bernama _start. Ini artinya program Anda memiliki titik masuknya sendiri, tanpa menggunakan fungsi main. Bagaimanapun, Anda akan membutuhkan "l" untuk membuat file eksekutor:

ld test.o -o test

Sebagai alternatif, program Anda mungkin dimulai dengan prosedur yang disebut main. Anda akan membutuhkan "gcc" untuk membuat file yang dapat dieksekusi:

gcc test.o -o test

Sekarang, file executable telah dibuat, diuji, dan berada di direktori yang Anda gunakan.

4.    Eksekusi Program

Untuk emmbuat program yang disebut test, cukup ketik perintah berikut:

. / test

·       Menyusun Assembly Program Menggunakan NASM untuk Windows

Fungsi utama NASM tidak tersedia pada WIndows dan harus menggunakan WinMain.

Jika titik masuk Anda adalah _start atau main, maka Anda perlu mengubah _start menjadi _WinMain @ 16. Selain itu, ubah ret pada titik akhir prosedur menjadi ret 16:

section .text
global _WinMain@16
_WinMain@16:
mov eax, 0
ret 16

1.    Menginstal Software

Anda harus menginstal http://ccm.net/download/download 1025 NASM. Letakkan arsip di suatu temapt, agar dapat digunakan lain waktu.

Bagian yang cukup sulit adalah menginstal MinGW, yang merupakan program development environment untuk Windows:

Pilih versi terbaru MingGW dari A-Z. Mulai proses instalasi, namun jangan lalukan pembaruan program untuk sementara ini. Tinggalkan semua opsi tambahan, dan tunggu proses instalasi.

Sekarang, masukkan NASM dalam MinGW. Buka arsip NASM. Pada tahap ini, Anda perlu mendapatkan folder yang berisi file dengan nama nasm.exe. Salin file ini ke dalam direktori C: \ MinGW \ bin.

2.    Membuat File Sumber

Seperti pada Linux, tidak perlu memilih editor teks khusus saat membuat file sumber untuk NASM. Anda dapat menggunakan Notepad. Namun perlu diketahui, bahwa Notepad akan memberi tambahan ekstensi TXT pada akhir file. Untuk menghilangkan ambiguitas, Anda direkomendasikan untuk memeriksa lagi ekstensi file Anda.

Dalam keadaan apapun, hindari menggunakan program pengolah kata seperti Word atau WordPad.

Jika Anda ingin, Anda juga dapat menggunakan editor teks yang didesain untuk membuat file NASM, seperti NasmEdit IDE.

Pastikan Anda telah menyimpan file sumber dengan ekstensi ASM.

3.    Merakit File Sumber

Buka jendela Command melalui menu Start > Run dan ketik cmd.exe.

Dengan menggunakan perintah cd, pergi ke folder yang berisi file sumber Anda. Saat Anda berada pada direktori tersebut, gabungkan file sumber Anda (test.asm) dengan perintah berikut:

nasm -f win32 test.asm -o test.o

Sekarang, Anda telah membuat file objek. Langkah berikutnya adalah file tersebut sebagai file yang dapat dieksekusi.

Pembuatan dan Eksekusi Program

Dari jendela Command Anda, ketik perintah akhir untuk membuat bagian yang dapat dieksekusi:

ld test.o -o test.exeI

 

Membuat Aplikasi “Hello World” dengan Assembler

    Nasm merupakan compiler untuk bahasa pemrograman assembly pada sistem operasi linux, dan perlu kita ketahui kalau di sistem operasi windows digunakan tasm (turbo assembly). dan saya menganggap anda sudah mengerti dasar-dasar bahasa Assembly.

 

•  Ok pertama-tama mari kita install nasm dengan menggunakan Terminal

 

 

 

  Setelah itu kita buat program sederhana menggunakan aplikasi editor, kali ini saya menggunakan gedit, lalu ketik program berikut:

 

 

  ; section text khusus buat code

  section .text

 

  global _start

 

  _start:

  ; systemcall => write(1,msg,len)

  mov edx,len   ; panjang string dimasukkan dalam register EDX

  mov ecx,msg  ; alamat memori yang menyimpan string dimasukkan dalam register ECX

  mov ebx,1     ; file descriptor (1=stdout=defaultnya console) disimpan dalam   register EBX

  mov eax,4     ; Nomor syscall 4 adalah fungsi sys_write()

  int 0x80        ; panggil system call dengan interrupt 80 hexa.

 

  ; systemcall => exit(0)

  xor ebx,ebx     ; membuat EBX menjadi 0 sebagai return code ketika exit

  mov eax,1     ; nomor syscall 1 adalah fungsi exit()

  int 0x80      ; panggil system call dengan interrupt 80 hexa.

 

  section .data ; section data khusus buat data/variable

  msg db "Hello, World!",0xa ; String diikuti dengan 0xA yaitu new line \n.

  len equ $ - msg  ; Panjang string didapat dengan mengurangi address di baris ini dengan alamat string.

 

  •   Ketika sudah selesai mengetik program diatas, lalu simpan di folder yang anda inginkan dengan file dengan format .asm (contoh : hello.asm), dan kali ini saya akaan menyimpan di Documents.

  •  Kemudian lakukan compile program dari source *.asm ke *.o sekalian output dari program diatas yaitu dengan cara:

 

 

 

Selamat, anda telah berhasil membuat program program sederhana dengan output Hello World dalam bahasa Assembly

 

Membuat Input – Output dengan assembler

Prosedur adalah suatu blok intruksi yang secara logic melakukan suatu tugas tetentu yang dapat dipanggil oleh program utama atau prosedur lain. Setap prosedur mempunyai suatu tugas otomik yang tidak tergantung pada program lain. Pada beberapa bahasa pemrograman, prosedur juga sering disebut subrutin.

Unsur penting dalam suatu prosedur adalah nama prosedur. Suatu prosedur dapat digunakan oleh prosedur lain atau program utama dengan cara memanggil nama prosedurnya. Penggunaan prosedur dapat dilakukan berulang-ulang sesuai keperluan.

Dalam pemrograman high level, terdapat dua istilah yang memiliki karakteristik yang sedikit berbeda, yaitu konsep prosedur dan fungsi. Fungsi adalah ssubrutin yang mengembalikan hasil, sedangkan prosedur tidak. Istilah subrutin merupan istilah umum dari keduanya. Kata prosedur dan subrutin sering dipakai secara bergantian.

KEYWORD PROC, ENDP, CALL DAN RET

Dalam bahasa assembly, KEYWORD PROC dan ENDP menandai awal dan akhir prosedur. Pada contoh program dibawah ini terdapat dua prosedur yang diberi nama “main” dan “first_proc”. Dalam prosedur main terdapat perintah call, yaitu perintah untuk memanggil prosedur. Pada akhir prosedur first_proc terdapat perintah ret, yaitu perintah untuk kembali ke intruksi pada prsedur pemanggil.

.code

Main PROC

...

Mov ax,1

Mov dx,ax

Call first_proc

...

...

Main ENDP

First_proc PROC

...

Mov cx, 2

Mov bx, 3

...

...

First_proc ENDP

Contoh program : FIRST2PROC.ASM

Pada contoh berikut terdapat dua buah prosedur, yaitu prosedur input_char dan calc_sum. Prosedur input_char berfungsi untuk memasukkan karakter dari keyboard dan mengembalikanya kedalam AL. Prosedurnya sangat sederhana, hanya mengandung dua intruksi yang diperlukan untuk memanggil fungsi 1 DOS (input keyboard). DOS otomatis mengembalikan karakterke dalam AL. Jadi, nilai akan tersimpan disana ketika input_char kembali kepemanggilnya, yaitu prosedur main.

Title contoh program subrutin

Dosseg

.model small

.stack 100h

 

.data

Char db ?

Array dw 100h, 200h,300h,400h,500h

Array_size equ 5

Sum dw ?

 

.code

Main proc

Mov ax.@data

Mov ds, ax

Call input_char

Mov char, al

Mov bx,offset array

Mov cx,array_size

Call calc_sum

Mov sum,ax

 

Mov ax,4000h

Int 21h

Main endp

 

Cala_sum proc

Push bx

Push cx

Mov ax,0

Cls :

Add ax,[bx]

Add bx,2

Loop csl

Pop cx

Pop bx

Ret

Calc_sum endp

End main

Prosedur calc_sum menghitung jumblah isi array integer sampai 65,535 integer. Untuk memangggil prosedur ini, pada prosedur main dilakukan settiing offset array. Nilai offset array ditempatkan dalam register bx. Untuk menghitung jumlah elemen, digunakan register cx. Program pemanggil harus menyesuaikan parameter sesuai keperluan subrutin yang dipangggil

TIPE PROSEDUR NEAR DAN FAR

NEAR

Pemanggilan prosedur NEAR dilakukan ketika pemangil dan surutin berada dalammsegment program yang sama. Dalam hal ini assembler akan membuat kode mesin untuk near call. Sebelum mengakses subrutin, intruksi call menyimpan nilai IP (INTUKTION POINTER) saat ini kedalam stack. Kemudian nilai IP diganti dengan nilai offset subrutin. Dengan cara inilah subrutin dijalankan.

Intruksi RET (kependekan dari Return) pada akhir prosrdur berfungsi untuk mengembalikan eksekusi intuksi pada program pemanggil. Proses yang terjadi adalah nilai yang terdapat dalam stack diambil kembali dan dimasukkan kedalam IP. Dengan cara ini maka intruksi yang akan eksekusi berikutnya adalah intruksi yang terdapat pada program pemanggil.

 

Tabel diatas menjelaskan tentang proses pemanggilan prosedur NEAR dengan contoh offset.

FAR

          Pemanggilan prosedur FAR dilakukan ketika pemanggil dan subrutin berada pada segment kode yang berbeda. Dalam hal ini assembler akan membuat kodee mesin untuk far call. Sebelum mengaksees subrutin, intruksi CALL terlebiih dahulu menyimpan nilai register CS dan IP saat inii kedalam stack. Kemudian, intruksi tersebut mengambil alamat segment subrutin kedalamm CS dan offsetnya kedalam IP.

 

Tabel diatas menunjukkan prosedur main membuat pemanggiln prosedur FAR terhadap subrutin dalam segmen berbeda. Deklarasi FAR harus ditambahkan sesudah nama subrutin 1 dan operator FAR PTR  ditambahkan pada intruksi call pada saat memanggil. Pada akhir subruti 1, assembler akan membuat intruksi mesin khusus RETF. Intruksi ini berfungsi untuk mengembalikan eksekusi kepada pemanggilnya. Waktu eksekusi untuk prosedur FAR lebih lambat dari pada prosedur NEAR karena adnya penambahan proses push dan pop untuk nilai segmennya ( CS ).


2. INTERRUPT

Interrupt terdiri dari dua jenis yaitu :

A.    Interrupt Perangkat Keras

          Interrupt perangkat keras adalah sinyal yang dikirim perangakat keras sistem yang memerlukan respons segera dari CPU. Interrupt perangkat keras ini dihasilkan oleh chip khusus, controlle interrupt, yang memberi sinyal pada CPU untuk menangguhkan eksekusi program yang sedang dieksekusi dan memproses intrrupt. Contoh sederhana interrupt perangkat keras adalah akses input dari keyboard. Pada saat salah satu kunci (key) ditekan maka CPU akan menangguhkan program yang sedang dieksekusi dan mengalikannya untuk mengeksekusi rutin BIOS yang membaca karakter dari port input keyboard dan menyimpannya dalam buffer memori. CPU dapat melanjutkan mengeksekusi intruksi yang tertunda setelah proses interrupt selesai.

          Dalam pemrograman ada saatnya progremer harus menghentikan interrupt perangkat keras secara termporer. Misalnya pada saat melakukan operasi yang sensitif pada registe segmen dan stck. Untuk mematikn sementara interrupt perngkat keras, diguunakan intruksi CLI ( clear interrupt flag). Setelah normal kembali, untuk mengaktifkannya, digunakan intruksi STI ( set interrupt flag ).

 

B.     Interrupt Perangkat Lunak

          Interrupt perangkat lunak adalah proses pemanggilan salah satu rutin layanan interrup BIOS atau DOS. Interrupt jenis ini sebenarnya interrupt tiruan, bukan interrupt sesungguhnya. Istilah interrupt masih digunakan karena proses yang terjadi mirip dengan interrupt pada perangkat keras. Interrupt perangkat lunak menyediakan menyediaan akses untuk menangani proses I/O secara rinci. Intruksi interrupt ditandai dengan intruksi INT ( kependekan dari interrupt ). Intruksi INT meminta layanan dari sistem operasi, biasanya untuk I/O. Layanan ini adalah program kecil yang berlokasi di dalam BIOS dan bagian resident DOS.

Intriksi INT

Intriksi INT berfungsi untuk memanggil subrutin yang yang terdapat pada sistem operasi. Identifikasi jenis interrupt ditentukan oleh angka yang nilainya dalam range 00h-FFh. Untuk melengkapi intruksi INT, sebelumnya register AH harus diisi terlebih dahulu dengan nomor fungsi yang mengidentifikasikan subrutin yang diinginkan. Sintak intruksi INT adalah :

INT nomor

Intriksi INT digunakan untuk tampilan konsol baik input maupun output, manipulasi file dan video dan berbagai layanan lain yang disediakan oleh BIOS dan DOS.

 

INTERRUPT  VECTOR TABLE ( IVT )

      Dalam proses interrupt, CUP mengakses interrupt vector table, yaitu alamat memori yang besarnya 1 KB. Tabel IVT adalah kumpulan pointer yang lebarnya 32 bit yang menunjukkan kesubrutin yang terdapat pada sisstem operasi. Gambar dibawah ini mengilustrasikan langkah-langkah yang diambil oleh CPU pada saat intruksi INT ditemukan dalam program :

 

·                Nomor yang interrupt pada intruksi INT digunakan oleh CPU untuk mengakses data pada interrupt vector table. Dalam contoh, INT 10h. Intruksi ini berfungsi untuk meminta layanan video. 

·                Langkah berikutnya, CPU akan mengambil alamat yang terdapat pada IVT, yaitu (F000:F065). 

·                Alamat ini digunakan untuk mengakses subrutin DOS yang menangani interrupt pada alamat F000:F065, CPU akan mengeksekusi fungsi yang terdapat pada alamat tersebut sampai ditemukan alamat intruksi IRET.

                      Sti

                      Cld
                      Push es

                      Push ds

                      …

                      …

                     IRET

·                Pada saat ditemukan intruksi IRET maka CPU akan mngeksekusi kembali intruksi pada program pemanggil.

               Interrupt prangkat lunak memanggil rutin layanan interrupt dalam BIOS atau DOS. Beberapa interrupt yang serring digunakan :

1. INT 10h : layanan video; rutin layanan video yang mengatur posisi kursor, geser layar, dan menampilkan grafik video.

2. INT 16h : layanan keyboard; rutin yang membaca keyboard dan mengecek statusnya.

3.  INT 17h : layanan printer ; rutin untuk instalasi, pint dan mengembalikan status printer.

4.  INT 1Ah : rutin yang mendapat nmor jam pada saat mesin dinyalakan, atau menset pencacah dengan nilai baru.

5.  INT 1Ch : intrrup waktu bagi pengguna; ruti kosong tang dieksekusi 18.2 kali per detik.

6. INT 21h : layanan DOS ; rutin layanan DOS untuk masukan/ keluaran, penanganan file, manajemen memori dan dikenal sebagai fungsi call DOS.

 

2.3 FUNGSI CALL DOS

            INT 21h disebut juga fungsi call DOS. Terdapat 87 fungsi berbeda yang didukung oleh interrupt ini,didentifikasikan oleh nomor fungsi yang ditempatkan dalam register AH. Berikut ini daftar fungsi 00h sampai 0Ch :

 

1.      01H : INPUT KONSOL DENGAN ECHO

Fungsi 1 DOS menunggu karakter yang akan ditampilkan yang diinputkan dari konsol dan menyimpannya dalam register AL. (karakter yang sedang berada dalam buffer secara otomatis akan disimpan kedalam AL).

CTRL-BREAK aktif. Dalam contoh berikut sebuah karakter akan diinput dan ditempatkan dalam variable bernama char :

Mov ah, 1

Int 21h

Mov char, al

 

2.      02H : OUTPUT KARAKTER

Fungsi 2 DOS mengirim karakter ke konsol. CTRL-BREAK aktif. Karakter yang akan ditampilkan disimpan dalam register DL, seperti contoh berikut :

Mov ah, 2

Mov DL, ‘*’

Int 21h

AL diubah oleh DOS selama pemanggilan int 21h. agar nilainya bias digunakan kembali maka terlebih dahulu harus disimpan dalam stack sebelum pemaggilan int 21h. pada saat selesai pemanggilan int 21h nilai AL dpat iambil kembali.

 

1.      05H : OUTPUT PRINTER

Untuk mecetak karakter, tempatkan karakter dalam DL dan panggil fungsi 5. DOS menunggu sampai printer siap untuk menerima karakter. Output akan keluar keprinter 1(nama perangkat LPT 1). Contoh berikut mencetak karakter dolar ($).

Mov ah, 5

Mov DL,’$’

INT 21h

Mov dl, 0Dh

INT 21h

2.      06H : INPUT OUTPUT KONSOL LANGSUNG

Fungsi 6 DOS melakukan proses baca atau tulis pada konsol. CTRL-BREAK tidak aktif dan tidak ada filter terhadap karakter. Untuk meminta konsol inpt (tanpa menunggu), register DL harus ber nilai 0FFh. Karakter disimpan dalam register AL. contoh berikut untuk input/output :

Input karakter

Moov ah, 6

Mov dl, 0FFh

Int 21h

Output karakter

Mov ah, 6

Mov dl, ‘&’

Int 21h

Menghapus buffer keyboard. Program aplikasi biasanya dibutuhkan untuk menghapus buffer keyboard. Berikut ini contoh prosedur yang menggabungkan INT 21h dengan intruksi Loop untuk menghapus buffer :

Hapus_keyboard proc

Mov cx, 15

L1 :

Mov ah,6

Mov dl,0FFh

Int 21

Loop L1

Ret

Hapus_keyboard endp

 

3.      07H : INPUT KONSOL LANGSUNG

Fungsi 7 menunggu karakter yang tidak terfilter dari konsol. Karakter tidak ditampilkan di konsol dan CTRL-BREAK aktif. Fungsi input ini cocok untuk karakter khusus seperti karakter fungsi dan panah kursor.

Contoh program:

Mov ah, 7

Int 21h

Mov char,al

4.      08H : INPUT KONSOL TANPA ECHO

Fungsi 8 menunggu karakter yang tidak difilter dari konsol tanpa menampilkannya, sementara CTRL-BREAK aktif. Karakter disimpan dalam register AL. fungsi input ini cocok untuk larakter khusus.

Contoh :

Mov ah, 8

Int 21h

Mov char, al

 

5.      09H : OUTPUT STRING

Fungsi 9 menampilkan string karakter pada konsol. Alamat offset string harus ada dalam DX, dan string harus diakhiri oleh karakter dolar ($).

Contoh :

Mov ah, 9

Mov dx, offset string

Int 21h

String db ‘hallo kota bandung.’,Odh, Oah,’$’

 

6.      0AH : BUFFER INPUT KONSOL

Fungsi 0Ah membaca string karakter sampai 255 karakter dari konsol dan menyimpannya dalam buffer. Enter digunakan untuk mengakhiri input. CTRL-BREAK aktif dan seluruh karakter ditampilkan pada konsol.

Sebelum fungsi dipanggil, DX harus diisi dengan offset area parameter keyboard. Format area sebagai berikut :

 

Dalam byte offset 0 ditempatkan jumlah maksimum karakter yang bias diinput. Jika jumlahnya 5, misalnya, dos akan mengizinkan 4 karakter tambah enter yang diinput. Sesudah interrupt dipanggil, dos menempatkan jumlah karakter yang benar-benar pada byte offset 1. Karakter tersebut sisimpan mulai offset 2. Contoh :

 

Mov ah, 0Ah

Mov dx, offset max_kunci

Int 21h

Max_kuncidb 32

Chars_input db ?

Buffer db 32 dup(0)

Misalnya, kita meninputkan 21 karakter dari konsol :

       Nama saya Demian Saba

Maka isi buffer akan sebagai berikut :

 

 

1.      0B H : MENGAMBIL STATUS INPUT KONSOL

Fungsi 0Bh adalah menerima buffer keyboard DOS untuk melihat karakter dalam buffer. Jika ada karakter, DOS mengembalikan nilai 0FFh dalam register AL. jika tidak, DOS mengembalikan 00 dalam register Al, sementara CTRL-BREAK aktif. Contoh :

Mov ah, 0Bh

Int 21

2.      0CH : MEMBERSIHKAN BUFFER INPUT, MENEMUKAN FUNGSI INPUT

Fungsi  0Ch membersihkan buffer keyboard dan memanggil fungsi input konsol. Funsi yang dipanggil (1,6,7,dan 8) diidentifikasikan oleh nilai dalam AL. karakter input akan dikembalikan dalam AL.contoh :

Mov ah, 0Ch

Mov al, 1

Int21h

Mov chr, al

Input keyboard level BIOS (INT 16H)

Cara langsung untuk mengambil input keyboard adalah dengan mengunakan int 16h layanan keyboard dalam system BIOS. Berikut ini daftar layanan INT 16h :

 

Analisa Instruksi Komputasi Dengan Objdumb

 

Komputasi yaitu cara untuk menemukan pemecahan masalah dari data input dengan menggunakan suatu algoritma. Hal ini ialah apa yang disebut dengan teori komputasi, suatu sub-bidang dari ilmu komputer dan matematika. Selama ribuan tahun, perhitungan dan komputasi umumnya dilakukan dengan menggunakan pena dan kertas, atau kapur dan batu tulis, atau dikerjakan secara mental, kadang-kadang dengan bantuan suatu tabel. Namun sekarang, kebanyakan komputasi telah dilakukan dengan menggunakan komputer.

 

Secara umum,Ilmu komputasi adalah bidang ilmu yang mempunyai perhatian pada penyusunan model matematika dan teknik penyelesaian numerik serta penggunaan komputer untuk menganalisis dan memecahkan masalah-masalah ilmu (sains). Dalam penggunaan praktis, biasanya berupa penerapan simulasi komputer atau berbagai bentuk komputasi lainnya untuk menyelesaikan masalah-masalah dalam berbagai bidang keilmuan, tetapi dalam perkembangannya digunakan juga untuk menemukan prinsip-prinsip baru yang mendasar dalam ilmu.

Nah,untuk selanjutnya kita akan membahas inti topik dari artikel ini. Disini saya akan sharing mengenai bagaimana menganalisa Instruksi Komputasi dengan Obdump pada Linux yang nantinya akan jadi seperti gambar berikut ketika selesai.

 

 

 

Untuk  memeriksa  isi  dari  file  kode  objek,  terdapat  suatu  program  yang  bernama  disassembler.  Program tersebut dapat melakukan konversi file kode objek menjadi format assembly. Pada sistem  Unix/Linux, program OBJDUMP (singkatan dari “OBJect DUMP”) dapat dipanggil menggunakan flag  “-d” :  $ objdump –d -m \386:x86-64 .hello Untuk  menghasilkan  kode  yang  dapat  dieksekusi,  kita  harus  menjalankan  linker  pada  seluruh  file  kode objek. Program eksekusi akan dihasilkan dengan menggabungkan seluruh file kode objek.

 

File program eksekusi prog yang dihasilkan berisi tidak hanya kode yang kita masukkan, tetapi juga  informasi  yang  digunakan  untuk  memulai  dan  mengakhiri  program.  Kita  juga  dapat  melakukan  dissasamble file prog :  $ objdump –d,prog Disassembler akan mengekstrak berbagai urutan kode yang terdapat pada file eksekusi prog.  

 

Komentar

Postingan populer dari blog ini

Cara Scrape Lazada dengan Python

Analisis Model IT Menggunakan Balanced Scorecard Untuk Pengembangan Sistem Teknologi Informasi