28.09.2016, 11:03
общий
это ответ
Здравствуйте, KORSAJan!
Ошибки:
1) длина массива равна 16, и начало следующего было меньше, чем начало массива+16
2) зацикливание было из-за того, что стояла команда условного перехода jns 12. Был записан явный адрес 12 (не метка!)
Кстати, должен был быть переход на декремент счетчика цикла (а не на метку начала цикла L2)
В мини-форуме записано js L1, что тоже, сами понимаете, неправильно. Нам же надо считать отрицательные числа. И переход не туда.
3) обнуление переменной по адресу 49 надо делать в начале подпрограммы M
4) совершенно нет необходимости сохранять считанные значения. Нам надо знать только их знак
[code lang=asm h=200]rd #85
wr r1
rd #16
wr r2
call m
wr r6
rd #110
wr r1
rd #16
wr r2
call m
wr r7
rd #130
wr r1
rd #16
wr r2
call m
add r7
add r6
div #3
out
hlt
m: rd #0
wr 49
l2: rd @r1+
jns l3
rd 49
add #1
wr 49
l3: jrnz r2,l2
rd 49
ret[/code]
5
Большое спасибо,что помогли ) а то все выходные мучался сидел
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен