Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №5(full).docx
Скачиваний:
8
Добавлен:
07.08.2019
Размер:
169.54 Кб
Скачать

Ответы на вопросы по каждой команде программы lab1 (а-н);

Ответить на все приведенные ниже вопросы по каждой команде программы LAB1:

а) PUSH DS ... PUSH AX:

Для чего необходимо DS и АХ запомнить в стеке?

Для того, чтобы запомнить адрес возврата (обращение по этому адресу происходит после окончания выполнения процедуры.

Б) MOV AX, DSEG и MOV DS, AX ;

Укажите назначение этих команд.

Эти команды выполняют загрузку через регистр AX указателя сегмента данных DSEG

в регистр DS.

в) MOV ВХ, OFFSET SOURSE :

Какое значение находится в регистре BX? Зачем это значение запоминается в регистре?

В регистре BX находится адрес смещения переменной SOURCE, чтобы по этому адресу [bx]

извлекать данные побайтно из переменной SOURCE.

г) MOV DI, OFFSET DEST :

Kакoe значение содержит регистр DI? КАК используется этот регистр в

программе?

В регистре DI находится адрес смещения переменной DEST.

Этот регистр используется в качестве адресной ссылки [di] для сохранения результата

в переменной DEST.

д) MOV AL,[BX] и СМР AL, 0FH :

Почему изменился флажок знака (S)? Вычислите физический адрес команды MOV AL,[BX] и физический адрес операнда,находящегося в памяти.

Регистр al получает значение 01.

Команда cmp для сравнения выполняет вычитает из al значение 0f, получает при этом

результат < 0, меняется флаг S на 1.

е) Почему после выполнения команды JB А выполняется команда ADD AL,0F?

Результат сравнения предыдущей команды cmp дал результат: текущий байт < 0f, а команда

JB A передает управление команде с меткой a: add al,оfh в случае выполнения этого условия.

ж) MOV [DI],AL :

Вычислите физический адрес этой команды и физический адрес первого операнда. По какому адресу и как меняется содержимое сегмента данных ?

Физический адрес команды 0021.

Физический адрес первого операнда - меняется для каждого цикла.

Содержимое сегмента данных меняется по адресу [dx].

з) Почему в 1-м цикле программы после выполнения команды LOOP AGAIN выполняется команда MOV AL,[BX]?

LOOP - это команда организации цикла, каждая итерация цикла выполняется с начала цикла,

т.е. с команды, следующей за меткой again.

и) Почему во 2-м цикле программы выполняется команда SUB AL,0FH вместо команды ADD AL, 0FH ?

Результат сравнения предыдущей команды cmp дал результат: текущий байт > 0f, а это условие не принято ни одной из команд: je e , jb a, поэтому управление не передалось

какой-либо команде с меткой, и выполняется команда, следующая за командами je и jb.

к) По какому адресу и что содержит сегмент данных (DS:0000) в конце выполнения 2-го цикла программы ?

л) Как меняется значение флага нуля (Z) в 3-м цикле программы и какое число записывается в таблицу DEST ?

Значение флага Z в 3-м цикле программы (при значении регистра-счетчика 0002)

меняется с 0 на 1.

В таблицу dest записывается значение 0F.

м) Какие действия производятся в 4-м цикле программы ?

Регистр cx (счетчик) получает значение 0001.

Регистр al получает значение 08.

Выполняется команда сравнения cmp: значение регистра al сравнивается с 0f.

После выполнения команды флаги меняют значения на: c=1, s=1, p=1, a=1.

Команда je e отработана без передачи управления.

Команда jb a передала управление на метку а: .

Выполнена команда add al,0f

Регистр al получает значение 17.

Записан результат в dest.

Регистр bx получил значение 0004.

Регистр dx получил значение 0008.

Управление передано команде ret.

н) Какие значения содержатся в таблице DEST после выполнения программы? Значением какого регистра определяется количество циклов программы?

После выполнения программы в таблице DEST содержатся следующие значения:

10, A0, 0F, 17

Количество итераций цикла определяется значением регистра CX.

Контрольные вопросы:

