Построить гиперболу, используя ассемблерную вставку - Assembler

Узнай цену своей работы

Формулировка задачи:

в Borland Pascal, используя средства Assembler, нарисовать ветвь гиперболы 1/x, x>0. Рисунок по точкам,но вид должен быть как сплошная линия

Решение задачи: «Построить гиперболу, используя ассемблерную вставку»

textual
Листинг программы
.286
.model tiny
.code 
org 100h
start:  
    mov ax,12h
    int 10h
    mov bp,630
    xor  cx,cx
    mov ax,0C0Ch
    fld X   
    fld st
@@: 
    fld1
    fdiv st,st(1)
    fistp dword ptr [Y]
    fadd st,st(1)
    mov  dx,240
    sub dx,[Y]
    int 10h
    inc cx
    dec bp
    jnz @b     
    mov ah,0
    int 16h
    mov ax,3
    int 10h
    ret      
X dq 0.01
Y dw ?
end start

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

  1. Установка начального значения регистра AX = 12.
  2. Передача управления видеобуферу.
  3. Установка начального значения регистра BP = 630.
  4. Регистр CX инициализируется как 0.
  5. Установка начального значения регистра AX = 0C0C.
  6. Загрузка FPU строки «X» в ST(0).
  7. Загрузка FPU строки «st» в ST(1).
  8. Начинается цикл, который продолжается до тех пор, пока CX не станет равным 0.
  9. В каждой итерации цикла регистр DX вычитается из [Y], а затем выводится на экран.
  10. Регистр CX инкрементируется, а затем регистр BP декрементируется.
  11. Если CX не равен 0, то цикл продолжается.
  12. Если CX равен 0, то регистр AH устанавливается равным 0, и управление передается на обработку завершения работы программы.
  13. Регистр AX устанавливается равным 3.
  14. Передача управления видеобуферу.
  15. Регистр AX устанавливается равным 0.
  16. Регистр BX устанавливается равным 16.
  17. Регистр DX устанавливается равным 0.
  18. Регистр BX инкрементируется.
  19. Регистр CX устанавливается равным 0.
  20. Завершение работы программы.

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

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