Построить гиперболу, используя ассемблерную вставку - 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
Объяснение кода листинга программы
- Установка начального значения регистра AX = 12.
- Передача управления видеобуферу.
- Установка начального значения регистра BP = 630.
- Регистр CX инициализируется как 0.
- Установка начального значения регистра AX = 0C0C.
- Загрузка FPU строки «X» в ST(0).
- Загрузка FPU строки «st» в ST(1).
- Начинается цикл, который продолжается до тех пор, пока CX не станет равным 0.
- В каждой итерации цикла регистр DX вычитается из [Y], а затем выводится на экран.
- Регистр CX инкрементируется, а затем регистр BP декрементируется.
- Если CX не равен 0, то цикл продолжается.
- Если CX равен 0, то регистр AH устанавливается равным 0, и управление передается на обработку завершения работы программы.
- Регистр AX устанавливается равным 3.
- Передача управления видеобуферу.
- Регистр AX устанавливается равным 0.
- Регистр BX устанавливается равным 16.
- Регистр DX устанавливается равным 0.
- Регистр BX инкрементируется.
- Регистр CX устанавливается равным 0.
- Завершение работы программы.