IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> помогите, почему выдаёт ошибку деление на ноль?
сообщение
Сообщение #1


Гость






uses crt;
var i,k:word;
BEGIN
clrscr;

asm
mov cx, i { ; это будет i}
mov si, k {; это будет k}
mov bx, 11 {; число для вычисления модуля}

@l0:
cmp cx, 199 {; если i больше или равно 199 выходим из цикла}
jge @ext1

mov ax, si
shr ax, 1 {; деление k на 2}
add ax, cx {; добавляем i}
xor dx, dx {; очищаем dx для деления}
div bx {; делим на 11}

cmp dx, 5{ ; сравниваем остаток}
jnz @label2{ ; если не равен 5 - то на label2}

sub cx, si{ ; иначе i = i - k}
jmp @l0 ; {в начало цикла}

@label2:
mov ax, si {; подготавливаем деление}
xor dx, dx
mul ax {; умножаем на себя (k*k)}
mov dx, cx
shr dx, 1 {; делим i на 2 }
add ax, dx {; добавляем к резульату k*k}
mov si, ax {; заносим результат в k }
jmp @l0 {; в начало цикла}

@ext1:
{... ; обработка результата}
end;
writeln('REZULTAT-ASSAMBLER');
writeln('k=',k,' i=',i);
readkey;
end.



сам цикл таков
i:=57; k:=19;
while i<199 do
if ((i + k div 2) mod 11) = 5 then i:=i-k else k:=k*k+(i div 2)


Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


В ассемблерном примере деление на ноль у тебя возникает, из-за того, что переменным i и k ты не задал начальных значений.
Более того в том примере, где ты показал как должно быть, цикл получается бесконечный. Ибо после нескольких проходов по телу цикла значения i и k становятся 57 и 17493 и более не меняются. Переменная i не меняется совсем!


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской
Реальное имя: Alexey

Репутация: -  0  +


Цитата(hiv @ 18.01.2007 14:37) *

В ассемблерном примере деление на ноль у тебя возникает, из-за того, что переменным i и k ты не задал начальных значений.
Более того в том примере, где ты показал как должно быть, цикл получается бесконечный. Ибо после нескольких проходов по телу цикла значения i и k становятся 57 и 17493 и более не меняются. Переменная i не меняется совсем!



А ты не можешь подсказать где именно ошибка???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
ne_ass   помогите, почему выдаёт ошибку деление на ноль?   18.01.2007 9:12
hiv   В ассемблерном примере деление на ноль у тебя возн…   18.01.2007 18:37
forum4uxa   В ассемблерном примере деление на ноль у тебя воз…   19.01.2007 0:10
hiv   А ты не можешь подсказать где именно ошибка??? З…   19.01.2007 14:10
forum4uxa   Здрасьте, я ваша тетя! В самом начале програм…   19.01.2007 15:11
Malice   После того ка я поставил "i:=57; k:=19;…   19.01.2007 15:48
forum4uxa   После того ка я поставил "i:=57; k:=19;…   21.01.2007 0:46
Malice   а можешь акценировать внимание на "дизасм…   21.01.2007 0:55
Asm   cmp dx, 5{; сравниваем остаток} jnz @label2{…   21.01.2007 3:17
Malice   jnz - переход если результат не ноль мне кажется …   21.01.2007 3:22
forum4uxa   и всё таки получилось у кого???   23.01.2007 19:40
Malice   Ты узнал у препода на счет данного тебе цыкла ? Он…   23.01.2007 19:49
forum4uxa   Ты узнал у препода на счет данного тебе цыкла ? О…   23.01.2007 19:53
Asm   hiv,а есть вероятность что при заданных значениях …   24.01.2007 4:57
hiv   hiv,а есть вероятность что при заданных значениях…   24.01.2007 13:20
Malice   hiv,а есть вероятность что при заданных значениях…   24.01.2007 13:35
forum4uxa   как это будет выглядеть в Паскале? Друг, а ты её…   24.01.2007 15:18
Malice   Друг, а ты её запускал? работала? Конечно. Да. С…   24.01.2007 15:36
forum4uxa   Конечно. Да. С i=19, k=57. а у меня почему то в…   24.01.2007 15:46
Malice   Вот оба варианта, оба у меня работают одинаково.   24.01.2007 16:05
forum4uxa   Вот оба варианта, оба у меня работают одинаково. …   24.01.2007 16:28
Malice   Я думаю любители тут есть, задавай вопросы в соотв…   24.01.2007 16:33
forum4uxa   коллега можно у тебя поинтересоваться, ниже циклик…   24.01.2007 16:33
hiv   что такое $AFA$AFA=0AFA(шестнадцатеричка…   24.01.2007 19:37


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.03.2024 20:47
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name