как это будет выглядеть в Паскале? |
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) |
volvo |
18.01.2007 20:17
Сообщение
#2
|
Гость |
Это и ЕСТЬ в паскале... Ты задание приведи, что именно надо посчитать... А так hiv прав - этот код зацикливается...
Добавлено: А все почему? Потому, что числа очень быстро вылетают за допустимые пределы (банальное переполнение)... |
forum4uxa |
18.01.2007 22:08
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 26 Пол: Мужской Реальное имя: Alexey Репутация: 0 |
Это и ЕСТЬ в паскале... Ты задание приведи, что именно надо посчитать... А так hiv прав - этот код зацикливается... Добавлено: А все почему? Потому, что числа очень быстро вылетают за допустимые пределы (банальное переполнение)... i и k... а вообще 1. Использование встроенного ассемблера, отладка, окно просмотра и диалог изменения переменных (регистров), окно регистров. 2. Программная модель процессора 8086, регистры, методы адреса-ции, система команд. 3. Реализовать фрагмент программы на ассемблере, эквивалентный указанному на языке Pascal по индивидуальному заданию. |
forum4uxa |
19.01.2007 11:06
Сообщение
#4
|
Новичок Группа: Пользователи Сообщений: 26 Пол: Мужской Реальное имя: Alexey Репутация: 0 |
????
|
hiv |
19.01.2007 12:27
Сообщение
#5
|
Профи Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: 11 |
3. Реализовать фрагмент программы на ассемблере, эквивалентный указанному на языке Pascal по индивидуальному заданию. Т.е. паскалевский код и есть задание? Тогда беги к преподу и скажи, что типа в задании ошибка зацикливания - пусть поправит. А в остальном (ассемблерный код) похоже все сходится. Я немного счас занят, потом посмотрю досканальней.-------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
forum4uxa |
20.01.2007 0:25
Сообщение
#6
|
Новичок Группа: Пользователи Сообщений: 26 Пол: Мужской Реальное имя: Alexey Репутация: 0 |
|
Malice |
20.01.2007 0:51
Сообщение
#7
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
Вот так примерно это делает сам паскаль:
mov i, 57 |
forum4uxa |
23.01.2007 15:38
Сообщение
#8
|
Новичок Группа: Пользователи Сообщений: 26 Пол: Мужской Реальное имя: Alexey Репутация: 0 |
и всё таки как сделать, чтоб на паскале работала? всё тоже деление на ноль
|
volvo |
23.01.2007 16:11
Сообщение
#9
|
Гость |
В Паскалевском варианте деления на 0 НЕТ. Есть зацикливание, но это разные вещи...
|
forum4uxa |
23.01.2007 16:26
Сообщение
#10
|
Новичок Группа: Пользователи Сообщений: 26 Пол: Мужской Реальное имя: Alexey Репутация: 0 |
|
Malice |
23.01.2007 16:44
Сообщение
#11
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
а как избавиться от этого??? Блин. Если изменить данный тебе код, например поменять местами i и k (т.е. сделать i=19, k=57), то паскалевский вариант и мой, приведеный выше отрабатывают одинаково. Результат i=44001, k=21554. Если не менять то, что дали, то ломай голову сам |
hiv |
23.01.2007 17:39
Сообщение
#12
|
Профи Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: 11 |
а как избавиться от этого??? Зацикливание возникает в следствии того, что не обрабатывается ошибка переполнения, если ее включить - то будет паскалем выдаваться "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. -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
Текстовая версия | 17.05.2024 12:14 |