diff options
author | scratko <m@scratko.xyz> | 2024-03-27 22:38:51 +0300 |
---|---|---|
committer | scratko <m@scratko.xyz> | 2024-03-27 22:38:51 +0300 |
commit | 21f616b5593d87d6381c1f3d67a3df0c442dba44 (patch) | |
tree | 28eba727b41d4d6b6b273ba3f7e81a4793d56e84 /validations.asm | |
download | trigonometric-table-21f616b5593d87d6381c1f3d67a3df0c442dba44.tar.gz trigonometric-table-21f616b5593d87d6381c1f3d67a3df0c442dba44.tar.bz2 trigonometric-table-21f616b5593d87d6381c1f3d67a3df0c442dba44.zip |
Initial commit
Diffstat (limited to 'validations.asm')
-rw-r--r-- | validations.asm | 74 |
1 files changed, 74 insertions, 0 deletions
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 |