Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2012, 21:30   #1
The Real Kos
Пользователь
 
Регистрация: 16.05.2011
Сообщений: 18
Лампочка Бесконечный цикл при заходе на метку. Как обойти?

Всем доброго времени суток. Имеется данная программа. Нужно чтобы при нажатии на кнопку программа завершалась, но этого не происходит. Работает вроде бы как "хорошо", но при заходе на "loop" или же на "jnz" получается "бесконечный цикл". Как бы избежать его?
Код:
{ Переход в графич. режим }
mov ax,13h
int 10h
 
std // установка флага направления DF, рисовать будем в обратном направлении от конца экрана к началу
push 0a000h // сохранение в стеке, почему имеено такого слова и вообще зачем?(сегмент видеопамяти для прямого доступа к видеопамяти)
pop es // извлечение из стека
mov bp,4 // ?R^2
m3:
mov di,320*200-1 //послений байт видеопамяти в режиме 13Н
mov bx,200 //y
m2:
mov cx,320 // x
m1:
mov ax,bx //
mul ax //y^2
mov si,ax //сохраняем y^2
mov ax,cx //
mul ax //x^2
sub ax,si // вычитание одного из другого x^2-y^2
sbb dx,0 // коррекция dx для деления 32/16 бит
idiv bp // деление ???(x^2-y^2)/y^2
and al,1 получения цвета, которым рисовать
stosb рисование точки на экране
loop m1 // переход на m1, уменьшение х
dec bx уменьшение y
jnz m2 // переход на m2, если не 0
inc bp увеличение R^2
jnz m3
{ Ожидание нажатия клавиши }
xor ah,ah
int 16
{ Восстановление видеорежима }
mov ax,3
int 10
{ Перезагрузка }
int 19
The Real Kos вне форума Ответить с цитированием
Старый 24.09.2012, 11:02   #2
zhan313
Пользователь
 
Регистрация: 09.12.2011
Сообщений: 44
По умолчанию

Замучался ждать окончания по BP.
Выставил начальное 0fff0h и при
ax=807fh
dx=1
bp=0fffdh
получил переполнение при делении.
zhan313 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обойти условный цикл?! dukales Помощь студентам 8 28.06.2011 18:51
Бесконечный цикл. Тошка Помощь студентам 6 12.03.2011 17:50
Бесконечный цикл. Kingdom_Reborn Помощь студентам 4 11.11.2010 00:18
цикл...и по ходу бесконечный... victum Помощь студентам 10 07.01.2009 15:57
Бесконечный цикл Эдуард Общие вопросы C/C++ 4 03.04.2008 17:28