_RUNDUDE.ASM - Assembler
Формулировка задачи:
Всем привет! Нужна помощь с программой! Она запускается и сразу же вылетает. Естественно, я как ламер где-то наделал ошибок, НО ГДЕ?! Вот код программы:
P.S.:
И да, это тестовая версия программы, "чувак" пока может бегать только вверх и внизTITLE RUNDUDE_by_DedSec ;------------------------------------------------------ .model small .stack 100h .386 V_MOD = 0Dh ;------------------------------------------------------ .data saveMode db ? currX dw 100 currY dw 100 color db 1 ;------------------------------------------------------ .code mov ax, @data mov ds, ax MAIN proc near mov ah, 0 mov al, V_MOD int 10h call VID_REST mov ah, 0Ch mov al, color mov bh, 0 mov cx, currX mov dx, currY int 10h call KEY_LIST MAIN endp VID_REST proc near mov saveMode, al ret VID_REST endp KEY_LIST proc near mov ah, 10h int 16h cmp ah, 50h je K10 cmp ah, 48h je K20 cmp al, 1Bh je EXT K10: dec currY call MAIN K20: inc currY call MAIN EXT: mov ax, 4c00h int 21h KEY_LIST endp end MAIN
Решение задачи: «_RUNDUDE.ASM»
textual
Листинг программы
DECLARE FUNCTION ARCSIN! (x!) CLS CONST pi = 3.141593 CONST k = pi / 180 INPUT "A = "; a INPUT "N = "; n sinG = SIN(k * a) / n g = ARCSIN(sinG) SCREEN 11 WINDOW (-40, 30)-(40, -30) yA = 30 xA = -30 * TAN(k * a) yB = -30 xB = 30 * TAN(g) FUNCTION ARCSIN (x) IF ABS(x) = 1 THEN ARCSIN = SGN(x) * pi / 2 ELSE ARCSIN = ATN(x / SQR(1 - x ^ 2)) END IF END FUNCTION LINE (-40, 0)-(40, 0) LINE (0, 0)-(xA, yA) LINE (0, 0)-(xB, yB) END
Объяснение кода листинга программы
- Объявляется функция ARCSIN!, которая принимает аргумент x и возвращает значение типа вещественного числа.
- Очищается экран командой CLS.
- Устанавливаются значения констант pi и k через оператор CONST. Значение pi равно 3.141593, а k равно pi / 180.
- С помощью команды INPUT запрашивается у пользователя значения переменных
A
иN
. Значения сохраняются в переменных a и n соответственно. - Вычисляется значение sinG путем нахождения синуса угла a в радианах, умноженного на k, и деления результата на n.
- Вычисляется значение g путем нахождения обратного синуса sinG с помощью функции ARCSIN.
- На экране выводится графика с помощью команды SCREEN 11, которая устанавливает графический режим, и команды WINDOW, которая определяет размеры окна для рисования.
- Задаются значения переменных yA, xA, yB и xB. Значение yA равно 30, xA равно -30 умноженное на тангенс угла a в радианах, yB равно -30, а xB равно 30 умноженное на тангенс угла g.
- Определяется функция ARCSIN, которая принимает аргумент x и возвращает значение. Если абсолютное значение x равно 1, ARCSIN присваивает значение pi / 2 с противоположным знаком от x. В противном случае ARCSIN вычисляет арктангенс отношения x к квадратному корню из разности 1 и x в квадрате.
- С помощью команды LINE рисуются линии на графике. Линиями соединяются точки (-40, 0) и (40, 0), (0, 0) и (xA, yA), а также (0, 0) и (xB, yB).
- Код завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д