Бесконечное повторение кода после команды IDIV - Assembler
Формулировка задачи:
После idiv зацикливается
Вот сам код (буду благодарен если проверите на остальные косяки )
Листинг программы
- .MODEL TINY
- .386
- stack 256
- DATASEG
- x1 db 10
- x2 db 27
- x3 db 11101100b
- sum db 0
- raz db 0
- proiz dw 1
- ostotdel db 2
- chast db 2
- CODESEG
- start:
- mov al, x1
- add al, x2
- mov sum, al
- mov al, x2
- sub al, x1
- mov raz, al
- mov al, x2
- neg x2
- sub al, x1
- mov al, x1
- cbw
- mov bl, x2
- cbw
- neg bx
- imul bx
- mov proiz, ax
- mov al, x1
- cbw
- mov bl, x2
- cbw
- neg bx
- mul bx
- mov al, x2
- cbw
- mov bl, x1
- idiv bl
- mov chast, al
- mov ostotdel, ah
- mov al, x3
- cbw
- bts ax, 1
- bts ax, 3
- not ax
- and ax, 11110001b
- mov bx, ax
- xor ax, bx
- mov ax,4C00h
- int 21h
- END start
Решение задачи: «Бесконечное повторение кода после команды IDIV»
textual
Листинг программы
- ; tasm /m keycode1.asm
- ; tlink /t /x keycode1.obj
- .MODEL Tiny
- .CODE
- ORG 100h
- Start:
- ;отсюда начинается код программы
- ..........................................................
- ;эпилог
- int 20h ; Выход
- ;организация данных после кода
- Question db 'Вы хотите этого :) (Y/N)?$'
- YesMessage db 13,10,'Выбран ответ "да"$'
- NoMessage db 13,10,'Выбран ответ "нет"$'
- END Start
Объяснение кода листинга программы
- .MODEL Tiny - устанавливает модель памяти для программы, в данном случае
Tiny
, что означает, что программа будет использовать 16-битные сегменты и байтовые переменные. - .CODE - сегмент кода программы.
- ORG 100h - определяет начальный адрес сегмента кода программы, в данном случае 100h.
- Start: - метка начала выполнения программы.
- int 20h - вызывает функцию завершения работы программы.
- Question db 'Вы хотите этого :) (Y/N)?$' - определяет строку вопроса для пользователя.
- YesMessage db 13,10,'Выбран ответ
да
$' - определяет строку сообщения, которое будет отображено, если пользователь введетда
. - NoMessage db 13,10,'Выбран ответ
нет
$' - определяет строку сообщения, которое будет отображено, если пользователь введетнет
. - END Start - указывает точку окончания программы. Пожалуйста, обратите внимание, что этот код является простым примером и может потребовать дополнительной настройки и обработки ошибок для полноценного использования.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д