Программист
|
||||||
1 | ||||||
TASM Простейший калькулятор03.06.2012, 03:14. Показов 45441. Ответов 8
Метки нет (Все метки)
Стоит задача следующего типа: написать простейший калькулятор, умеющий выполнять действия сложения и вычитания и контролировать переполнение. Проблема возникла в следующем моменте - при вычитании двух различных чисел (разных знаков, и одинаковых в том числе) рассчет и вывод верный, а при суммировании операндов с различными знаками, происходит неверный подсчет. Прошу помощи
0
|
03.06.2012, 03:14 | |
Ответы с готовыми решениями:
8
Написать простейший дизассемблер Простейший планировщик процессов Простейший планировщик процессов Простейший калькулятор |
273 / 268 / 11
Регистрация: 24.12.2010
Сообщений: 328
|
|
03.06.2012, 10:55 | 2 |
В 43 строке должно быть jno вместо jnc.
0
|
Программист
|
|
03.06.2012, 11:07 | 3 |
Но разве при операции сложения не CF флаг учитывается, а не OF, как для вычитания? Хотя я попробовал - но проблемы это не решило.
В целом суть какая: При сложении получается, что на входных данных, скажем первый операнд 65532, а второй 5, то получается что при сложении получим переполнение, что верно. В то время, как при вычитании получим -9, что впринципе не верно.
0
|
273 / 268 / 11
Регистрация: 24.12.2010
Сообщений: 328
|
|
03.06.2012, 11:43 | 4 |
Сообщение было отмечено как решение
Решение
Операнды должны быть в диапазоне от -32768 до 32767 для знаковых чисел типа word. Число 65532 в качестве операнда годится только при операциях с числами без знака.
3
|
Программист
|
|
03.06.2012, 11:49 | 5 |
Спасибо. Сейчас попробовал так:
а) первый операнд 32767 второй операнд -5 результат: при вычитании и разности получил переполнения б) первый операнд 32767 второй операнд 5 результат: при сумме получил -32764(верно?), при разности 32762(это верно) Так должно все получится? Верно?
0
|
202 / 168 / 11
Регистрация: 30.05.2012
Сообщений: 703
|
|
03.06.2012, 11:59 | 6 |
Смотри:
-5 = 65531 32767-65531 будет заем. Сумма не верная, потому что 32767+5 = 32772 32772 имеет единичный знаковый бит, поэтому считается отрицательным числом. Не задавай предельные значения!
2
|
273 / 268 / 11
Регистрация: 24.12.2010
Сообщений: 328
|
|
03.06.2012, 12:02 | 7 |
a) 32767-(-5)=32772 -> переполнение -> выход.
б) 32767+5=32772 -> тоже, 32767-5=32762 -> верно.
2
|
Программист
|
|
03.06.2012, 12:04 | 8 |
Спасибо. Просто я решил проверять именно калькулятор на граничных значениях.
На значениях -15 и 5 получил -10 и -20 соответственно. На значениях -15 и -5 получил -10(разность) и -20(при сумме,что верно)
0
|
0 / 0 / 0
Регистрация: 13.09.2016
Сообщений: 13
|
|
04.06.2023, 10:12 | 9 |
Это простейший калькулятор на masm32_fenix.zip
0
|
04.06.2023, 10:12 | |
04.06.2023, 10:12 | |
Помогаю со студенческими работами здесь
9
Простейший калькулятор Простейший калькулятор Простейший калькулятор Простейший калькулятор Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |