Dashta
0 / 0 / 0
Регистрация: 06.11.2014
Сообщений: 32
|
|
1 | |
Умножение двухбайтного на однобайтный прямой код (ATmega128, ASM)06.11.2014, 18:12. Просмотров 1486. Ответов 9
Метки нет Все метки)
(
Есть предмет телекоммуникации и то что нам читают на лекции ни как не связно с тем, что этот же преподаватель требует на лабах. Я его не виню, он уже старенький, но вот проблема, никак не могу понять что от меня вообще хотят и как это реализовать. Помогите пожалуйста. Студентка 5 курса. Специальность сети связи. Вот само задание:
Программа умножения двухбайтного прямого кода на однобайтный прямой код. Исходные данные находятся в ячейках памяти с адреса, заданного преподавателем, а результат поместить в следующие ячейки памяти. Результат представить в виде трехбайтного числа. Добавлено через 5 минут Исходные данные он не давал, поэтому можно взять любое число.
0
|
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
|
06.11.2014, 18:12 |
Ответы с готовыми решениями:
9
Работа с USART ATMega128 (ASM) Нет контроля светодиодов по последовательному каналу (ASM, ATMega128) Работа с LCD LM016L-HD44780 (ATMega128, ASM, Proteus) Умножение чисел с косвенной адресацией (ASM 51) AT90S1200. Умножение 4-х разрядных чисел на ASM |
Mikl___
![]() 13304 / 6377 / 629
Регистрация: 11.11.2010
Сообщений: 11,536
|
|
07.11.2014, 03:30 | 2 |
Dashta,
а старенький преподаватель вам не объяснял, что ассемблер -- машинно-ориентированный язык, сколько разных типов микропроцессоров -- столько и различных ассемблеров и догадываться, ЧТО конкретно тебе нужно нет ни времени ни желания ![]()
0
|
Dashta
0 / 0 / 0
Регистрация: 06.11.2014
Сообщений: 32
|
||||||
07.11.2014, 17:07 [ТС] | 3 | |||||
Спасибо, уже и не нужно, сама решила. Если вдруг кто будет искать такое то вот решение именно этой задачи.
только это однобайтный на однобайтный, для двухбайтного нужно просто однобайтное число умножить на старшую половину, потом на младшую половину а потом их сложить и записать как умножение на первую половину, сумма произведений, умножение на вторую половину
0
|
pyzhman
791 / 485 / 66
Регистрация: 15.05.2012
Сообщений: 2,744
|
|
07.11.2014, 17:54 | 4 |
0
|
Dashta
0 / 0 / 0
Регистрация: 06.11.2014
Сообщений: 32
|
|
07.11.2014, 20:27 [ТС] | 5 |
Почему не верю то? У меня было чуть по-другому, все считало верно как на калькуляторе, но препод сказал что я не права и первый бит в прямом коде это знак, и я его не учла, пришлось переделывать. Но почему вы считаете что я эту достаточно простую задачу не смогла решить? Мне нужно было просто понять суть что от меня хотят вот и все. Это далеко не первая лаба на ассемблере (ATmega 128), просто до этого мы работали напрямую со схемой, выводили имена на дисплей, работали с диодами, а вот именно чтобы что-то считать не было, поэтому не был понятен алгоритм
0
|
paskal
450 / 299 / 28
Регистрация: 15.08.2011
Сообщений: 928
|
|||||||||||
07.11.2014, 22:21 | 6 | ||||||||||
Если вам нужно было умножение чисел в прямом коде, то зачем эти пляски:
Хотя я догадался. Вы же не сказали что прямой код со знаком. И еще. Вы говорили что исходные данные находятся в ячейке по адресу, а в вашем решении сделано по другому
1
|
Dashta
0 / 0 / 0
Регистрация: 06.11.2014
Сообщений: 32
|
|
07.11.2014, 22:24 [ТС] | 7 |
могу объяснить, изначально так я и делала, но оказалось что преподаватель хочет чтобы в прямом коде были знаки, если первая 1 то отрицательное число, а если 0 то положительное, и он дал число 81 в 16тиричной системе, которое как оказалось в его понимании является в десятеричной -1, хотя калькулятор считает не так, поэтому сначала мы умножаем на 80 оба числа, это обнуляет их знаки (как он сказал), потом делаем последующие операции и потом складываем с 1F что дает нам знак числа, и потом только умножаем. Честно я не считаю данное задание корректным и правильным, но оно заработало так как он хотел и лаба была сдана. Теперь на защиту мне было выдано другое задание, и буду с ним разбираться: дан массив чисел N, обнулить ячейки с отрицательными числами и записать в них номера этих ячеек и посчитать кол-во преобразованных ячеек, поискала в инете и быстро ничего не нашла, поэтому придется искать углубление.
Добавлено через 1 минуту Я сама до сегодняшнего дня не знала что прямой код со знаком он хочет, поэтому вот так.
0
|
pyzhman
791 / 485 / 66
Регистрация: 15.05.2012
Сообщений: 2,744
|
|
08.11.2014, 07:25 | 8 |
Молодец, прям-таки луч света.
![]()
0
|
ValeryS
Модератор
|
|
14.11.2014, 00:22 | 9 |
странный дяденька
в прямом коде уже по моему никто не работает как будем решать -1+1=0 0х81+0х01=0х82 ![]() при обратном то все просто 0хFF+0x01=0x00 идет переполнение и регистр сам обнулится прямой по этой причине и отбросили, я про него только в старых книжках читал,даже забыл, что такой существует
0
|
Dashta
0 / 0 / 0
Регистрация: 06.11.2014
Сообщений: 32
|
|
14.11.2014, 10:43 [ТС] | 10 |
Так преподавателю уже за 80)
0
|
14.11.2014, 10:43 | |
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
|
14.11.2014, 10:43 |
Код программы для электронных весов с мк ATMEGA128 Умножение Двухбайтного на Однобайтное Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |