Консультация № 189164
12.04.2016, 13:29
0.00 руб.
0 1 1
Уважаемые эксперты! Прошу вас помочь с составлением программы для CompModel. Разность сумм четных и нечетных элементов массива; 11.
Заранее - большое спасибо!

Обсуждение

давно
Посетитель
7438
7205
19.04.2016, 00:03
общий
это ответ
Здравствуйте, freeflowmc!
Вот и программа. Начиная с адреса 40, надо будет записать 10 значений, например: 1,2,3,4,5,6,7,8,9,10
[code lang=asm h=200]
RD #40 ;стартовый адрес массива
WR R0 ;в регистре R0
RD #10 ;количество
WR R1 ;в R1
RD #0 ;сумма
WR R2 ;четных
WR R3 ;нечетных
LOOP:RD @R0+ ;читаем очередного, с автоинкрементом адреса
WR R4 ;сохраним в R4
DIV #2 ;вот тут самое "хитрое" место: так как нет ни команд сдвига, ни логических
MUL #2 ;то пришлось разделить на 2, потом умножить на 2 и результат сравнить с исходным
SUB R4 ;если не равны, то нечетное!
JNZ ODD;нечетное
RD R4 ;четное
ADD R2 ;накапливаем сумму четных
WR R2
JMP NEXT ;на продолжение цикла
ODD:RD R4;нечетное
ADD R3 ;накапливаем сумму
WR R3
NEXT:JRNZ R1,LOOP ;повторяем R1 раз
RD R2 ;сумма четных
SUB R3 ;минус сумма нечетных
OUT
HLT
[/code]
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа