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

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

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

> как это будет выглядеть в Паскале?
forum4uxa
сообщение 18.01.2007 20:13
Сообщение #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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 11)
volvo
сообщение 18.01.2007 20:17
Сообщение #2


Гость






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

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


Новичок
*

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

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


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

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

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

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


Новичок
*

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

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


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


Профи
****

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

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


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


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


Новичок
*

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

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


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

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

если поможешь, с меня чоколадка give_rose.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Malice
сообщение 20.01.2007 0:51
Сообщение #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 
 К началу страницы 
+ Ответить 
forum4uxa
сообщение 23.01.2007 15:38
Сообщение #8


Новичок
*

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

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


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


Гость






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


Новичок
*

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

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


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

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

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


Профи
****

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

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


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

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

Блин.
Если изменить данный тебе код, например поменять местами i и k (т.е. сделать i=19, k=57), то паскалевский вариант и мой, приведеный выше отрабатывают одинаково. Результат i=44001, k=21554.
Если не менять то, что дали, то ломай голову сам smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hiv
сообщение 23.01.2007 17:39
Сообщение #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

 



- Текстовая версия 17.05.2024 12:14
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"