Зависает программа - Assembler (248944)

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

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

Tasm 1.4 При обычном запуске в dos тупо всё зависает, и результат не выводится на экран, при запуске в турбо дебаггере программа без ошибок доходит до конца, и при сворачивании ТД (alt+f5) результат всё таки есть. причём такое происходит только при делении, + - * работает как надо. HELP( код
assume cs:mcode, ds:mdata, ss:mstk
 
  mcode segment
main:
mov ax, mdata
mov ds, ax
        mov ax, a
        mov bx, b
        div bx
test ax, ax
jns oi1
mov cx, ax
mov ah, 02h
mov dl, '-'
int 21h
mov ax, cx
neg ax
 
oi1:
xor cx, cx
mov bx, 10
 
oi2:
xor dx, dx
div bx
push dx
inc cx
test ax, ax
jnz oi2
mov ah, 02h
 
oi3:
pop dx
add dl, '0'
int 21h
loop oi3
mov ax, 4c00h
int 21h
  mcode ends
 
  mdata segment
      a dw 6
      b dw 3
  mdata ends
 
  mstk segment stack
  dw 120 dup(?)
  mstk ends
 
end main

Решение задачи: «Зависает программа»

textual
Листинг программы
mov ax, a
mov bx, b
div bx

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

  1. mov ax, a — переносит значение переменной a в регистр ax
  2. mov bx, b — переносит значение переменной b в регистр bx
  3. div bx — выполняет деление регистра ax на значение в регистре bx и сохраняет результат в регистре ax, а в регистре dx вычисляет остаток от деления
  4. Завершение программы

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

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