global _start 


section .bss 

strA resb 255 


section .data 

msgNot db "String is Wrong", 0xA 
msgOk db "String is Good", 0xA 
chislo db 0
Znak db 0

section .text 

_start: 
mov eax, 3
mov ebx, 0

mov ecx, strA

mov edx, 255

int 0x80 


xor ebx, ebx 

mov edx, strA 

doCheckRaz:
mov byte [chislo], 0

doCheck: 

mov bl, [edx] ; символ в bl 

inc edx

cmp bl, 0x0
je printOk 


cmp bl, '0' 

jb mstk

cmp bl, '9' 

ja mstk 

mov byte [chislo], 1
mov byte [Znak], 0
jmp doCheck 

mstk: 
cmp byte [Znak], 1
je printNOT

cmp bl, ' ' 

je doCheckRaz

cmp bl, ',' 

je doCheckRaz

cmp bl, '-' 

je PlMn

cmp bl, '+' 

je PlMn

jmp printNOT 

PlMn:
cmp byte [chislo], 0
jne printNOT
mov byte [chislo], 1
mov byte [Znak], 1
jmp doCheck

printNOT: 
mov eax, 4

mov ebx, 1

mov ecx, msgNot 

mov edx, 15 

int 0x80 

jmp exit 


printOk: 

mov eax, 4

mov ebx, 1

mov ecx, msgOk 
mov edx, 14 

int 0x80 


exit: 

mov eax, 1 

xor ebx, ebx 

int 0x80
;ok sityation
;+0, 123, 007
;,,,,,,,          ,,,,,,,,,
;12 22 32
;12,22,32
;12, 34 56
;+12, -12
;,-22 +22

; not ok
;1+2
;2-
;+-21
;- 21
;+,12
; abc5665
;
;
;
;

;
;
;
;
;
;

;
;
;
;
;

;
;
;

;
;

;
;
;
;