1. Назовите стандартное применение регистров общего назначения: АХ,ВХ,СХ и DХ.

Регистр АХ используется в качестве аккумулятора т.е. регистра, в котором находится один из операндов и в который помещается результат операции;

Регистр ВХ – как базовый регистр, используется при косвенной адресации;

Регистр СХ – как счетчик количества сдвинутых бит в командах сдвига, счетчик числа повторов в командах управления вычислительными циклами и в операциях с цепочками байт;

Регистр DX неявно адресуется в командах умножения и деления, а в некоторых операциях ввода-вывода хранит адрес порта ввода-вывода.

2. Укажите пары регистров , которые однозначно определяют адрес байта во всем адресном пространстве МП I8086.

BH BL, AH AL, DH DL

3. Какие флаги содержит регистр флагов ?

8 флагов состояния, 1 флаг управления, 5 системных флагов

4. Сколько байтов памяти зарезервирует следующая последовательность операторов: varl DB ? /// var2 DW 4 dup(?), 20 /// var3 DB 10 dup(?).

varl DB ? - 1 байт

var2 DW 4 dup(?), 20 - слово (2 байта) из 4-х повторений : 2*4 = 8 байт (значение 20 после запятой - это, по-моему, для инициализации переменной)

var3 DB 10 dup(?) - 10 байт, всего 19 байт

5. Чем различаются следующие операторы: k EOU 1024 и k = 1024.

оператор k EOU 1024 определяет константу с именем k и значением 1024, после определения константы её значение не может меняться, а оператор k = 1024 присваивает

переменной с именем k значение 1024, значение переменной может меняться в программе.

6. Какая ошибка содержится в операторах const DB ? /// mov cоnst,256.

ошибка в команде mov cоnst,256

Для переменной const определен размер памяти в 1 байт,но байт не может принимать значение > чем 255

7. Какими псевдооператорами отмечают начало и конец каждой процедуры.

proc

endp

8. Чем отличается процедура с атрибутом NEAR от процедуры с атрибутом FAR.

Процедура с атрибутом near (ближняя) может вызываться только в том же сегменте, в котором она определена.

Процедура с атрибутом far (дальняя) может вызываться и вне сегмента, в котором она определена.

9. Почему процедура программы, которая исполняется в МП I8086 первой, должна иметь атрибут FAR.

Программа по имени её первой процедуры может вызываться из другого сегмента или из другой программы (напр. из ОС), поэтому она должна иметь атрибут far.

10. Опишите действия следующего оператора: ASSUME CS:CSEG.

Директива ASSUME определяет соответствие между сегментным регистром CS и именем сегмента CSEG.

11. Какой физический адрес генерирует МП I8086, если значение смещения 2 сочетается с содержимым регистра сегмента, равным 4000.

Исполнительный адрес ячейки = Адрес сегмента + Адрес смещения = 4000 + 2 = 4002

12. Если регистр AX содержит 1А2В, то что находится в регистрах АL и АН ?

В регистре AL находится 2B

В регистре AH находится 1A

13. С помощью какого регистра сегмента, в основном , осуществляется доcтуп к переменным рабочей программы.

DS

14. Найдите сумму и состояние флажков AF,SF,ZF,CF,OF,RF после прибавления 62A0 к следующим числам: a) 1234; б) 4321; в) СFA0; г) 9D60.

1234 + 62A0 = 74D4 - SF = 0, ZF = 0, OF = 1

4321 + 62A0 = A5C1 - SF = 0, ZF = 0, OF = 0

CFA0 + 62A0 = 13240 - SF = 0, ZF = 0, OF = 0

9D60 + 62A0 = 10000 - SF = 0, ZF = 0, OF = 1

15. Поясните , почему иногда необходим атрибутный оператор PTR.

Чтобы выбрать из памяти некоторый размер данных, указанный префиксом перед PTR,

напр. BYTE PTR 5 или WORD PTR 7.

16. Какое начальное значение переменной TEMP задает оператор TEMP DB ?.'

Пустой байт.

17. Каким способом можно зарезервировать память для строки символов.

Например, symb db 224 dup ('*') - зарезервировать для переменной symb строку размером 224 байта памяти.