/*可以处理空格!!!*/
#include<stdio.h>
#include<string.h>
struct TTime
{
int h,m,s
long GetSec(){return 3600L*h+60*m+s}
void StrToTime(char _str[])
{
int i,j,len=strlen(_str)
/*去空格*/
for(i=0i<len++i)
if(_str[i]==' ')
{
for(j=ij<len-1++j)
_str[j]=_str[j+1]
--len
i=-1
continue
}
/*读小时*/
j=0
for(i=0i<len++i)
if(_str[i]==':')
break
else
j=j*10 + _str[i]-'0'
h = j
/*读分钟*/
j=0
for(++ii<len++i)
if(_str[i]==':')
break
else
j=j*10 + _str[i]-'0'
m = j
/*读秒*/
j=0
for(++ii<len++i)
j=j*10 + _str[i]-'0'
s = j
}
void ToPlan(long t)
{
int hh,mm,ss
hh = t/3600
t%=3600
mm = t/60
t%=60
ss=t
printf("%2.2d:%2.2d:%2.2d\n",hh,mm,ss)
}
}Ta,Tb,Tc
void main()
{
char a[105],b[105]
gets(a)
gets(b)
Ta.StrToTime(a)
Tb.StrToTime(b)
printf("sec: %ld, time: ",Tb.GetSec()-Ta.GetSec())
Tc.ToPlan(Tb.GetSec()-Ta.GetSec())
}
DATASEGMENT
WORD1
DB
'input
the
data1:',0AH,0DH,'$'
WORD2
DB
'input
the
data2:',0AH,0DH,'$'
SPACE
DB
0AH,0DH,'$'
OUTPUT
DB
'the
max
data
is:',0AH,0DH,'$'
BUFFER
DB
20H
DB
0
DB
20H
DUP(0)
存输入字符,大小可改
DATA
ENDS
STACK1
SEGMENT
STACK
DB
20H
DUP(?)
STACK1
ENDS
CODE
SEGMENT
ASSUME
CS:CODE,DS:DATA,SS:STACK1
START:
MOV
AX,DATA
初始化段
MOV
DS,AX
MOV
DX,OFFSET
WORD1
显示字符串
MOV
AH,09H
中断显示
INT
21H
MOV
AH,0AH
数据输入
INT
21H
MOV
CL,BUFFER+1
buffer的第二个空间存储的是输入数据的个数,做为循环值
DEC
CL
最后一个是0d,不是输入要比较的数据
MOV
SI,02
MOV
AL,BUFFER[SI]
存第一个数据
SUB
AL,30H
将数据转换为十进制
MOV
BUFFER[SI],AL
存储
在后十个空间
,以后的语句一样
LP:
INC
SI
SUB
SI,08H
MOV
AL,BUFFER[SI]
SUB
AL,30H
ADD
SI,08H
MOV
BUFFER[SI],AL
LOOP
LP
循环处理
MOV
DX,OFFSET
SPACE
显示字符串
,换行
MOV
AH,09H
中断显示
INT
21H
MOV
DX,OFFSET
WORD2
MOV
AH,09H
INT
21H
MOV
AH,0AH
数据输入
INT
21H
MOV
CL,BUFFER+1
MOV
SI,02
MOV
AL,BUFFER[SI]
存第二个数据
LP1:
SUB
AL,30H
将数据转换为十进制
MOV
BUFFER[SI],AL
存储
INC
SI
MOV
AL,BUFFER[SI]
SUB
AL,30H
MOV
BUFFER[SI],AL
LOOP
LP1
循环处理
MOV
DX,OFFSET
SPACE
显示字符串
,换行
MOV
AH,09H
中断显示
INT
21H
MOV
SI,02H
MOV
CL,BUFFER+1
LP2:
MOV
DL,BUFFER[SI]
取出第一个数据
MOV
AL,BUFFER[SI]+08H
取出第二个数据
CMP
AL,DL
比较大小
JGE
LP3
MOV
BUFFER[SI],DL
存较大的数据
INC
SI
LOOP
LP2
JMP
END1
LP3:
MOV
BUFFER[SI],AL
存较大的数据
LOOP
LP2
END1:
MOV
DX,OFFSET
OUTPUT
显示字符串
MOV
AH,09H
中断显示
INT
21H
MOV
BL,BUFFER+1
INC
BL
MOV
BH,0
MOV
AL,'$'
MOV
BUFFER[BX],AL
MOV
AX,OFFSET
BUFFER
ADD
AX,02H
MOV
DX,AX
送最大的数据显示
MOV
AH,09H
中断显示
INT
21H
MOV
AH,4CH
返回dos
INT
21H
CODE
ENDS
END
START
别人的