Решение математического примера - Assembler
Формулировка задачи:
Нужно решить пример, и что бы он в регистрах показал ответ, без вывода на екран, именно в регистр.
Сделал свои наброски, но не могу никак закончить код, все работает, кроме последнего дроба и также сумы, но это уже после деление последнего дроба. Код писался в EMU8086 (здесь и нужно вывести). Заранее спасибо.
use16 org 100h mov al,[a] ; a = 5 mul al ; a^2 =19 mov bl,[x] ; x = 3 mul bl ; a^2*x=4B mov cl,3 ; mul cl ; 3*a^2*x = E1 mov cl,al ; cl=al mov bl,[b] ; b = 4 sub cl,bl ; E1-4 = DD mov al,[a] ; a mov bl,[x] ; x ;mov cl,cl add al,bl div al ; 1 mov cl,al mov al,[x] ; 3 mul al ; 9 dec al ; 8 mov dl,3 mul dl sub cl,dl mov al,[a] mov bl,[b] mul bl mul bl mov dl,al mov al,[x] mul al mov ah,al div dl add bh,al mov [y],ax ;----- End of the program----- mov ax, 4C00H int 21h ;----- initialize variable a db 5 x db 3 b db 4 y dw ? ret
Решение задачи: «Решение математического примера»
textual
Листинг программы
.model small .data a db 5 x db 3 b db 4 y db ? .stack 100h .code start: mov ax,@data mov ds,ax mov al,[a] ;al=a=5 mul al ;ax=a^2=19 mov bl,[x] ;bl=x=3 mul bl ;ax=a^2*x=4B mov cl,3 ;cl=3 mul cl ;ax=3*a^2*x=E1 mov cl,al ;cl=al=3*a^2*x=E1 mov bl,[b] ;bl=b=4 sub cl,bl ;cl=3*a^2*x-b=E1-4=DD mov al,[a] ;al=a mov bl,[x] ;bl=x add al,bl ;al=a+x=8 xchg al,cl ;al=3*a^2*x-b=E1-4=DD ;cl=a+x=5+3=8 xor ah,ah ;ax=al idiv cl ;ax/cl=(3*a^2*x-b)/(a+x)=1B mov cl,al ;cl=(3*a^2*x-b)/(a+x)=1B mov al,[x] ;al=x=3 mul al ;ax=x^2=9 dec al ;al=x^2-1=8 mov dl,3 ;dl=3 mul dl ;al=3*(x^2-1)=18 sub cl,al ;cl=((3*a^2*x-b)/(a+x))-3*(x^2-1)=3 mov al,[a] ;al=a=5 mov bl,[b] ;bl=b=4 mul bl ;ax=a*b=14 shl ax,2 ;ax=4*a*b=50 xchg ax,bx ;bx=4*a*b=50 mov al,[x] ;al=x=3 mul al ;ax=x*x=9 xchg ax,bx ;ax=4*a*b=50 ;bx=x*x=9 div bl ;al=(4*a*b)/(x*x)=50/9=8 add al,cl ;al=((3*a^2*x-b)/(a+x))-3*(x^2-1)+(4*a*b)/(x*x)=3+8=0B mov [y],al ;y=al=0B mov ah,4Ch mov al,00h int 21h end start
Объяснение кода листинга программы
Список действий:
- Задаются начальные значения переменных a, x, b, y.
- Переменная a^2 (19) умножается на переменную x (3), результат (4B) сохраняется в переменной ax.
- Переменная a^2*x-b (E1-4=DD) сохраняется в переменной cl.
- Переменная a (5) и x (3) складываются, результат (8) сохраняется в переменной al.
- Значение al (8) меняется на значение cl (DD), а значение cl (8) меняется на значение al (DD).
- Переменная b (4) вычитается из значения cl (DD), результат (DD-4=DB) сохраняется в переменной cl.
- Переменная x (3) умножается на себя (9), результат (8) вычитается из значения cl (DB), результат (DB-8=D3) сохраняется в переменной cl.
- Переменные a (5) и b (4) умножаются, результат (14) сохраняется в переменной ax.
- Значение ax (14) умножается на 2, результат (28) сохраняется в переменной ax.
- Переменные ax (28) и bx (9) меняются местами, теперь bx (9).
- Переменная x (3) умножается на себя (9), результат (8) вычитается из значения bx (9), результат (9-8=1) сохраняется в переменной bl.
- Переменные a (5) и b (4) делятся, результат (8) добавляется к значению cl (D3), результат (D3+8=C0) сохраняется в переменной al.
- Значение al (C0) меняется на значение bl (1), а значение bl (1) меняется на значение al (C0).
- Значение y (0B) сохраняется в переменной y.
- Выполняется завершающий вывод на экран с помощью функции 4Ch.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д