Бесконечное повторение кода после команды 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

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

  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
Похожие ответы