Архитектура ЭВМ. Задания и примеры выполнения лабораторных работ. Докторов А.Е - 24 стр.

UptoLike

Рубрика: 

24
При использовании команд получения адреса (например, LEA) не
забывайте показать, как этот адрес используется (см. следующую за коман-
дой LEA строку). При этом покажите, какие числа пересылаются.
При рассмотрении команд LES и LDS обратите внимание на сущест-
венное отличие этих команд от команды LEA. Команда LEA определяет
адрес размещения самой переменной языка Паскаль, а команды LES и LDS
заносят в регистры содержимое переменной типа указатель. Чтобы не поте-
рять значение сегмента данных (DS), его содержимое сохраняется в стеке
(командой PUSH DS), а после выполнения команды LDS восстанавливается
из стека (командой POP DS):
var p : ^integer;
begin
getmem(p,2);
p^ := 7;
ASM
LES EBX, p
MOV CX, [EBX] // p^ = 7 => CX
PUSH DS
LES EBX, p
MOV CX, [EBX]
POP DS
END;
end.
При реализации в командах косвенно-регистрового режима адресации
со смещением и выполнении команды XLAT, используйте массивы данных
с обязательным указанием того, к какому элементу массива идет обращение.
Содержимое массивов должно быть подготовлено на языке Паскаль и указа-
но в комментарии, что там находится. Например:
var
M : array[0..15] of char;
C : char;
i : byte;
begin
// Заполнить массив M символами 16-ричных цифр от 0 до F
C := '0';
for i := 0 to 9 do begin M[i] := C; inc(C); end;
C := 'A';
for i := 10 to 15 do begin M[i] := C; inc(C); end;
// Извлечь из массива символ с номером 13 и поместить в переменную C
ASM
MOV AL, 13
LEA EBX, M // 0 1 2 3 4 5 6 7 8 9 A B C D E F
XLAT // выбирается элемент ---^
MOV C, AL // AL => C = 'D'
END;
end.