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 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 :