1. Дать определения понятий: а) Абсолютный адрес б) Неявный операнд в) Близкий переход 2. В ЭВМ типа УМ-2 используется расслоение памяти на 16 банков, причём ячейка с номером A попадает в банк с номером (A mod 16). Также используется конвейер из 6 этапов: 1) Чтение команды 2)Дешифровка команды 3) Чтение первого операнда 4) Чтение второго операнда 5) Выполнение команды 6) Запись результата (на место первого операнда). Считая, что каждый этап работы конвейера занимает 1 единицу времени и в первоначальный момент времени крнвейер пуст, вяснить, сколько времени займёт выполнение следующих команд (слева - адреса команд, 01 - код сложения, все числа - шеснадцатиричные): 0000: 01 5411 8073 0001: 01 0148 5411 0002: 01 6691 8073 3. Определить значения флагов SF, CF, OF после выполнения следующих команд: mov AL, -56 add AL, 160 4. T db 256 dup (?) Пусть T - символьная строка переменной длины (длина указана в первом байте и, соответственно, не привышает 255 символов). Выпишите комады (не более 6), которые выполняют следующую задачу: если строка непустая, то записать на место последнего символа букву 'Т' (можно использовать любые регистры). 5. Пусть под сегмент стека в программе отведено 501h байт. Выписать команды (не более 11), которые решают следующую задачу: скопировать всё текущее содержимое стека (непустого) в область памяти, начинающуюся с адреса 31A80h (считать что эта область не пересекается ни с сегментом стека, ни с сегментом команд; можно использовать любые регистры, но нельзя менять SP). mov cx,501h mov ax,31a8h mov es,ax mov di,0 mov si,0 push ss pop ds rep movsb push ds pop ss 6. Выписать макрос JDIF LN, M (здесь LN - это - последовательность чисел, заданных непосредственно; n>0; M - метка), который осуществляет переход на метку M, если AX отлично от всех отрицательных чисел последовательности или если отрицательных чисел в этой последовательности нет (никакие регистры, кроме AX, использовать нельзя). JDIF macro LN,M local a irp p, if p lt 0 cmp ax,p je a endif jmp M endm a: endm 7. Вычеркните команды, записанные с ошибкой: div 5 lea BX, [BX] mov ES, DS ;this one I forgot add 800[SI], 15 sub 15[SI], 800 test 11b, CL 8. В программе на Турбо Паскале процедура ... {$F+} procedure P(var С:char); external; ... описана как внешняя. Написать на ассемблерный модуль, в котором была бы описана процедура P, заменяющая символ С на символ chr((ord(С)+1)mod 256) (замечание: в языке Турбо Паскаль ссылки процедуре всегда передаются в виде seg:offs, причём seg записывается в стек первым). 9. Ответьте на следующие вопросы: а) Что такое внешние имена и чем они отличаются от других имён модуля? б) Как ассемблер узнаёт, что какое-то имя является внешним? 10. Пусть даны следующий загрузочный модуль и его загаловок (слева указаны относительные адреса команд; все числа - шеснадцатиричные): (0) XX XX XX XX (4) B8 00 00 8E (8) XX XX XX XX (A) XX XX XX XX Длина программы 17 Точка входа 0:3 Начало и длина сегмента стека: 10 и 7 Таблица перемещаемых адресов: сегмент адрес вхождения 10 0:5 Пусть загрузчик выделил для программы область памяти, начинающуюся с адреса 27000h. Указать, какие изменения загрузчик внесёт в программу и какие значения он присвоит регистрам SS, SP, CS и IP.