Бесконечное повторение кода после команды IDIV - Assembler

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

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

После idiv зацикливается Вот сам код (буду благодарен если проверите на остальные косяки )
Листинг программы
  1. .MODEL TINY
  2. .386
  3. stack 256
  4. DATASEG
  5. x1 db 10
  6. x2 db 27
  7. x3 db 11101100b
  8.  
  9. sum db 0
  10. raz db 0
  11. proiz dw 1
  12. ostotdel db 2
  13. chast db 2
  14. CODESEG
  15. start:
  16.  
  17. mov al, x1
  18. add al, x2
  19. mov sum, al
  20. mov al, x2
  21. sub al, x1
  22. mov raz, al
  23. mov al, x2
  24. neg x2
  25. sub al, x1
  26. mov al, x1
  27. cbw
  28. mov bl, x2
  29. cbw
  30. neg bx
  31. imul bx
  32. mov proiz, ax
  33. mov al, x1
  34. cbw
  35. mov bl, x2
  36. cbw
  37. neg bx
  38. mul bx
  39. mov al, x2
  40. cbw
  41. mov bl, x1
  42. idiv bl
  43. mov chast, al
  44. mov ostotdel, ah
  45. mov al, x3
  46. cbw
  47. bts ax, 1
  48. bts ax, 3
  49. not ax
  50. and ax, 11110001b
  51. mov bx, ax
  52. xor ax, bx
  53.  
  54. mov ax,4C00h
  55. int 21h
  56. END start

Решение задачи: «Бесконечное повторение кода после команды IDIV»

textual
Листинг программы
  1. ; tasm /m keycode1.asm
  2. ; tlink /t /x keycode1.obj
  3.  
  4. .MODEL Tiny
  5. .CODE
  6. ORG 100h
  7.  
  8. Start:
  9.         ;отсюда начинается код программы
  10. ..........................................................
  11.         ;эпилог
  12.         int 20h            ; Выход
  13.  
  14. ;организация данных после кода
  15. Question    db  'Вы хотите этого :) (Y/N)?$'
  16. YesMessage  db  13,10,'Выбран ответ "да"$'
  17. NoMessage   db  13,10,'Выбран ответ "нет"$'
  18.  
  19. END     Start

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

  1. .MODEL Tiny - устанавливает модель памяти для программы, в данном случае Tiny, что означает, что программа будет использовать 16-битные сегменты и байтовые переменные.
  2. .CODE - сегмент кода программы.
  3. ORG 100h - определяет начальный адрес сегмента кода программы, в данном случае 100h.
  4. Start: - метка начала выполнения программы.
  5. int 20h - вызывает функцию завершения работы программы.
  6. Question db 'Вы хотите этого :) (Y/N)?$' - определяет строку вопроса для пользователя.
  7. YesMessage db 13,10,'Выбран ответ да$' - определяет строку сообщения, которое будет отображено, если пользователь введет да.
  8. NoMessage db 13,10,'Выбран ответ нет$' - определяет строку сообщения, которое будет отображено, если пользователь введет нет.
  9. END Start - указывает точку окончания программы. Пожалуйста, обратите внимание, что этот код является простым примером и может потребовать дополнительной настройки и обработки ошибок для полноценного использования.

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


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

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

10   голосов , оценка 4 из 5

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

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

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