0 / 0 / 0
Регистрация: 15.11.2022
Сообщений: 3
|
|
1 | |
Сложить два 6-байтовых числа (Assembler)15.11.2022, 19:24. Показов 487. Ответов 6
0
|
15.11.2022, 19:24 | |
Ответы с готовыми решениями:
6
[MCU8051] Сложить два числа и вывести на двухразрядный индикатор (язык Ассемблер) Сложить 5 байтовых чисел и занести результат в переменную integer Как сложить два плюс два? если оба числа символьные? Даны два числа: одно размером dd, другое dw. Сложить эти числа |
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
|
|
16.11.2022, 09:29 | 2 |
Сообщение было отмечено cancil как решение
Решение
Сложение двух регистров - команда ADD. Сложение с учетом переноса - ADC. Чтение из памяти (я же не знаю, где у вас числа хранятся) - LDS.
В общем-то, этого достаточно. Остальной код вы должны были писать на уроке.
1
|
0 / 0 / 0
Регистрация: 15.11.2022
Сообщений: 3
|
|
16.11.2022, 09:41 [ТС] | 3 |
В этом и проблема, что никакого кода нам не давали. Просто поставили перед фактом, что нужно сделать вот эту задачу. Никаких подсказок, помощи нам преподаватель не дал. В основном мне бы хотелось узнать как получить 6-байтовое число.
0
|
3218 / 2361 / 540
Регистрация: 11.09.2009
Сообщений: 8,604
|
|
16.11.2022, 10:34 | 4 |
Сообщение было отмечено cancil как решение
Решение
В восьмибитном микроконтроллере регистр - 1 байт. Если у вас на входе шестибайтовые числа (или вообще произвольной разрядности), то оно вводится и выводится побайтно, последовательно. Или вообще ввод-вывод производится в последовательном коде, побитно.
Внутри микроконтроллера число располагается в нескольких регистрах (или в ячейках памяти). Математические действия над такими числами производятся по определённым алгоритмам. Например, сложение таких чисел производится так же, как вы складываете на бумажке "в столбик". Разница только в том, что на бумажке у вас один знак - десятичная цифра, а при сложении в микроконтроллере - один байт, т.е. шестнадцатиричная цифра. Если числа со знаком, то знак - это старший бит этого числа. При сложении двух шестибайтных чисел без знака (длина числа 48 бит), результат будет занимать 49 бит. То есть под число результата потребуется 7 байт, старшие 6 бит старшего байта будут равны нулю. Про арифметические операции с многобайтными числами в сети полно разных статей. Вот типичная.
1
|
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
|
|
16.11.2022, 13:19 | 5 |
Не верю. Даже в худшем случае он должен был дать литературу.
Если же вам вместо преподавателя попалось бревно, способное только выйти к проектору и положить на него слайды, идите ругаться. Но, повторяю: в этот вариант я не верю. Скорее, они все на эмуляторе проверяют. Запустили пошаговый режим, записали в ячейки памяти два числа, продолжили выполнение, посмотрели что в ячейках оказалось. Без понятия как, если я угадал, ТС будет проверять правильность алгоритма. В отладчике ведь ячейки в хексе отображаются, их еще склеить надо. Только не шестнадцатеричная, в 256-ричная, конечно. Ну или две шестнадцатеричные за раз. Как оно будет вводиться? Кодом или руками в отладчике? Простейший вариант - открываете калькулятор, вводите туда число, нажимаете кнопочку HEX, число становится шестнадцатеричным. Каждую пару цифр переписываете в код / отладчик. Обратно так же.
0
|
0 / 0 / 0
Регистрация: 15.11.2022
Сообщений: 3
|
|
16.11.2022, 13:26 [ТС] | 6 |
Хотите верьте, хотите нет, но вот такой вот у нас преподаватель. Скажу честно, он сам не может решить нашу задачу. Вводиться оно будет кодом.
0
|
3218 / 2361 / 540
Регистрация: 11.09.2009
Сообщений: 8,604
|
||||||
16.11.2022, 15:50 | 7 | |||||
Сообщение было отмечено cancil как решение
Решение
Не будем здесь это обсуждать.
Эта задача вполне по силам среднестатистическому студенту. Берёте в интернете пример кода на ассемблере сложения многобайтных чисел и переделываете его под заданную разрядность. Например вот из этого (сложение двух четырёхбайтных):
Первое слагаемое - var1_5, var1_4, var1_3, var1_2, var1_2, var1_0 Второе слагаемое - var2_5, var2_4, var2_3, var2_2, var2_2, var2_0 Результат - (res_6), res_5, res_4, res_3, res_2, res_1, res_0. И добавьте ещё циклов сложения. Требование, что результат не больше 48 бит (т.е. влезает в ту же разрядную сетку 6 байт, что и слагаемые), можно оставить. А можно и полное сложение сделать, без ограничения значений слагаемых, с результатом 49 бит. Добавлено Внимательно не посмотрел... Код этого примера не для AVR, а для PIC. Но в вашем задании вроде это требование и не указано... Хотя раздел форума... Можете найти в сети другой пример под нужный вам контроллер. Принцип сложения тот же самый.
0
|
16.11.2022, 15:50 | |
16.11.2022, 15:50 | |
Помогаю со студенческими работами здесь
7
Два числа заданы на ленте двумя массивами меток Сложить эти числа Даны два длинных целых числа (256+) требуется сложить эти числа Машина Поста: два числа заданы на ленте двумя массивами меток. Сложить эти числа Машина Поста. Два числа заданы на ленте двумя массивами меток. Сложить эти числа Сложить два числа a, b Сложить два числа Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |