Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2016, 19:02   #1
Poopy
Пользователь
 
Регистрация: 13.10.2015
Сообщений: 16
По умолчанию Количество четных чисел(Ассемблер)

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

Код:
RD #50  ; ввод адреса А1 первого числа С1  
WR 40   ; запись адреса А1 первого числа С1 в ячейку 040
RD #10  ; количество повторений k=10
WR 41   ; количество повторений запись в ячейку 041
RD #0   ; ввод начального значения подсчета четных чисел S=0
WR 43   ; количество четных чисел

M1: 
RD 50   ;считываем из ячейки  с адресом 50      ;ПРОБЛЕМА ВОТ ЗДЕСЬ  Всегда берет ячейку 50, незнаю как сделать чтобы брал следующую

DIV #2
MUL #2
SUB 50
jnz m3 ;переход, если результат не равен нулю, в данном случаен - отрицателен, т.е. исх.число - нечетное

           
RD 43   ;увеличение на 1, четных чисел
ADD #1
WR 43
RD 40  ; считывание адреса Ai текущего числа Ci
ADD #1 ; увеличение на 1 адреса Ai текущего числа Ci
WR 40  ; запись адреса Ai текущего числа Ci в ячейку 040
RD 41  ; считывание текущего значения k числа  из ячейки 041
SUB #1 ; уменьшение на 1 числа непросуммированных чисел: k=k-1
WR 41  ; запись нового значения k числа непросуммированных чисел в ячейку 041
JNZ M1 ; переход к метке М1, если k<>0

jmp exit

m3:
RD 40  ; считывание адреса Ai текущего числа Ci
ADD #1 ; увеличение на 1 адреса Ai текущего числа Ci
WR 40  ; запись адреса Ai текущего числа Ci в ячейку 040
RD 41  ; считывание текущего значения k числа непросуммированных чисел из ячейки 041
SUB #1 ; уменьшение на 1 числа непросуммированных чисел: k=k-1
WR 41  ; запись нового значения k числа непросуммированных чисел в ячейку 041
JNZ M1 ; переход к метке М1, если k<>0

exit:
RD 43 ; считывание получившихся четных чисел
OUT ; вывод полученного значения суммы в регистр OR процессора
HLT  ; стоп
Poopy вне форума Ответить с цитированием
Старый 19.12.2016, 22:57   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,730
По умолчанию

Ассемблеров в мире столько, сколько линий (микро-)процессоров. Этот - из каких ?
Но по любому - ни div, ни mul не нужен - достаточно проверить 0-й бит байта. На АВР это выглядело бы так :
Код:
   lds  R16,word1
   andi  R16,1
   breq  odd
   inc   R24 ; инкремент счетчика четных
odd:.....
И в любом случае работа с физическими адресами - это каменный век с динозаврами. Переменным (массивам) задают осмысленные символьные имена, а компилятор сам отводит под них память.

Последний раз редактировалось digitalis; 19.12.2016 в 23:08.
digitalis на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод четных чисел в файл (ассемблер) Veka1 Помощь студентам 1 19.12.2016 10:32
Введено 4-значное число! Найти количество четных и не четных чисел!Как это оформить в блок-схеме? Сергей_97 Помощь студентам 2 04.11.2016 17:10
Подсчитать сумму отрицательных четных чисел, количество четных чисел кратных 3 и т.д. (pascal abc .net) kardinalmax Общие вопросы .NET 1 24.01.2014 09:28
определить количество четных чисел и количество нечетных чисел массива, которые вводятся в МЕМО, вывести в поле компонента Edit. Pyxy Помощь студентам 2 21.03.2012 23:24