
Ответы на контрольные вопросы
1. Назовите стандартное применение регистров общего назначения: АХ,ВХ,СХ и DХ.
АХ — умножение, деление, ввод и вывод слова;
ВХ — трансляция;
СХ — счетчик циклов и указатель длины строковых операций;
DX — умножение и деление слова, ввод и вывод с косвенной адресацией;
2. Укажите пары регистров, которые однозначно определяют адрес байта во всем адресном пространстве МП I8086.
Для данных – ds:bx, ds:si, ds:di.
Для команд – cs:ip.
Для стека – ss:bp, ss:sp.
3. Какие флаги содержит регистр флагов.
OF – флаг переполнение; устанавливается в единицу, если результат операции не помещается в операнде назначения.
ZF – флаг нулевого результата
AF – флаг дополнительного переноса, заема из старшего разряда
SF – флаг знака, равен единице, если старший бит результата равен единице
4. Сколько байтов памяти зарезервирует следующая последовательность операторов: varl DB ? /// var2 DW 4 dup(?), 20 /// var3 DB 10 dup(?).
Ассемблер зарезервирует 1 байт для переменной var1, 10 байтов (5 слов по 2 байта каждое) для переменной VAR2 и 10 байтов для переменной VAR3, всего – 21 байт.
5. Чем различаются следующие операторы: k EQU 1024 и k = 1024.
Оператор EQU не допускает последующего переопределения константы, а “=” – допускает.
6. Какая ошибка содержится в операторах const DB ? /// mov cоnst,256.
Ассемблер зарезервирует 1 байт для переменной const, а значение 256 превышает максимально допустимый размер для байтовой переменной – от 0 до 255.
7. Какими псевдооператорами отмечают начало и конец каждой процедуры.
Начало процедуры отмечают псевдооператором PROC, а конец – оператором ENDP.
8. Чем отличается процедура с атрибутом NEAR от процедуры с атрибутом FAR.
Процедуру с атрибутом NEAR можно вызывать только из сегмента, в котором она определена. А процедуру с атрибутом FAR можно вызывать из любого сегмента программы.
9. Почему процедура программы, которая исполняется в МП I8086 первой, должна иметь атрибут FAR.
Первая исполняемая МП I8086 должна иметь атрибут FAR, поскольку вызывающая ее программа (операционная система DOS или отладчик DEBUG) находится в другом сегменте.
10. Опишите действия следующего оператора: ASSUME CS:CSEG.
Оператор ASSUME указывает, что для адресации каждой метки из сегмента CSEG надо пользоваться регистром CS, т. е. идентифицирует CSEG как сегмент данных.
11. Какой физический адрес генерирует МП I8086, если значение смещения 2 сочетается с содержимым регистра сегмента, равным 4000.
Физический адрес 40000h + 0002h = 40002h.
12. Если регистр AX содержит 1А2В, то что находится в регистрах АL и АН.
Если ax содержит 1A2B:
AH = 1A
AL = 2B.
13. С. помощью какого регистра сегмента, в основном, осуществляется доcтуп к переменным рабочей программы.
Переменные хранятся в сегменте данных, поэтому для доступа к ним используют регистр ds.
14. Найдите сумму и состояние флажков AF,SF,ZF,CF,OF,RF после прибавления 62A0 к следующим числам: a) 1234; б) 4321; в) СFA0; г) 9D60. Ответом на вопрос являются данные таблицы 1.
Таблица 1- Ответ на вопрос 14
|
AF |
SF |
ZF |
CF |
OF |
PF |
|
62A0+1234 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
62A0+4321 |
0 |
1 |
0 |
0 |
1 |
0 |
2 |
62A0+CFA0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
62A0+9D60 |
0 |
0 |
1 |
1 |
0 |
1 |
3 |
15. Поясните, почему иногда необходим атрибутный оператор PTR.
Оператор переопределения типа PTR применяется для переопределения или уточнения типа метки или переменной.
16. Какое начальное значение переменной TEMP задает оператор TEMP DB ?.
Оператор TEMP DB ? не задает никакого начального значения переменной TEMP, а лишь резервирует для нее 1 байт памяти. В этой переменной будет записан какое-то произвольное значение.
17. Каким способом можно зарезервировать память для строки символов.
MSG DB ‘СТРОКА СИМВОЛОВ’.
Вывод
Научились анализировать ход выполнения программы на языке Ассемблера при помощи отладчика TurboDebugger.