Seiring dengan perkembangan ilmu pengetahuan dan teknologi, saat ini tidak sedikit penyedia jasa yang menawarkan layanan kursus programming. Namun bagi yang ingin belajar sendiri, telah banyak tutorial belajar pemrograman (programming) di internet, salah satunya dalam artikel ini.
Tutorial Belajar Pemrograman Assembly Konversi Suhu
Berikut ini ialah source code program assembly emu8086 untuk mengubah nilai input skala suhu celsius menjadi output nilai dalam skala suhu fahrenheit, kelvin, dan rheamur.
NAME "EUNNIKE" ;NAMA PROGRAM
INCLUDE 'emu8086.inc' ;MENCAKUP PROSEDUR DAN MAKRO emu8086.inc
#MAKE_COM# ;MEMBUAT BERKAS COM
ORG 100H ;MULAI DARI 100H
JMP MULAI ;MELOMPAT MENUJU MULAI
;VARIABEL
PSN1 DB "EUNNIKE MENGKONVERSI NILAI TEMPERATUR",13,10
DB "DARI SKALA CELSIUS MENJADI FAHRENHEIT, KELVIN, DAN RHEAMUR",13,10
DB "NILAI JANGKAUAN INPUT CELSIUS ANTARA -18204 SAMPAI 18186",13,10
DB "BILA NILAI INPUT DI LUAR ITU PROGRAM AKAN CRASH",13,10
DB "HASIL KONVERSI MERUPAKAN PEMBULATAN INTEGER",13,10,'$'
PSN2 DB 13,10,13,10,'MASUKKAN NILAI SKALA DERAJAT CELSIUS: $'
PSN3 DB "NILAI DALAM SKALA DERAJAT FAHRENHEIT: $"
PSN4 DB "NILAI DALAM SKALA DERAJAT KELVIN: $"
PSN5 DB "NILAI DALAM SKALA DERAJAT RHEAMUR: $"
PSN6 DB 13,10,13,10,"TERIMA KASIH TELAH MENGGUNAKAN PROGRAM EUNNIKE..."
DB 13,10,13,10,"TEKAN SEMBARANG UNTUK KELUAR $"
CEL DW ?
KEL DW ?
RHE DW ?
FAH DW ?
MULAI:
LEA DX,PSN1 ;MEMUAT ALAMAT PSN1 PADA DX
MOV AH,9 ;INTERUPSI MENCETAK STRING PSN1
INT 21H ;INT 21H FUNGSI 9
LEA DX,PSN2
MOV AH,9 ;INTERUPSI MENCETAK STRING PSN2
INT 21H
CALL SCAN_NUM ;MEMANGGIL PROSEDUR SCAN_NUM
MOV CEL,CX ;MENYIMPAN NILAI SKALA DERAJAT CELSIUS
;DALAM CEL
PUTC 13 ;BERGANTI BARIS SELANJUTNYA
PUTC 10
LEA DX,PSN3
MOV AH,9 ;INTERUPSI MENCETAK STRING PSN5
INT 21H
MOV AX,CEL ;FUNGSI SKALA CELCIUS MENJADI FAHRENHEIT
MOV BX,9 ;FAHRENHEIT=CELSIUS*9/5+32
IMUL BX
MOV BX,5
IDIV BX
ADD AX,32
MOV FAH,AX ;MENYIMPAN NILAI SKALA DERAJAT FAHRENHEIT
;DALAM FAH
CALL PRINT_NUM ;MEMANGGIL PROSEDUR PRINT_NUM
;MENCETAK NILAI AX
PUTC 13 ;BERGANTI BARIS SELANJUTNYA
PUTC 10
LEA DX,PSN4
MOV AH,9 ;INTERUPSI MENCETAK STRING PSN3
INT 21H
MOV AX,CEL ;FUNGSI SKALA CELSIUS MENJADI KELVIN
ADD AX,273 ;KELVIN=CELSIUS+273
MOV KEL,AX ;MENYIMPAN NILAI SKALA DERAJAT KELVIN
;DALAM KEL
CALL PRINT_NUM ;MEMANGGIL PROSEDUR PRINT_NUM
;MENCETAK NILAI AX
PUTC 13 ;BERGANTI BARIS SELANJUTNYA
PUTC 10
LEA DX,PSN5
MOV AH,9 ;INTERUPSI MENCETAK STRING PSN4
INT 21H
MOV AX,CEL ;FUNGSI SKALA CELSIUS MENJADI RHEAMUR
MOV BX,4 ;RHEAMUR=CELSIUS*4/5
IMUL BX
MOV BX,5
IDIV BX
MOV RHE,AX ;MENYIMPAN NILAI SKALA DERAJAT RHEAMUR
;DALAM RHE
CALL PRINT_NUM ;MEMANGGIL PROSEDUR PRINT_NUM
;MENCETAK NILAI AX
LEA DX,PSN6
MOV AH,9 ;INTERUPSI MENCETAK STRING PSN6
INT 21H
MOV AH,0 ;INTERUPSI MENUNGGU
INT 16H
RET ;KEMBALI KE SISTEM OPERASI
DEFINE_SCAN_NUM ;MENDEFINISIKAN PROSEDUR
DEFINE_PRINT_NUM
DEFINE_PRINT_NUM_UNS
END ;AKHIR
INCLUDE 'emu8086.inc' ;MENCAKUP PROSEDUR DAN MAKRO emu8086.inc
#MAKE_COM# ;MEMBUAT BERKAS COM
ORG 100H ;MULAI DARI 100H
JMP MULAI ;MELOMPAT MENUJU MULAI
;VARIABEL
PSN1 DB "EUNNIKE MENGKONVERSI NILAI TEMPERATUR",13,10
DB "DARI SKALA CELSIUS MENJADI FAHRENHEIT, KELVIN, DAN RHEAMUR",13,10
DB "NILAI JANGKAUAN INPUT CELSIUS ANTARA -18204 SAMPAI 18186",13,10
DB "BILA NILAI INPUT DI LUAR ITU PROGRAM AKAN CRASH",13,10
DB "HASIL KONVERSI MERUPAKAN PEMBULATAN INTEGER",13,10,'$'
PSN2 DB 13,10,13,10,'MASUKKAN NILAI SKALA DERAJAT CELSIUS: $'
PSN3 DB "NILAI DALAM SKALA DERAJAT FAHRENHEIT: $"
PSN4 DB "NILAI DALAM SKALA DERAJAT KELVIN: $"
PSN5 DB "NILAI DALAM SKALA DERAJAT RHEAMUR: $"
PSN6 DB 13,10,13,10,"TERIMA KASIH TELAH MENGGUNAKAN PROGRAM EUNNIKE..."
DB 13,10,13,10,"TEKAN SEMBARANG UNTUK KELUAR $"
CEL DW ?
KEL DW ?
RHE DW ?
FAH DW ?
MULAI:
LEA DX,PSN1 ;MEMUAT ALAMAT PSN1 PADA DX
MOV AH,9 ;INTERUPSI MENCETAK STRING PSN1
INT 21H ;INT 21H FUNGSI 9
LEA DX,PSN2
MOV AH,9 ;INTERUPSI MENCETAK STRING PSN2
INT 21H
CALL SCAN_NUM ;MEMANGGIL PROSEDUR SCAN_NUM
MOV CEL,CX ;MENYIMPAN NILAI SKALA DERAJAT CELSIUS
;DALAM CEL
PUTC 13 ;BERGANTI BARIS SELANJUTNYA
PUTC 10
LEA DX,PSN3
MOV AH,9 ;INTERUPSI MENCETAK STRING PSN5
INT 21H
MOV AX,CEL ;FUNGSI SKALA CELCIUS MENJADI FAHRENHEIT
MOV BX,9 ;FAHRENHEIT=CELSIUS*9/5+32
IMUL BX
MOV BX,5
IDIV BX
ADD AX,32
MOV FAH,AX ;MENYIMPAN NILAI SKALA DERAJAT FAHRENHEIT
;DALAM FAH
CALL PRINT_NUM ;MEMANGGIL PROSEDUR PRINT_NUM
;MENCETAK NILAI AX
PUTC 13 ;BERGANTI BARIS SELANJUTNYA
PUTC 10
LEA DX,PSN4
MOV AH,9 ;INTERUPSI MENCETAK STRING PSN3
INT 21H
MOV AX,CEL ;FUNGSI SKALA CELSIUS MENJADI KELVIN
ADD AX,273 ;KELVIN=CELSIUS+273
MOV KEL,AX ;MENYIMPAN NILAI SKALA DERAJAT KELVIN
;DALAM KEL
CALL PRINT_NUM ;MEMANGGIL PROSEDUR PRINT_NUM
;MENCETAK NILAI AX
PUTC 13 ;BERGANTI BARIS SELANJUTNYA
PUTC 10
LEA DX,PSN5
MOV AH,9 ;INTERUPSI MENCETAK STRING PSN4
INT 21H
MOV AX,CEL ;FUNGSI SKALA CELSIUS MENJADI RHEAMUR
MOV BX,4 ;RHEAMUR=CELSIUS*4/5
IMUL BX
MOV BX,5
IDIV BX
MOV RHE,AX ;MENYIMPAN NILAI SKALA DERAJAT RHEAMUR
;DALAM RHE
CALL PRINT_NUM ;MEMANGGIL PROSEDUR PRINT_NUM
;MENCETAK NILAI AX
LEA DX,PSN6
MOV AH,9 ;INTERUPSI MENCETAK STRING PSN6
INT 21H
MOV AH,0 ;INTERUPSI MENUNGGU
INT 16H
RET ;KEMBALI KE SISTEM OPERASI
DEFINE_SCAN_NUM ;MENDEFINISIKAN PROSEDUR
DEFINE_PRINT_NUM
DEFINE_PRINT_NUM_UNS
END ;AKHIR
Baik untuk output dari program konversi suhu assembly emu8086 ini sudah dalam bilangan bulat, dengan kata lain berupa data integer. Sementara itu untuk input nilai skala suhu dalam celsius, harus dalam rentang antara -18204 sampai dengan 18186.
Lihat juga program bahasa assembly dengan emu8086 untuk membalik string dan menghitung luas persegi.
Bila ada sesuatu yang belum jelas dan ingin tahu lebih dalam seputar project Arduino, pemrograman, dan elektronika, bisa bertanya pada bagian comment.