Синус угла - часть 4
009E 83 3E 0000 R 0D CMP NUM_ANGLE, 13
00A3 77 02 JA RETURN_INST
00A5 EB 82 JMP DO_AGAIN
00A7 RETURN_INST:
00A7 CB RET
00A8 BIG_ANGLE:
00A8 8D 16 0008 R LEA DX, ERROR_MSG
00AC B4 09 MOV AH, 9H
00AE CD 21 INT 21H
00B0 CB RET
00B1 SIN ENDP
00B1 CODE ENDS
END SIN
Фиг. 7.27 (a) Процедура SIN (продолжение)
A>SIN
4.79425539E-001
8.41470985E-001
9.97494987E-001
5.98472144E-001
1.41120008E-001
-3.50783228E-001
-7.56802495E-001
-9.77530118E-001
-9.58924275E-001
-7.05540326E-001
-2.79415498E-001
2.15119988E-001
Фиг. 7.27 (b) Вывод процедуры SIN
Фиг. 7.27 Вычисление синуса угла
В первой части программы происходит ее инициализация для работы
в качестве файла типа .EXE. Затем сопроцессор 8087 загружает два
целых числа и делит их, формируя исходный угол. Это - пример
использования двух целых чисел для порождения числа с плавающей
точкой (в данном случае 1/2), что нельзя сделать непосредственно с
помощью ассемблера.
Как вы помните из тригонометрии, синус - периодическая функция.
То есть функция дает один и тот же результат в случае исходных
чисел, различающихся ровно на 2*PI. Поэтому первой задачей
подпрограммы SIN является замена исходного угла соответствующим
значением, лежащим в диапазоне
0 <= X < 2*PI
В команде FPTAN требуется, чтобы угол находился в диапазоне
Содержание Назад Вперед