From 21f616b5593d87d6381c1f3d67a3df0c442dba44 Mon Sep 17 00:00:00 2001 From: scratko Date: Wed, 27 Mar 2024 22:38:51 +0300 Subject: Initial commit --- validations.asm | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 validations.asm (limited to 'validations.asm') diff --git a/validations.asm b/validations.asm new file mode 100644 index 0000000..12c8e26 --- /dev/null +++ b/validations.asm @@ -0,0 +1,74 @@ +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 -- cgit v1.2.3