You are on page 1of 6

org 100h

.data
msg1 dw "Temperature Converter$"
space dw 0ah,0dh,"$"
msg2 dw 0ah,0dh,"Choose To Convert:$"
msg3 dw 0ah,0dh,"(F--->C) Input Fahrenheit Value:$"
msg4 dw 0ah,0dh,"(C--->F) Input Celsius Value:$"
msg5 dw "Value Entered Exceeds limit$"
Q dW "$"
space1 dW "$"
Instrct1 dW 0ah,0dh,"Press F to convert F-->C$"
Instrct2 dW 0ah,0dh,"Press C to convert C-->F$"
Limits dW 0ah,0dh,"No temp lower than 32 degree Fahrenheit$"
Note dW 0ah,0dh,"Note:$"
ResultF dW 0ah,0dh,"Result in C:$"
ResultC dW 0ah,0dh,"Result in F:$"

H dW ?
T dW ?
O dW ?

CHd dW ?
CT dW ?
CO dW ?

tempchoice db ?
rawval dW ?
Fhtval dW ?
Clcsval dW ?
counter db 0

.code
START:
mov dx,offset msg1 ;display TEMP CONVERTER
mov ah,09h
int 21h

mov dx,offset space ;SPACE


mov ah,09h
int 21h

mov dx,offset Note ;display NOTE


mov ah,09h
int 21h

mov dx,offset Instrct1 ;display INSTRCT1


mov ah,09h
int 21h

mov dx,offset Instrct2 ;display iNS2


mov ah,09h
int 21h

mov dx,offset Limits ;diSPLAY LIMIT


mov ah,09h
int 21h

Choosetoconvert:
mov dx,offset space ;space
mov ah,09h
int 21h

mov dx,offset msg2 ;display Choose to Convert


mov ah,09h
int 21h

wait1: ;RESET
mov ah,0h
mov ax,0
mov bx,0
mov cx,0
mov dx,0
mov counter,al

int 16h ;Wait key for Choose temp


mov tempchoice,al

cmp al,46h ;trapping F-C


je ProcessF

cmp al,43h
je ProcessC

jmp wait1

ProcessF:

mov ah,0eh
int 10h

mov dx,offset msg3 ;display Input F value


mov ah,09h
int 21h
jmp INPUTPROCESS

ProcessC:
mov ah,0eh
int 10h

mov dx,offset msg4 ;display Input C value


mov ah,09h
int 21h
jmp INPUTPROCESS

INPUTPROCESS:

waitH:
mov ah,0h
mov al,0 ;Trapping0-9
int 16h

cmp al,'0'
jb waitH
cmp al,'9'
ja waitH

mov ah,0eh
int 10h
mov ah,0
sub ax,30h
mov H,ax

waitT:
mov ah,0h
mov al,0 ;wait for key
int 16h

cmp al,'0'
jb waitT
cmp al,'9' ;trapping 0-9
ja waitT

mov ah,0eh
int 10h
mov ah,0
sub ax,30h
mov T,ax

waitO:
mov ah,0h
mov al,0 ;wait for key
int 16h

cmp al,'0'
jb waitO
cmp al,'9'
ja waitO

mov ah,0eh
int 10h
mov ah,0
sub ax,30h
mov O,ax

combine: ;rawsum combination HEX


mov ah,0h
mov ax,H
mov bl,10
mul bl
mul bl
mov cx,ax
mov ax,T
mul bl
mov bx,O
add al,bl
add ax,cx
mov rawval,ax

mov bl,tempchoice ;decisionmaking conversion F or C


cmp bl,46h
je ConversionF
cmp bl,43h
je ConversionC

ConversionC:

mov dx,offset ResultC


mov ah,09h
int 21h

mov ax,rawval
mov bl,09
mul bX
mov bl,05
div bX
mov bl,32
add ax,bx
mov Clcsval,ax
jmp DISPLAYANSWER
ConversionF:

mov dx,offset ResultF


mov ah,09h
int 21h

mov ax,rawval
cmp ax,0020h
jb LIMIT

sub ax,32
mov bl,5
mul bx
mov bl,9
div bx
mov Fhtval,ax
jmp DISPLAYANSWER

DISPLAYANSWER:

mov ax,00
mov bx,00
mov cl,31
mov dx,0h

mov ch,tempchoice ;decisionmaking f


cmp ch,46h
je Fhtvalinput
cmp ch,43h
je Clcsvalinput

Fhtvalinput:
mov ax,Fhtval
jmp DisplayHextoBCD

Clcsvalinput:
mov ax,Clcsval
jmp DisplayHextoBCD:

DisplayHextoBCD:
;Hex to BCD
mov bx,000Ah
LF:
inc counter
div bx
push dx
cmp ax,0
mov dx,00h
je exitF
jmp LF
exitF:
mov cl,counter
mov ch,00h
LF1:
pop dx
add dl,30h
mov ah,02h
int 21h
LOOP LF1
jmp Choosetoconvert

LIMIT:
mov dx,offset msg5
mov ah,09h
int 21h
jmp Choosetoconvert

ret

You might also like