Решение математического примера - Assembler

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

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

Нужно решить пример, и что бы он в регистрах показал ответ, без вывода на екран, именно в регистр. Сделал свои наброски, но не могу никак закончить код, все работает, кроме последнего дроба и также сумы, но это уже после деление последнего дроба. Код писался в EMU8086 (здесь и нужно вывести). Заранее спасибо.
Листинг программы
  1. use16
  2. org 100h
  3. mov al,[a] ; a = 5
  4. mul al ; a^2 =19
  5. mov bl,[x] ; x = 3
  6. mul bl ; a^2*x=4B
  7. mov cl,3 ;
  8. mul cl ; 3*a^2*x = E1
  9. mov cl,al ; cl=al
  10. mov bl,[b] ; b = 4
  11. sub cl,bl ; E1-4 = DD
  12.  
  13. mov al,[a] ; a
  14. mov bl,[x] ; x
  15. ;mov cl,cl
  16. add al,bl
  17. div al ; 1
  18. mov cl,al
  19.  
  20. mov al,[x] ; 3
  21. mul al ; 9
  22. dec al ; 8
  23. mov dl,3
  24. mul dl
  25. sub cl,dl
  26. mov al,[a]
  27. mov bl,[b]
  28. mul bl
  29. mul bl
  30. mov dl,al
  31.  
  32. mov al,[x]
  33. mul al
  34. mov ah,al
  35. div dl
  36.  
  37. add bh,al
  38. mov [y],ax
  39. ;----- End of the program-----
  40. mov ax, 4C00H
  41. int 21h
  42. ;----- initialize variable
  43. a db 5
  44. x db 3
  45. b db 4
  46. y dw ?
  47.  
  48. ret

Решение задачи: «Решение математического примера»

textual
Листинг программы
  1. .model small
  2.  
  3. .data
  4. a db 5
  5. x db 3
  6. b db 4
  7. y db ?
  8.  
  9. .stack 100h
  10.  
  11. .code
  12. start:
  13. mov ax,@data
  14. mov ds,ax
  15.  
  16. mov al,[a]   ;al=a=5
  17. mul al       ;ax=a^2=19
  18. mov bl,[x]   ;bl=x=3
  19. mul bl       ;ax=a^2*x=4B
  20. mov cl,3     ;cl=3
  21. mul cl       ;ax=3*a^2*x=E1
  22. mov cl,al    ;cl=al=3*a^2*x=E1
  23. mov bl,[b]   ;bl=b=4
  24. sub cl,bl    ;cl=3*a^2*x-b=E1-4=DD
  25.  
  26.  
  27. mov al,[a]   ;al=a
  28. mov bl,[x]   ;bl=x
  29.  
  30. add al,bl    ;al=a+x=8
  31.  
  32. xchg al,cl   ;al=3*a^2*x-b=E1-4=DD
  33.              ;cl=a+x=5+3=8
  34.  
  35. xor ah,ah    ;ax=al
  36. idiv cl      ;ax/cl=(3*a^2*x-b)/(a+x)=1B
  37.  
  38. mov cl,al    ;cl=(3*a^2*x-b)/(a+x)=1B
  39.  
  40. mov al,[x]   ;al=x=3
  41. mul al       ;ax=x^2=9
  42. dec al       ;al=x^2-1=8
  43.  
  44. mov dl,3     ;dl=3
  45. mul dl       ;al=3*(x^2-1)=18
  46.  
  47. sub cl,al    ;cl=((3*a^2*x-b)/(a+x))-3*(x^2-1)=3
  48.  
  49. mov al,[a]   ;al=a=5
  50. mov bl,[b]   ;bl=b=4
  51.  
  52. mul bl       ;ax=a*b=14
  53.  
  54. shl ax,2     ;ax=4*a*b=50
  55.  
  56. xchg ax,bx   ;bx=4*a*b=50
  57.  
  58. mov al,[x]   ;al=x=3
  59. mul al       ;ax=x*x=9
  60.  
  61. xchg ax,bx   ;ax=4*a*b=50
  62.              ;bx=x*x=9
  63.  
  64. div bl       ;al=(4*a*b)/(x*x)=50/9=8
  65.  
  66. add al,cl    ;al=((3*a^2*x-b)/(a+x))-3*(x^2-1)+(4*a*b)/(x*x)=3+8=0B
  67.  
  68. mov [y],al   ;y=al=0B
  69.  
  70. mov ah,4Ch
  71. mov al,00h
  72. int 21h
  73. end start

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

Список действий:

  1. Задаются начальные значения переменных a, x, b, y.
  2. Переменная a^2 (19) умножается на переменную x (3), результат (4B) сохраняется в переменной ax.
  3. Переменная a^2*x-b (E1-4=DD) сохраняется в переменной cl.
  4. Переменная a (5) и x (3) складываются, результат (8) сохраняется в переменной al.
  5. Значение al (8) меняется на значение cl (DD), а значение cl (8) меняется на значение al (DD).
  6. Переменная b (4) вычитается из значения cl (DD), результат (DD-4=DB) сохраняется в переменной cl.
  7. Переменная x (3) умножается на себя (9), результат (8) вычитается из значения cl (DB), результат (DB-8=D3) сохраняется в переменной cl.
  8. Переменные a (5) и b (4) умножаются, результат (14) сохраняется в переменной ax.
  9. Значение ax (14) умножается на 2, результат (28) сохраняется в переменной ax.
  10. Переменные ax (28) и bx (9) меняются местами, теперь bx (9).
  11. Переменная x (3) умножается на себя (9), результат (8) вычитается из значения bx (9), результат (9-8=1) сохраняется в переменной bl.
  12. Переменные a (5) и b (4) делятся, результат (8) добавляется к значению cl (D3), результат (D3+8=C0) сохраняется в переменной al.
  13. Значение al (C0) меняется на значение bl (1), а значение bl (1) меняется на значение al (C0).
  14. Значение y (0B) сохраняется в переменной y.
  15. Выполняется завершающий вывод на экран с помощью функции 4Ch.
  16. Программа завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

7   голосов , оценка 3.714 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут