Professional Documents
Culture Documents
TEMPCONVERTER
TEMPCONVERTER
.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
Choosetoconvert:
mov dx,offset space ;space
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
cmp al,43h
je ProcessC
jmp wait1
ProcessF:
mov ah,0eh
int 10h
ProcessC:
mov ah,0eh
int 10h
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
ConversionC:
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 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
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