С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler: i8080/8085/KP580
Войти
Регистрация
Восстановить пароль
 
Valery99
1 / 1 / 0
Регистрация: 25.02.2017
Сообщений: 97
1

[КР580] Сосчитать число нулей и единиц в числах массива

09.11.2018, 00:14. Просмотров 125. Ответов 9

Нужно, чтобы начальный адрес массива лежал в HL, а конечный в DE. Вообщем что-то не доходит...

Assembler
1
2
3
4
5
6
7
8
9
10
MVI A 3E AA 
MVI C 0E 05
LXID 11 06 00
LXIH 21 01 09 
MOV M,A 77
INX H 23
INX H 23
DCX D 1B
JNZ C2 0A 08
HLT 76
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2018, 00:14
Ответы с готовыми решениями:

Подсчет нулей и единиц в числе
Здравствуйте! Помогите исправить программу. Надо чтобы считалось количество нулей и едениц в...

Количество пар единиц в окружении нулей
Дан массив из 8 байт. Рассматривая его, как массив из 64 бит, посчитать количество пар единиц в...

[КР580] Загрузить число в ячейку памяти
Как загрузить число 55H в ячейку памяти с адресом 900? Я вот пытаюсь так: MVI A, 55 А вот...

Подсчитать количество нулей и единиц в заданном шестнадцатеричном числе.
Задача:Подсчитать количество нулей и единиц в заданном шестнадцатеричном числе.

Дано 600 элементов массива, к каждому прибавить 5 (КР580)
Не могут справиться с задачей: дано 600 элементов массива, к каждому прибавить 5. мой вариант...

9
Kukuxumushu
1281 / 566 / 105
Регистрация: 13.06.2015
Сообщений: 1,904
Завершенные тесты: 2
09.11.2018, 00:52 2
Valery99, не доходит что?
Assembler
1
2
LXI D,0006h - конечный адрес
LXI H,0901h - начальный адрес
Судя по ошибкам синтаксиса, и что начало с концом перепутаны, тут много чего может не доходить...
1
pyzhman
782 / 477 / 65
Регистрация: 15.05.2012
Сообщений: 2,690
09.11.2018, 06:27 3
Цитата Сообщение от Valery99 Посмотреть сообщение
начальный... конечный
А делать-то что должна программа?
1
Valery99
1 / 1 / 0
Регистрация: 25.02.2017
Сообщений: 97
09.11.2018, 09:38  [ТС] 4
Вообще считать число нулей и единиц в числах массива. Ну для начала его же надо их заполнить. Вот я и спрашиваю, как сделать так, чтобы этот массив начинается в... И

Добавлено через 6 минут
То есть у меня например будет начало 900H, а конец 905H, так как тогда сделать эту программу, если DCX вычетает 1, а jnz работает по не нулю. На надо, чтобы дошло до 900 адреса и вышло, а она то продолжит считать?
0
pyzhman
782 / 477 / 65
Регистрация: 15.05.2012
Сообщений: 2,690
09.11.2018, 09:43 5
Введите не адрес конца массива, а счетчик числа элементов в массиве. И декрементируйте его.
1
Valery99
1 / 1 / 0
Регистрация: 25.02.2017
Сообщений: 97
09.11.2018, 09:47  [ТС] 6
А что тогда значит в задании начальный и конечный адрес массива должны хранится в HL и De? Что требуется сделать тогда
0
pyzhman
782 / 477 / 65
Регистрация: 15.05.2012
Сообщений: 2,690
09.11.2018, 11:16 7
Очевидно, то и значит. Воспользуйтесь советом Kukuxumushu. И проверяйте на достижение равенства.
1
ФедосеевПавел
Модератор
3860 / 2180 / 895
Регистрация: 01.02.2015
Сообщений: 7,263
09.11.2018, 21:36 8
Valery99, посмотрите, как реализован цикл в соседней теме
Создать массив приращений(к580)

Задаётся начало массива и его длина. Из длины вычитается 1 и при равенстве 0 - цикл завершается.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
lxi h, Src  ;адрес начала массива
 
lxi b, 5 ;bc=5 длина массива
for:
  ldax h  ;чтение очередного элемента массива
  inx h   ;адрес очередного элемента увеличить на 1
 
.......................... ;какая-то обработка массива 
 
  dcx b  ;уменьшение счётчика цикла на 1
  mov a, b  ;проверка счётчика цикла на равенство 0
  or c
jnz for  ;если не равен 0, то выполнить тело цикла ещё раз
0
Valery99
1 / 1 / 0
Регистрация: 25.02.2017
Сообщений: 97
10.11.2018, 00:19  [ТС] 9
Вообщем я понял так, что из конечного адреса будем вычитать начальный до тех пор пока конечный больше или равен начальному, а когда меньше цикл должен завершаться. Вот теперь только ломаю голову, а как это сделать. Ну есть две команды JNC по не переносу и JC по переносу. Я не пойму именно, когда мы сравниваем младший и старший байт, что за перенос возникает...
0
pyzhman
782 / 477 / 65
Регистрация: 15.05.2012
Сообщений: 2,690
10.11.2018, 06:18 10
Как вариант сравнивать на равенство:
Assembler
1
2
3
4
5
6
7
mov a,h
cmp d
jnz next
mov a,l
cmp e
jnz next
; сюда попадем при равенстве hl=de
0
10.11.2018, 06:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2018, 06:18

Задача на КР580 (Прибавить 4 ко всем элементам массива, меньшим, чем 4)
Добрый день. В университете изучаем дисциплину Вычислительные машины и системы и необходимо...

[КР580] Сформировать массив С из массивов А и В (элементы массива С - отсортированные по убыванию элементы A и B)
Нужна написать программу на языке assembler, для МП KP580. Существуют массивы А и B содержащие...

Преобразовать строку, содержащую произвольную последовательность нулей и единиц (двоичное число), в целое число
Помогите пожалуйста с заданием Написать функцию, которая преобразует строку, содержащую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru