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

> Прочтите прежде чем задавать вопрос!

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

 
 Ответить  Открыть новую тему 
> как это будет выглядеть в Паскале?
сообщение
Сообщение #1


Новичок
*

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

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


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)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Это и ЕСТЬ в паскале... Ты задание приведи, что именно надо посчитать... А так hiv прав - этот код зацикливается...

Добавлено:
А все почему? Потому, что числа очень быстро вылетают за допустимые пределы (банальное переполнение)...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Цитата(volvo @ 18.01.2007 20:17) *

Это и ЕСТЬ в паскале... Ты задание приведи, что именно надо посчитать... А так hiv прав - этот код зацикливается...

Добавлено:
А все почему? Потому, что числа очень быстро вылетают за допустимые пределы (банальное переполнение)...

i и k...
а вообще
1. Использование встроенного ассемблера, отладка, окно просмотра и диалог изменения переменных (регистров), окно регистров.
2. Программная модель процессора 8086, регистры, методы адреса-ции, система команд.
3. Реализовать фрагмент программы на ассемблере, эквивалентный указанному на языке Pascal по индивидуальному заданию.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

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

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


unsure.gif ????
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

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

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


Цитата(forum4uxa @ 18.01.2007 22:08) *
3. Реализовать фрагмент программы на ассемблере, эквивалентный указанному на языке Pascal по индивидуальному заданию.
Т.е. паскалевский код и есть задание? lol.gif Тогда беги к преподу и скажи, что типа в задании ошибка зацикливания - пусть поправит. А в остальном (ассемблерный код) похоже все сходится. Я немного счас занят, потом посмотрю досканальней.


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


Новичок
*

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

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


Цитата(hiv @ 19.01.2007 12:27) *

Т.е. паскалевский код и есть задание? lol.gif Тогда беги к преподу и скажи, что типа в задании ошибка зацикливания - пусть поправит. А в остальном (ассемблерный код) похоже все сходится. Я немного счас занят, потом посмотрю досканальней.

если поможешь, с меня чоколадка give_rose.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Профи
****

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

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


Вот так примерно это делает сам паскаль:
mov     i, 57
mov k, 19
@n:
cmp i, 119
jnb @ext
mov ax, k
shr ax, 1
add ax, i
xor dx, dx
mov cx, 11
div cx
xchg ax, dx
cmp ax, 5
jnz @w
mov ax, i
sub ax, k
mov i, ax
jmp @n
@w:
mov ax, i
shr ax, 1
mov cx, ax
mov ax, k
mul k
add ax, cx
mov k, ax
jmp @n
@ext:

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

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

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


и всё таки как сделать, чтоб на паскале работала? всё тоже деление на ноль nea.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






В Паскалевском варианте деления на 0 НЕТ. Есть зацикливание, но это разные вещи...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

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

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


Цитата(volvo @ 23.01.2007 16:11) *

В Паскалевском варианте деления на 0 НЕТ. Есть зацикливание, но это разные вещи...

а как избавиться от этого???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Профи
****

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

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


Цитата(forum4uxa @ 23.01.2007 16:26) *

а как избавиться от этого???

Блин.
Если изменить данный тебе код, например поменять местами i и k (т.е. сделать i=19, k=57), то паскалевский вариант и мой, приведеный выше отрабатывают одинаково. Результат i=44001, k=21554.
Если не менять то, что дали, то ломай голову сам smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Профи
****

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

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


Цитата(forum4uxa @ 23.01.2007 16:26) *
а как избавиться от этого???
Зацикливание возникает в следствии того, что не обрабатывается ошибка переполнения, если ее включить - то будет паскалем выдаваться "Runtime error 215 at 0BED:0075.", что означает "Arithmetic overflow error". Это значит что где-то при вычислении твоего k происходит переполнение, в ассемблере после математических операций нада проверять флаговый регистр:
Код
                            Регистр флагов
-----------------------------------------------------------------

     Этот 16-разрядный (16-битовый) регистр содержит всю  необхо-
димую  информацию  о состоянии процессора 8086 и результатах пос-
ледних инструкций (см. Рис. 4.5).

15                                                         0
------------------------------------------------------------
|   |   |   |   | O | D | T | S | Z |   | A | P | P |  | C |
------------------------------------------------------------

     Битовые флаги:

     O - флаг переполнения;
     D - флаг направления;
     I - флаг прерывания;
     T - флаг перехвата;
     S - флаг знака;
     Z - флаг нуля;
     A - флаг дополнительного переноса;
     P - флаг четности;
     C - флаг переноса.

     Рис. 4.5 Регистр флагов процессора 8086.



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

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

 





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