как это будет выглядеть в Паскале? |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
как это будет выглядеть в Паскале? |
forum4uxa |
Сообщение
#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 |
Сообщение
#2
|
Гость |
Это и ЕСТЬ в паскале... Ты задание приведи, что именно надо посчитать... А так hiv прав - этот код зацикливается...
Добавлено: А все почему? Потому, что числа очень быстро вылетают за допустимые пределы (банальное переполнение)... |
forum4uxa |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 26 Пол: Мужской Реальное имя: Alexey Репутация: 0 |
Это и ЕСТЬ в паскале... Ты задание приведи, что именно надо посчитать... А так hiv прав - этот код зацикливается... Добавлено: А все почему? Потому, что числа очень быстро вылетают за допустимые пределы (банальное переполнение)... i и k... а вообще 1. Использование встроенного ассемблера, отладка, окно просмотра и диалог изменения переменных (регистров), окно регистров. 2. Программная модель процессора 8086, регистры, методы адреса-ции, система команд. 3. Реализовать фрагмент программы на ассемблере, эквивалентный указанному на языке Pascal по индивидуальному заданию. |
forum4uxa |
Сообщение
#4
|
Новичок Группа: Пользователи Сообщений: 26 Пол: Мужской Реальное имя: Alexey Репутация: 0 |
????
|
hiv |
Сообщение
#5
|
Профи Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: 11 |
3. Реализовать фрагмент программы на ассемблере, эквивалентный указанному на языке Pascal по индивидуальному заданию. Т.е. паскалевский код и есть задание? Тогда беги к преподу и скажи, что типа в задании ошибка зацикливания - пусть поправит. А в остальном (ассемблерный код) похоже все сходится. Я немного счас занят, потом посмотрю досканальней.-------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
forum4uxa |
Сообщение
#6
|
Новичок Группа: Пользователи Сообщений: 26 Пол: Мужской Реальное имя: Alexey Репутация: 0 |
|
Malice |
Сообщение
#7
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
Вот так примерно это делает сам паскаль:
mov i, 57 |
forum4uxa |
Сообщение
#8
|
Новичок Группа: Пользователи Сообщений: 26 Пол: Мужской Реальное имя: Alexey Репутация: 0 |
и всё таки как сделать, чтоб на паскале работала? всё тоже деление на ноль
|
volvo |
Сообщение
#9
|
Гость |
В Паскалевском варианте деления на 0 НЕТ. Есть зацикливание, но это разные вещи...
|
forum4uxa |
Сообщение
#10
|
Новичок Группа: Пользователи Сообщений: 26 Пол: Мужской Реальное имя: Alexey Репутация: 0 |
|
Malice |
Сообщение
#11
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
а как избавиться от этого??? Блин. Если изменить данный тебе код, например поменять местами i и k (т.е. сделать i=19, k=57), то паскалевский вариант и мой, приведеный выше отрабатывают одинаково. Результат i=44001, k=21554. Если не менять то, что дали, то ломай голову сам |
hiv |
Сообщение
#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. -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
Текстовая версия | 22.12.2024 0:04 |