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

Объяснение кода листинга программы

  1. Описание постановки задачи: задача заключается в проверке, проходит ли график функции через заданную точку.
  2. Используемые команды:
    • mov - переносит значение одной переменной в другую
    • int - выполняет интерполяцию (в данном случае используется для вывода сообщений на экран)
    • sub - вычитает одно значение из другого
    • cbw - переносит значение из регистра b в ax
    • xchg - меняет значения двух переменных
    • mul - умножает одно значение на другое
    • add - складывает одно значение с другим
    • jmp - переходит к указанному адресу
  3. Описание работы кода:
    • Код начинается с инициализации сегментов данных и стека.
    • Затем происходит вывод сообщения T:.
    • Далее выполняется цикл, который продолжается до тех пор, пока значение переменной al не станет равным 0dh (это соответствует цифре 1 в десятичной системе счисления).
    • Во время цикла выполняются следующие действия:
      • Значение переменной al вычитается на 30h (это соответствует цифре 0 в десятичной системе счисления).
      • Выполняется обмен значениями между регистрами ax и cx.
      • Производится умножение значения регистра cx на значение регистра bx.
      • К результату умножения добавляется значение регистра cx.
      • Затем происходит переход к началу цикла.
    • Если значение переменной al становится равным 0dh, выполняется переход к блоку кода, который выводит сообщение OPASNAYA SITYACIA.
    • После этого происходит проверка значения переменной m. Если оно больше или равно 45, то выводится сообщение Если. В противном случае происходит переход к завершению программы.

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы