Привести блок-схему в соответствие с кодом - Assembler

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

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

Ребят, извиняюсь, но это опять я, нерадивый студент. Вот есть такой код, все работает, все как надо. проблем нет
Листинг программы
  1. include 'emu8086.inc'
  2. #make_COM#
  3. ; COM file is loaded at CS:0100h
  4. ORG 100h
  5. JMP START
  6. task db 10, 13, 'Лабораторнаяработа №4'
  7. db 10, 13, 'Y=(x-a)^n'
  8. db 10, 13, '$'
  9. msg_x db 10, 13, 'Введите x: $'
  10. msg_a db 10, 13, 'Введите a: $'
  11. msg_n db 10, 13, 'Введите n: $'
  12. msg_y db 10, 13, 'У = ', '$'
  13. x dw ?
  14. a dw ?
  15. n dw ?
  16. y dw 1
  17. yy dw ?
  18. START:
  19. ;вывод задания на экран
  20. LEA DX, task
  21. MOV AH, 9
  22. INT 21h
  23. ;ввод x
  24. LEA DX, msg_x
  25. MOV AH, 9
  26. INT 21h
  27. call SCAN_NUM
  28. MOV x, CX
  29. ;ввод a
  30. LEA DX, msg_a
  31. MOV AH, 9
  32. INT 21h
  33. call SCAN_NUM
  34. MOV a, CX
  35. ;ввод n
  36. LEA DX, msg_n
  37. MOV AH, 9
  38. INT 21h
  39. call SCAN_NUM
  40. MOV n, CX
  41. MOV AX, 0
  42. cmp AX, n
  43. je then1
  44. MOV AX, x
  45. SUB AX, a
  46. MOV yy, AX
  47. MOV y, AX
  48. main:
  49. MOV AX, 1
  50. cmp AX, n
  51. je esc
  52. MOV AX, yy
  53. MUL y
  54. MOV y, AX
  55. MOV AX, n
  56. SUB AX, 1
  57. MOV n, AX
  58. jmp main
  59. then1:
  60. MOV AX, 1
  61. MOV y, AX
  62. jmp esc
  63. esc:
  64. ;Вывод результата
  65. LEA DX, msg_y
  66. MOV AH, 9
  67. INT 21h
  68. MOV AX, y
  69. call PRINT_NUM
  70. ;exit to OS
  71. MOV AH, 4Ch
  72. INT 21h
  73. DEFINE_SCAN_NUM
  74. DEFINE_PRINT_STRING
  75. DEFINE_PRINT_NUM
  76. DEFINE_PRINT_NUM_UNS
  77. DEFINE_PTHIS
  78. END
К нему идёт такая блок схема. При попытке сдать лабу, преподаватель сделал такую пометку, уже 4ро человек посмотрело, и мы не можем понять, где ошибка.

Решение задачи: «Привести блок-схему в соответствие с кодом»

textual
Листинг программы
  1.         mov ax,1
  2.         cwd
  3.         jcxz    @@02
  4.         mov bx,x
  5.         sub bx,a
  6.         mov y,bx
  7. @@01:       cwd
  8.         mul y
  9.         loop    @@01
  10. @@02:

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

  1. mov ax,1 — значение переменной ax становится равным 1.
  2. cwd — выполняет обращение слова (слово становится двойным).
  3. jcxz @@02 — если значение регистра cx равно нулю, то выполняется переход на метку @@02.
  4. mov bx,x — значение переменной bx становится равным значению переменной x.
  5. sub bx,a — значение переменной bx уменьшается на значение переменной a.
  6. mov y,bx — значение переменной y становится равным значению переменной bx.
  7. cwd — выполняет обращение слова (слово становится двойным).
  8. mul y — значение переменной y умножается на значение переменной ax.
  9. loop @@01 — выполняется переход на метку @@01.

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


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

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

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

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

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

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