global check_angle global check_tangent global check_cotanget section .text ; ; angle validation ; [ebp+8] is end angle ; [ebp+12] is begin angle ; returns eax=-1 if begin angle is greater than end angle ; eax=0 if end angle < 0 or > 360 ; eax=1 if angles are correct ; check_angle: push ebp mov ebp, esp mov eax, [ebp+8] ; end_angle mov edx, [ebp+12] ; begin_angle cmp edx, eax jg .error2 cmp eax, 0 jl .error1 cmp eax, 360 jg .error1 mov eax, 1 jmp .quit .error1: xor eax, eax jmp .quit .error2: mov eax, -1 .quit: pop ebp ret ; ; tangent test ; [ebp+8] is integer angle ; [ebp+12] is pointer to tangent buffer ; buffer=ffffffffh if tangent=90 or 270 ; else buffer=1 ; check_tangent: push ebp mov ebp, esp mov eax, [ebp+8] ; value mov ecx, [ebp+12] ; address mov dword [ecx], 1 ; true cmp eax, 90 je .undefined cmp eax, 270 je .undefined jmp .quit .undefined: mov dword [ecx], 0ffffffffh ; false (255) .quit: pop ebp ret ; ; cotangent test ; [ebp+8] is integer angle ; [ebp+12] is pointer to cotangent buffer ; buffer=ffffffffh if cotangent=0, 180 or 360 ; else buffer=1 ; check_cotanget: push ebp mov ebp, esp mov eax, [ebp+8] ; value mov ecx, [ebp+12] ; address mov dword [ecx], 1 ; true cmp eax, 0 je .undefined cmp eax, 180 je .undefined cmp eax, 360 je .undefined jmp .quit .undefined: mov dword [ecx], 0ffffffffh ; false (255) .quit: pop ebp ret