Вариант 2, 2007 г. 1) Выписать фрагмент программы (не более 7 команд) для безадресной (стековой) учебной машины, реализующий присваивание А:=А*А+В*В (А <-> 0200, В <-> 0204, 00 - запись в сумматор, 10 - чтение из сумматора, 01 - сложение, 03 - умножение). 2) Что будет напечатано в результате выполнения команд: mov ax, 342 mov BL, 2 div cbw outint 3) Вычеркнуть неверные команды ( X db ?, W dw ?): mov ax, x-w sub AX, DS mov 5[BX][SI], 5000 xchg bx, [bx] mov ax, 'X' mov AX, [BL] 4) В программе под сегмент стека отведено 600 байтов. Выписать фрагмент программы на Асcемблере, который копирует находящиеся сейчас в стеке положительные числа-слова (word) в область памяти, начинающуюся с абсолютного адреса 5EFDCh. Считать, что эта область не пересекается ни со стеком, ни с этим фрагментом. Можно менять значения всех регистров, кроме SS и SP. 5) Указать значения BL (в виде знакового десятичного числа), флагов CF, OF и SF после выполнения команд: mov BL, 160 sub BL, -56 6) Описать на Ассемблере близкую процедуру, заголовок которой на Паскале имеет вид procedure AddNum( var X:integer; c:integer ); Процедура реализует присваивание x:=x+c. Параметры передаются через стек. Процедура должна выполнять стандартные соглашения о cвязях. Привести пример вызова этой процедуры для выполнения присваивания cnt:=cnt+one (cnt имеет тип word, one описано через директиву equ). 7) Привести макроопределение с заголовком JzeroL macro v, L (v - список переменных , L - метка). Если значения всех переменных-байтов из списка положительны (как знаковые числа) или таких переменных в списке нет, надо перейти на метку L. Выписать макрорасширение для макрокоманды JzeroL , Con (a - байт, y, z - слова, w - двойное слово). 8) Программа на Ассемблере состоит из двух модулей. В кодовом сегменте головного модуля описана общедоступная (public) переменная y типа byte (со знаком). Выписать второй модуль, который должен содержать процедуру с именем PechAbsY, при вызове которой напечатается абсолютное значение y. 9) В программе на Ассемблере есть предложения: data segment и mov ax, data. Какая служебная программа подставляет конкретное значение на место операнда data в команде mov ax, data ? 10) Дать определения следующих понятий для УМ-3: а) регистр б) регистр адреса (счётчик адреса) в) регистр команды