Написать процедуру, которая проверяет, является ли симметричным массив из N слов - Assembler (223164)

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

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

Прокомментируйте пожалуйста каждую строчку кода. Вот задание для программы: Написать процедуру, которая проверяет, является ли симметричным массив из N слов. Используя процедуру исследовать два массива и выдать сообщения " симметричен " или "не симметричен". Выполнить это упражнение при условии, что параметр передается процедуре через стек.
Листинг программы
  1. include io.asm
  2. STACK_ SEGMENT STACK
  3. DB 100h DUP(?)
  4. STACK_ ENDS
  5.  
  6. data segment
  7. a dw 1111,2,3,2,1111
  8. b dw 1,2,3,5,7,1
  9. yes db "Симметричен*",10,13,"$"
  10. no db "Не симметричен",10,13,"$"
  11. data ends
  12.  
  13. code segment*
  14. assume cs:code,ds:data,ss:stack_
  15. palindr proc near
  16. push bp
  17. mov bp,sp
  18. push bx
  19. push cx
  20. push si
  21. push dx
  22. mov ax,1
  23. mov bx,[bp+6]
  24. mov cx,[bp+4]
  25. mov si,bx
  26. mov dx,cx
  27. dec dx
  28. shl dx,1*
  29. mov si,bx
  30. add si,dx*
  31. shr cx,1
  32. comp_ends:
  33. mov dx,[bx]
  34. cmp dx,[si]
  35. je eqq
  36. mov ax,0
  37. jmp obloms
  38. eqq:
  39. add bx,2
  40. sub si,2
  41. loop comp_ends
  42. obloms:
  43. pop si
  44. pop cx
  45. pop bx
  46. pop dx
  47. mov sp,bp
  48. pop bp
  49. ret;
  50. endp palindr
  51. start:
  52. mov ax,data
  53. mov ds,ax
  54. lea bx,a
  55. push bx
  56. mov bx,5
  57. push bx
  58. call palindr
  59. pop bx
  60. pop bx
  61. lea dx,yes
  62. cmp ax,0
  63. jne yout1
  64. lea dx,no
  65. yout1:
  66. outstr
  67.  
  68. lea bx,b
  69. push bx
  70. mov bx,6
  71. push bx
  72. call palindr
  73. pop bx
  74. pop bx
  75. lea dx,yes
  76. cmp ax,0
  77. jne yout2
  78. lea dx,no
  79. yout2:
  80. outstr
  81. MOV AX, 4C00h
  82. INT 21h ;End Program
  83. code ends
  84. end start

Решение задачи: «Написать процедуру, которая проверяет, является ли симметричным массив из N слов»

textual
Листинг программы
  1. outstr macro
  2. push ax
  3. push dx
  4. mov ah, 09h
  5. int 21h
  6. pop dx
  7. pop ax
  8. endm

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

  1. Объявляется макрос с названием outstr.
  2. Макрос outstr начинается.
  3. Регистр ax помещается в стек.
  4. Регистр dx помещается в стек.
  5. В регистр ah загружается значение 09h, который представляет функцию вывода строки.
  6. Вызывается прерывание 21h для вывода строки.
  7. Регистр dx выталкивается из стека.
  8. Регистр ax выталкивается из стека.
  9. Макрос outstr завершается.

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


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

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

6   голосов , оценка 3.167 из 5

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

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

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