Dobrý den, mam program udělaný v NASMu a jsou v něm nějaké chyby a je nejsem schopen odhalit. Jsem začátečník. Pokud by je někdo našel, byl bych mu velice vděčný. Kdyžtak kdybyste mi mohli napsat v kterým místě je chyba a jak bych ji měl opravit. Program načítá dva časy a pak vypočítá rozdíl časů a vypíše ho. Skopíroval jsem jen tu hlavní část. Začátek se vstupy a konec s předáním řízení operačnímu systému jsem zde neuvedl, takže to za chybu nepočítejte. Předem moc díky.
segment code
Time2Seconds:
mov ax, 0
mov bl, [si]
sub bl, '0'
mul bl
inc si
mov bl, [si]
sub bl, '0'
add ax, bx
add si, 2
mov bl, 60
mul bl
mov cx, ax
mov al, [si]
sub al, '0'
mov bl, 10
mul bl
add ax, cx
inc si
mov bl, [si]
sub bl, '0'
add ax, bx
add si, 2
mov bl, 60
mul bl
mov cx, ax
mov al, [si]
sub al, '0'
mov bl, 10
mul bl
add ax, cx
inc si
mov bl, [si]
sub bl, '0'
add ax, bx
ret
Seconds2Time:
mov bx, 3600
div bx
mov bl, 10
div bl
add ah, '0'
mov [di], ah
inc di
add al, '0'
mov [di], al
inc di
mov byte [di], ':'
inc di
mov ax, dx
mov bx, 60
div bx
mov bl, 10
div bl
add ah, '0'
mov [di], ah
inc di
add al, '0'
mov [di], al
inc di
mov byte [di], ':'
inc di
mov ax, dx
mov bl, 10
div bl
add ah, '0'
mov [di], ah
inc di
add al, '0'
mov [di], al
inc di
mov byte [di], '$'
ret
..start:
mov dx, cas1
call Read_String
mov dx, cas2
call Read_String
mov si, cas1
mov di, kopiecas1
mov cx, 2 ;radek 52: implementace for pomoci loop
radek52:
mov bl, [si] ;radek 53: for-init
inc si
radek53: ;radek 53: for-podm
cmp bl, 0
jna radek58
mov al, [si]
mov [di], al
inc si
inc di
dec bl
jmp radek53 ;radek 57, radek 53: for-inkr
radek58:
mov byte [di], '$'
mov si, cas2
mov di, kopiecas2
loop radek52
mov dx, kopiecas1
call Print_Str
mov dx, kopiecas2
call Print_Str
mov si, cas1
call Time2Seconds
mov bx, ax
mov si, cas2
call Time2Seconds
sub ax, bx
js radek70
not ax
radek70:
mov di, rozdil
call Seconds2Time
mov dx, rozdil
call Print_Str
segment data
cas1: resb(256)
cas2: resb(256)
kopiecas1: resb(256)
kopiecas2: resb(256)
rozdil: resb(256)