Convert seconds in hours,minutes and seconds
.MODEL SMALL
.stack 500h
.data
s1 db "Enter your seconds:$"
s2 db 0dh,0ah,"hour:$"
s3 db 0dh,0ah,"minute:$"
s4 db 0dh,0ah,"second:$"
.CODE
MAIN PROC
mov ax,@data
mov ds,ax
mov ah,9
lea dx,s1
int 21h
call indec
push ax
mov ah,9
lea dx,s2
int 21h
pop ax
xor dx,dx
mov bx,3600d
div bx
call outdec
mov ax,dx
push ax
mov ah,9
lea dx,s3
int 21h
pop ax
xor dx,dx
mov bx,60d
div bx
call outdec
mov ax,dx
push ax
mov ah,9
lea dx,s4
int 21h
pop ax
call outdec
mov ah,4ch
int 21h
MAIN ENDP
indec proc
push bx
push cx
push dx
begin:
mov ah,2
mov dl,'?'
int 21h
xor bx,bx
xor cx,cx
mov ah,1
int 21h
cmp al,'-'
je minus
cmp al,'+'
je plus
jmp repeat2
minus:
mov cx,1
plus:
int 21h
repeat2:
cmp al,'0'
jnge n_digit
cmp al,'9'
jnle n_digit
and ax,000fh
push ax
mov ax,10
mul bx
pop bx
add bx,ax
mov ah,1
int 21h
cmp al,0dh
jne repeat2
mov ax,bx
or cx,cx
je exit
neg ax
exit:
pop dx
pop cx
pop bx
ret
n_digit:
mov ah,2
mov dl,0dh
int 21h
mov dl,0ah
int 21h
jmp begin
indec endp
outdec proc
push ax
push bx
push cx
push dx
or ax,ax
jge @end_if1
push ax
mov dl,'-'
mov ah,2
int 21h
pop ax
neg ax
@end_if1:
xor cx,cx
mov bx,10d
@repeat1:
xor dx,dx
div bx
push dx
inc cx
or ax,ax
jne @repeat1
mov ah,2
@print_loop:
pop dx
or dl,30h
int 21h
loop @print_loop
pop dx
pop cx
pop bx
pop ax
ret
outdec endp
END MAIN
.stack 500h
.data
s1 db "Enter your seconds:$"
s2 db 0dh,0ah,"hour:$"
s3 db 0dh,0ah,"minute:$"
s4 db 0dh,0ah,"second:$"
.CODE
MAIN PROC
mov ax,@data
mov ds,ax
mov ah,9
lea dx,s1
int 21h
call indec
push ax
mov ah,9
lea dx,s2
int 21h
pop ax
xor dx,dx
mov bx,3600d
div bx
call outdec
mov ax,dx
push ax
mov ah,9
lea dx,s3
int 21h
pop ax
xor dx,dx
mov bx,60d
div bx
call outdec
mov ax,dx
push ax
mov ah,9
lea dx,s4
int 21h
pop ax
call outdec
mov ah,4ch
int 21h
MAIN ENDP
indec proc
push bx
push cx
push dx
begin:
mov ah,2
mov dl,'?'
int 21h
xor bx,bx
xor cx,cx
mov ah,1
int 21h
cmp al,'-'
je minus
cmp al,'+'
je plus
jmp repeat2
minus:
mov cx,1
plus:
int 21h
repeat2:
cmp al,'0'
jnge n_digit
cmp al,'9'
jnle n_digit
and ax,000fh
push ax
mov ax,10
mul bx
pop bx
add bx,ax
mov ah,1
int 21h
cmp al,0dh
jne repeat2
mov ax,bx
or cx,cx
je exit
neg ax
exit:
pop dx
pop cx
pop bx
ret
n_digit:
mov ah,2
mov dl,0dh
int 21h
mov dl,0ah
int 21h
jmp begin
indec endp
outdec proc
push ax
push bx
push cx
push dx
or ax,ax
jge @end_if1
push ax
mov dl,'-'
mov ah,2
int 21h
pop ax
neg ax
@end_if1:
xor cx,cx
mov bx,10d
@repeat1:
xor dx,dx
div bx
push dx
inc cx
or ax,ax
jne @repeat1
mov ah,2
@print_loop:
pop dx
or dl,30h
int 21h
loop @print_loop
pop dx
pop cx
pop bx
pop ax
ret
outdec endp
END MAIN
Subscribe to:
Post Comments
(
Atom
)
No comments :
Post a Comment