Как сложить два массива чисел, используя набор инструкций IAS?
Я должен написать программу с использованием набора инструкций IAS, который будет проходить через два массива и добавлять каждый элемент одного к другому и сохранять результат в массиве thrid. Так, например, я должен взять A(1) + B(1) и сохранить его в C(1), а затем взять A(2) + B(2) и сохранить в C(2) и так далее, пока я не доберусь до A(20) + B(20) хранится в C(20). Но я не знаю, как создать счетчик контролируемого цикла в IAS... в любом случае... вот что я сделал... но это не работает:)
00000001 LOAD M(A[1]) Transfer M(A[1]) to the accumulator
00000101 ADD M(B[1]) Add M(B[1]) to AC and store result in AC
00100001 STOR M(C[1]) Transfer contents of accumulator to memory location C[1]
спасибо за любую помощь:)
2 ответа
Решение
Для любого в будущем. На самом деле существует множество решений этого вопроса, и именно с ним я столкнулся (возможно, потребуется некоторая проработка):
* Initialize a variable 'count' to 999
Label: TOP
00000001 LOAD M(A[count]) Transfer M(A[count]) to the accumulator
00000101 ADD M(B[count]) Add M(B[count]) to AC and store result in AC
00100001 STOR M(C[count]) Transfer contents of accumulator to memory location C[count]
00001010 LOAD M(address of count) Transfer the contents of M(address of count) to the AC
00000110 SUB M(the number 1) Subtract one from AC and store in AC
00100001 STOR M(D) Transfer contents of AC to location M(D)
00001111 JUMP+ M(X,0:19) If number in accumulator is non-negative take next
instruction from left half of M(X)
LH: go to TOP
RH: exit
000 010F2 13006 #[LOAD M(0F2); STOR M(006,28:39)]
001 050F1 210F2 #[ADD M(0F1); STOR M(0F2)]
002 010F3 12006 #[LOAD M(0F3); STOR M(006,0:19)]
003 050F1 210F3 #[ADD M(0F1); STOR M(0F3)]
004 010F4 12007 #[LOAD M(0F4); STOR M(007,0:19)]
005 050F1 210F4 #[ADD M(0F1); STOR M(0F4)]
006 01002 05000 #[LOAD M(002); ADD M(000)]
007 21004 010F0 #[STOR M(004); LOAD M(0F1)]
008 060F1 210F0 #[SUB M(0F0); STOR M(0F0]
009 010F0 0F000 #[JUMP+ M(000,0:19)]
0F0 00000 00005 #ITERATOR COUNTER
0F1 00000 00001 #CONSTANT
0F2 00000 00100 #POINTER TO ARRAY A
0F3 00000 00200 #POINTER TO ARRAY B
0F4 00000 00300 #POINTER TO ARRAY C
100 00000 00001 #FIRST ELEMENT OF THE ARRAY A
200 00000 00001 #FIRST ELEMENT OF THE ARRAY B
300 00000 00000 #FIRST ELEMENT OF THE ARRAY C