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
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
Z2xvYmFsIF9zdGFydCAKCgpzZWN0aW9uIC5ic3MgCgpzdHJBIHJlc2IgMjU1IAoKCnNlY3Rpb24gLmRhdGEgCgptc2dOb3QgZGIgIlN0cmluZyBpcyBXcm9uZyIsIDB4QSAKbXNnT2sgZGIgIlN0cmluZyBpcyBHb29kIiwgMHhBIApjaGlzbG8gZGIgMApabmFrIGRiIDAKCnNlY3Rpb24gLnRleHQgCgpfc3RhcnQ6IAptb3YgZWF4LCAzCm1vdiBlYngsIDAKCm1vdiBlY3gsIHN0ckEKCm1vdiBlZHgsIDI1NQoKaW50IDB4ODAgCgoKeG9yIGVieCwgZWJ4IAoKbW92IGVkeCwgc3RyQSAKCmRvQ2hlY2tSYXo6Cm1vdiBieXRlIFtjaGlzbG9dLCAwCgpkb0NoZWNrOiAKCm1vdiBibCwgW2VkeF0gOyDRgdC40LzQstC+0Lsg0LIgYmwgCgppbmMgZWR4CgpjbXAgYmwsIDB4MApqZSBwcmludE9rIAoKCmNtcCBibCwgJzAnIAoKamIgbXN0awoKY21wIGJsLCAnOScgCgpqYSBtc3RrIAoKbW92IGJ5dGUgW2NoaXNsb10sIDEKbW92IGJ5dGUgW1puYWtdLCAwCmptcCBkb0NoZWNrIAoKbXN0azogCmNtcCBieXRlIFtabmFrXSwgMQpqZSBwcmludE5PVAoKY21wIGJsLCAnICcgCgpqZSBkb0NoZWNrUmF6CgpjbXAgYmwsICcsJyAKCmplIGRvQ2hlY2tSYXoKCmNtcCBibCwgJy0nIAoKamUgUGxNbgoKY21wIGJsLCAnKycgCgpqZSBQbE1uCgpqbXAgcHJpbnROT1QgCgpQbE1uOgpjbXAgYnl0ZSBbY2hpc2xvXSwgMApqbmUgcHJpbnROT1QKbW92IGJ5dGUgW2NoaXNsb10sIDEKbW92IGJ5dGUgW1puYWtdLCAxCmptcCBkb0NoZWNrCgpwcmludE5PVDogCm1vdiBlYXgsIDQKCm1vdiBlYngsIDEKCm1vdiBlY3gsIG1zZ05vdCAKCm1vdiBlZHgsIDE1IAoKaW50IDB4ODAgCgpqbXAgZXhpdCAKCgpwcmludE9rOiAKCm1vdiBlYXgsIDQKCm1vdiBlYngsIDEKCm1vdiBlY3gsIG1zZ09rIAptb3YgZWR4LCAxNCAKCmludCAweDgwIAoKCmV4aXQ6IAoKbW92IGVheCwgMSAKCnhvciBlYngsIGVieCAKCmludCAweDgwCjtvayBzaXR5YXRpb24KOyswLCAxMjMsIDAwNwo7LCwsLCwsLCAgICAgICAgICAsLCwsLCwsLCwKOzEyIDIyIDMyCjsxMiwyMiwzMgo7MTIsIDM0IDU2CjsrMTIsIC0xMgo7LC0yMiArMjIKCjsgbm90IG9rCjsxKzIKOzItCjsrLTIxCjstIDIxCjsrLDEyCjsgYWJjNTY2NQo7CjsKOwo7Cgo7CjsKOwo7CjsKOwoKOwo7CjsKOwo7Cgo7CjsKOwoKOwo7Cgo7CjsKOwo7Cgo=