Пример: summa.emu sizeofmem = 1000dec Задание: Вычисление суммы верхних элементов стека. Решение: Алгоритм Мнемоника: 0: UDR0=UDR0+TOS POP DS UDR1-- if not ZERO goto 0 Кодировка: UDR0=UDR0+TOS and POP DS команда ALU 011 Возврат из п/п 0 Шина источник TOS 0000 Шина получатель UDR0 1000 Операция со стеком POP DS 0001 команда ALU 0 На шину получателя Результат 0 Условие 0 0000 Перенос 0 00 Разрешить загрузку FL 1 Операция A+B+carry (4F) 1001111 Итого: 011 0 0000 1000 0001 0 0 0000 00 1 1001111 0110 0000 1000 0001 0000 0000 1100 1111 bin = 608100CF hex UDR1-- команда ALU 011 Возврат из п/п 0 Шина источник UDR1 1001 Шина получатель UDR1 1001 Операция со стеком nop 1000 команда ALU 0 На шину получателя Результат 0 Условие not Z 1001 Перенос 0 00 Разрешить загрузку FL 1 Операция B-not(carry) (4E) 1001110 Итого: 011 0 1001 1001 1000 0 0 1001 00 1 1001110 0110 1001 1001 1000 0010 0100 1100 1110 bin = 699824CE hex if not ZERO goto 0 команда C_Branch 010 адрес 00000000000000000000000000000 01000000000000000000000000000000 bin=40000000hex Программа: 00000000: 608100CF 00000004: 699824CE 00000008 40000000 Примечание: Данные для суммирование находяться в стеке DS. Количество элементов которые надо просуммировать в регистре UDR1. Результат в регистре UDR0. Программа не учитвает переносы возникающие при суммировании.