TASM - пройдет ли график функции через заданную точку - Assembler
Формулировка задачи:
помогите с написанием программы для TASM
определяющую, пройдет ли график функции y=5x2-7x+2 через заданную точку с координатами (а,b)
Решение задачи: «TASM - пройдет ли график функции через заданную точку»
textual
Листинг программы
model small .386 .stack 100h .data m dw (?) message1 db "T:",'$' message2 db "OPASNAYA SITYACIA",'$' .code start: mov ax,@data mov ds,ax mov ah,09h mov dx,offset message1 int 21h mov ah,01h int 21h sub al,30h mov ah,0 mov bx,10 mov cx,ax Loop: mov ah,01h int 21h cmp al,0dh je End sub al,30h cbw xchg ax,cx mul bx add cx,ax jmp Loop End : mov m,cx mov cx, m cmp m, 45 JNB If1 If: jmp End1 If1: mov ah,09h mov dx,offset message2 int 21h End1: mov ax,4c00h int 21h end start
Объяснение кода листинга программы
- Описание постановки задачи: задача заключается в проверке, проходит ли график функции через заданную точку.
- Используемые команды:
- mov - переносит значение одной переменной в другую
- int - выполняет интерполяцию (в данном случае используется для вывода сообщений на экран)
- sub - вычитает одно значение из другого
- cbw - переносит значение из регистра b в ax
- xchg - меняет значения двух переменных
- mul - умножает одно значение на другое
- add - складывает одно значение с другим
- jmp - переходит к указанному адресу
- Описание работы кода:
- Код начинается с инициализации сегментов данных и стека.
- Затем происходит вывод сообщения
T:
. - Далее выполняется цикл, который продолжается до тех пор, пока значение переменной
al
не станет равным 0dh (это соответствует цифре 1 в десятичной системе счисления). - Во время цикла выполняются следующие действия:
- Значение переменной
al
вычитается на 30h (это соответствует цифре 0 в десятичной системе счисления). - Выполняется обмен значениями между регистрами ax и cx.
- Производится умножение значения регистра cx на значение регистра bx.
- К результату умножения добавляется значение регистра cx.
- Затем происходит переход к началу цикла.
- Значение переменной
- Если значение переменной
al
становится равным 0dh, выполняется переход к блоку кода, который выводит сообщениеOPASNAYA SITYACIA
. - После этого происходит проверка значения переменной
m
. Если оно больше или равно 45, то выводится сообщениеЕсли
. В противном случае происходит переход к завершению программы.