Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 17.04.2013, 19:35   #1
Nik953
 
Регистрация: 17.04.2013
Сообщений: 5
Репутация: 10
По умолчанию Нахождение среднего арифметического. Ассемблер. Электроника 580

Здравствуйте уважаемые форумчане! Помогите мне пожалуйста решить одну проблемку. У меня в университете есть такой замечательный предмет, как электроника. С этого семестра мы перешли к теме "микропроцессорная техника". Конкретно, микропроцессор - это старый советский аппарат - Электроника 580, 1986 г.в. Может быть, кто-нибудь и знаком с данным чудом техники). Но это всё лирика.

Программирование производится на ассемблере, данный язык видел я впервые, и он на меня произвёл какое-то устрашающее впечатление, если честно))) В саму электронику команды загоняются вообще в виде машинных кодов...

Помогите мне пожалуйста решить задачку:
Найти среднее значение 32х двухбайтных чисел, записанных в ячейки с 8300 до 833F. Среднее значение записать в ячейке 8400, 8401

Единственное, что я могу сделать здесь - это сложить несколько чисел в данном устройстве, но судя по всему, для решения данной задачи нужно использовать цикл... Плюсом, естественно, деление...
Для электроники есть эмулятор - e580v0953b.rar
Nik953 вне форума   Ответить с цитированием
Старый 18.04.2013, 12:45   #2
DiemonStar
Профессионал
 
Регистрация: 08.02.2012
Адрес: Русь-матушка
Сообщений: 2,173
Репутация: 491
По умолчанию

для начала уточните задание: среднее от числа в 256 разрядов (32-хбайтное) есть число 256 разрядное и никак не вместится в 16 разрядов.
__________________
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума   Ответить с цитированием
Старый 18.04.2013, 13:44   #3
raxp
Профессионал
 
Регистрация: 29.09.2009
Сообщений: 9,731
Репутация: 3006
По умолчанию

...не 32-х байтное, а 32 двухбайтных.
__________________
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума   Ответить с цитированием
Старый 18.04.2013, 13:57   #4
DiemonStar
Профессионал
 
Регистрация: 08.02.2012
Адрес: Русь-матушка
Сообщений: 2,173
Репутация: 491
По умолчанию

упс) точно...
ну тогда все относительно просто:
1. цикл на 32 повторения
2. накапливаем в слово1 (16 разрядов) младшие байты
3. накапливаем в слово2 старшие байты
4. на п.1. пока цикл не закончится
5. прибавляем младший байт слова2 к старшему байту слова1
6. коррекция переноса для старшего байта слова2
7. сдвиг на 5 разрядов вправо слова1
8. сдвиг на 3 разряда влево старшего байта слова2
9 логическое или старших байтов слова1 и слова2
10. сохраняем слово1
__________________
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 18.04.2013 в 14:07.
DiemonStar вне форума   Ответить с цитированием
Старый 18.04.2013, 20:44   #5
Nik953
 
Регистрация: 17.04.2013
Сообщений: 5
Репутация: 10
По умолчанию

Вот спасибо! Конструктивный ответ, а то на одном форуме спросил, ударились в оффтоп и начали мне доказывать, что я зря сунулся на специальность)) ктож знал, что у меня такой предмет будет) Попробую порешать, и ещё вопрос - что значит коррекция переноса?
Nik953 вне форума   Ответить с цитированием
Старый 18.04.2013, 21:22   #6
Nik953
 
Регистрация: 17.04.2013
Сообщений: 5
Репутация: 10
По умолчанию

Сегодня разбирали сортировку, и, в процессе решения сортировки сделали программу переноса чисел массива из ячеек 8300-8308 в ячейки 8400-8408 (цикл, со счётчиком), в данном цикле мне не понятны некоторые операции, может быть кто-нибудь пояснит, как оно работает, а переделаю цикл под решение своей задачки. Принцип то вроде один, мне нужно заменить на сложение...
Код
#ЯЧ-----МНЕМ-КОД---МАШ-КОД---КОММЕНТ
8200----MVI-B------------06---------------Счётчик-за
8201----------------------08---------------8-раз
------------------------------------------------------------------
8202----LXI-H-------------21---------------Загр.-регистр
8203----------------------00---------------пары
8204----------------------83---------------
------------------------------------------------------------------
8205----LXI-D------------11----------------
8206---------------------00---------------
8207---------------------84---------------
------------------------------------------------------------------
8208----MOV-(A,-M)------7E---------------Перемещ-из-пам.-в-аккум
------------------------------------------------------------------
8209----XCHG-------------EB-------------Содерж-регистр-пары-HL-и-DE-обменивается--
------------------------------------------------------------------
820A----MOV-(M,-A)------77---------------Перемещ-из-аккум-в-память
------------------------------------------------------------------
820B----XCHG-------------EB---------------
------------------------------------------------------------------
820C----INX-H------------23---------------Добавл.-1-в-рег.-пару
------------------------------------------------------------------
820D----INX-D------------13---------------
------------------------------------------------------------------
820E----DCR-B------------05--------------Вычитает-1-
------------------------------------------------------------------
820F----JNZ---------------C2--------------Проверка-на-0-
------------------------------------------------------------------
8210----------------------08------------------
8211----------------------82---------------
------------------------------------------------------------------
8212----RST-32-----------E7---------------Выход--
------------------------------------------------------------------
Ячейки - это ячейка памяти, с данными или командой, мне не очень ясна команда XCHG, зачем добавляют и вычитают 1, проверка на 0

Последний раз редактировалось Nik953; 18.04.2013 в 21:29.
Nik953 вне форума   Ответить с цитированием
Старый 19.04.2013, 08:26   #7
DiemonStar
Профессионал
 
Регистрация: 08.02.2012
Адрес: Русь-матушка
Сообщений: 2,173
Репутация: 491
По умолчанию

Цитата:
и ещё вопрос - что значит коррекция переноса?
примерно то же, что и в обычном поразрядном сложении:
например,
2 8
+
3 7
____
1 5 - вот тут возникает перенос в старший разряд
+
5
____
6 5

аналогично и с байтами - если сумма чисел не вмещается в байт, то производится перенос в старший разряд
__________________
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума   Ответить с цитированием
Старый 21.04.2013, 22:20   #8
Nik953
 
Регистрация: 17.04.2013
Сообщений: 5
Репутация: 10
По умолчанию

ясно) никогда не задумывался, как называется эта операция))
Nik953 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
массив, нахождение среднего арифметического андрей.... Помощь студентам 4 21.12.2012 22:32
нахождение среднего арифметического двух длинных чисел Nortos Assembler 5 31.12.2010 19:55
вычитывание чисел из файла, и нахождение их среднего арифметического Sh@de Помощь студентам 1 18.08.2010 08:40
Нахождение среднего арифметического с помощью Паскаля Regina Помощь студентам 3 15.11.2009 12:32
Нахождение среднего арифметического AliVe Паскаль 1 12.04.2007 00:25


10:55.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru