ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.11.2023
Просмотров: 26
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Лабораторное задание 1
Тема : Изучение команд пересылки данных
Вариант 6
Задание 1
Содержимое регистра флагов поместите в переменную x:integer
Program hh; //23.pas
// Лабораторное задание 1
// изучение команд пересылки
{ $ ASMMODE Intel} // подключение ассемблера
var x:integer;// целочисленная переменная х
begin
asm // указано ключевое слово определяющее блок команд ассемблера
xor bx,bx // обнуляем значение регистра bx
xor ax,ax // обнуляем значение регистра ax
mov al,2// ax=0002
mov bl,1// bx=0001
add al,bl//ax=0003
pushf // al=0002
pop x //извлечь из стека в переменную х
end;
writeln (‘x=’,x);
end.
P=1 флаг четности, он устанавливается если младший байт результата имеет четное число ненулевых разрядов. ( в данном случае 2 )
В данном случае p=1.
Пример операции сложения двух чисел
Сложение двух чисел 01111111(127)
00000001
10000000 (-128)
7 разрядов переполнились и был задействован знаковый разряд
Sf (знака)- s=1, когда старший бит результата равен 1. Иными словами S=0 для положительных чисел, и S=1 для отрицательных чисел.
Команды пересылки данных
Команды пересылки данных осуществляют обмен данными или адресами между регистрами МП и ячейками памяти или портами ввода/вывода. Их можно разделить на следующие подгруппы:
1) команды пересылки общего назначения;
2) команды загрузки адресных значений;
3) команды обращения к стеку;
4) команды пересылки флагов;
5) команды ввода/вывода.
Команды пересылки общего назначения
К этой подгруппе относятся команды MOV, XCHG и XLAT.
Команда MOV является основной командой пересылки общего назначения. Она имеет следующий формат:
MOV приемник, источник
и осуществляет пересылку байта или слова данных из источника в приемник. В качестве приемника и источника данных могут использоваться регистры МП или ячейки памяти. Кроме того, источник может быть и непосредственным значением.
В команде MOV допустимо большинство из возможных сочетаний операндов.
Пример 3.43:
MOV AX, Table ; Пересылка из памяти в регистр
MOV Table, AX ; и наоборот
MOV ES:[BX],DX ; Пересылка из регистра в память
MOV DS,AX ; Пересылка между 16-битными
MOV BL,AL ; или 8-битными регистрами
MOV CL,30 ; Пересылка константы в регистр
MOV [BX+SI],25h ; или в память
Некоторые из сочетаний операндов в команде MOV недопустимы.
1. Нельзя переслать данные из одной ячейки памяти в другую. При необходимости они пересылаются через промежуточный регистр.
Пример 3.44:
MOV Alpha,[BX] ; Ошибка - обращение типа
; "память" - "память"
MOV AX,[BX] ; Пересылка данных из ячейки,
MOV Alpha,AX ; адресуемой BX, в ячейку Alpha
2. Нельзя загрузить непосредственный операнд в сегментный регистр. При необходимости эта загрузка осуществляется через промежуточный регистр.
Пример 3.45:
MOV DS,0ABCDh ; Ошибка - загрузка константы
; в регистр DS
MOV AX,0ABCDh ; Загрузка константы
MOV DS,AX ; в регистр DS
3. Нельзя переслать данные между сегментными регистрами. При необходимости такая пересылка осуществляется через промежуточный регистр.
Пример 3.46:
MOV ES,DS ; Ошибка - пересылка между
; сегментными регистрами
MOV AX,ES ; Пересылка между сегментными
MOV DS,AX ; регистрами (из ES в DS)
4. В качестве приемника данных не может использоваться регистр CS, так как его изменение эквивалентно передаче управления, что не является пересылкой данных.
Команда обмена XCHG имеет формат:
Xchg приемник, источник
и осуществляет обмен байтами или словами данных между источником и приемником. В качестве источника и приемника данных могут использоваться регистры МП, либо регистр и ячейка памяти.