Мнемоника команд передачи управления
Команда MOV имеет следующий формат в мнемонике ассемблера: MOV dest,src, где dest – первый операнд, который может иметь любой режим адресации, кроме непосредственной; src – второй операнд, который может иметь любой режим адресации, если первый операнд имеет регистровую адресацию, или иметь регистровую или непосредственную адресацию, если первый операнд адресует данные в памяти. Кроме этого в качестве dest и src могут быть использованы любые сегментные регистры, кроме CS. В этом случае, если один из операндов является сегментным регистром, то второй должен иметь либо регистровую адресацию, либо адресовать данные в памяти (кроме непосредственной адресации). Эта команда пересылает значение второго операнда в первый операнд. При этом содержимое регистра флагов не изменяется.
Команда MOV имеет следующие форматы машинных кодов: 1) пересылка аккумулятора (AX или AL) в память или памяти в аккумулятор при прямой адресации памяти
2) пересылка из регистра в регистр или память или наоборот
3) пересылка непосредственных данных в память
4) пересылка непосредственных данных в регистр
5) пересылка сегментного регистра в регистр или память или наоборот
Примеры использования команды MOV:
Команда PUSH имеет следующий формат в мнемонике ассемблера: PUSH scr, где операнд scr может иметь любой режим адресации, кроме непосредственной, или быть сегментным регистром. Эта команда уменьшает содержимое регистра SP на 2 и затем пересылает слово, адресуемое своим операндом в элемент стека, находящийся по адресу SS:SP. При этом содержимое регистра флагов не изменяется. Важно заметить, что команда PUSH всегда помещает в стек 16-разрядные данные, т.е. при регистровой адресации ее операнда должны быть использованы только 16-разрядные регистры.
Команда PUSH имеет следующие форматы машинных кодов: 1) сохранение в стеке содержимого регистра
2) сохранение в стеке содержимого ячейки памяти
3) сохранение в стеке содержимого сегментного регистра
Примеры использования команды PUSH:
Команда POP имеет следующий формат в мнемонике ассемблера: POP dest, где операнд dest может иметь любой режим адресации, кроме непосредственной, или быть сегментным регистром. Эта команда пересылает слово, находящееся по адресу SS:SP, в операнд dest, а затем увеличивает содержимое регистра SP на 2. При этом содержимое регистра флагов не изменяется. Важно заметить, что команда POP всегда извлекает из стека 16-разрядные данные, т.е. при регистровой адресации ее операнда должны быть использованы только 16-разрядные регистры. Команда POP имеет следующие форматы машинных кодов: 1) извлечение из стека в регистр
2) извлечение из стека в ячейку памяти
3) извлечение из стека в сегментный регистр
Примеры использования команды POP:
Команда XCHG имеет следующий формат в мнемонике ассемблера: XCHG dest,src, где dest – первый операнд, который может иметь любой режим адресации, кроме непосредственной; src – второй операнд, который может иметь любой режим адресации, кроме непосредственной, если первый операнд имеет регистровую адресацию, и регистровую адресацию, если первый операнд адресует ячейку памяти. Эта команда обменивает значения своих операндов. При этом содержимое регистра флагов не изменяется. Команда XCHG имеет следующие форматы машинных кодов: 1) обмен содержимого регистра с аккумулятором (AX)
2) обмен содержимого регистра и регистра или памяти
Примеры использования команды XCHG:
Команда XLAT имеет в мнемонике ассемблера следующий формат: XLAT Эта команда не имеет операндов и использует содержимое регистра AL как смещение байта в 256-байтовой таблице, адресуемой DS:BX. Указанный байт замещает собой содержимое AL. Другими словами, выполнение команды XLAT заключается в помещении в регистр AL содержимого байта, находящегося в сегменте данных со смещением равным сумме содержимого регистров BX и AL. При этом содержимое регистра флагов не изменяется. Команда XLAT имеет следующий формат машинного кода: Пример использования команды XLAT:
Команда IN имеет следующий формат в мнемонике ассемблера: IN acc,port, где acc – аккумулятор (AX или AL); port – непосредственный операнд или DX. Эта команда передает байт или слово данных в аккумулятор из порта ввода. Порт указывается или непосредственным операндом со значением от 0 до 255, либо значением в регистре DX. При этом содержимое регистра флагов не изменяется. Команда IN имеет следующие форматы машинных кодов: 1) чтение непосредственно заданного порта
2) чтение из порта заданного в DX
При значении w = 0 данные из порта port помещаются в AL, а при w = 1 данные из порта port помещаются в AL, а из порта port + 1 – в AH. Примеры использования команды IN:
Команда OUT имеет следующий формат в мнемонике ассемблера: OUT port,acc, где acc – аккумулятор (AX или AL); port – непосредственный операнд или DX. Эта команда передает содержимое аккумулятора в порт вывода. Порт указывается или непосредственным операндом со значением от 0 до 255, либо значением в регистре DX. При этом содержимое регистра флагов не изменяется.
Команда OUT имеет следующие форматы машинных кодов: 1) запись в непосредственно заданный порт
2) запись в порт заданный в DX
При значении w = 0 данные из AL выводятся в порт port, а при w = 1 данные из AL выводятся в порт port, а из AH – в порт port + 1. Примеры использования команды OUT:
Команда LEA имеет следующий формат в мнемонике ассемблера: LEA dest,src, где dest – первый операнд, имеющий регистровую адресацию; scr – второй операнд, имеющий любой режим адресации, кроме регистровой и непосредственной. Эта команда пересылает смещение адреса ее второго операнда в регистр, являющийся первым операндом. При этом значение регистра флагов не изменяется. Команда LEA имеет следующий формат машинного кода:
Примеры использования команды LEA:
Команда LDS имеет следующий формат в мнемонике ассемблера: LDS dest,src, где dest – первый операнд, имеющий регистровую адресацию; scr – второй операнд, имеющий любой режим адресации, кроме регистровой и непосредственной. Эта команда пересылает содержимое ячеек памяти, заданных своим вторым операндом, в пару регистров. Пересылаемые данные интерпретируются как дальний указатель памяти (полный адрес), составленный из сегмента и смещения. Cегментная составляющая адреса помещается в DS, а смещение – в регистр, заданный первым операндом. При этом значение регистра флагов не изменяется. Команда LDS имеет следующий формат машинного кода:
Примеры использования команды LDS:
Команда LES имеет следующий формат в мнемонике ассемблера: LES dest,src, где dest – первый операнд, имеющий регистровую адресацию; scr – второй операнд, имеющий любой режим адресации, кроме регистровой и непосредственной. Эта команда пересылает указатель (32-разрядный адрес, составленный из сегментной части и смещения), хранящийся в памяти и заданный своим вторым операндом в пару регистров: сегментная часть помещается в ES, а смещение – в регистр, заданный первым операндом. При этом значение регистра флагов не изменяется.
Команда LES имеет следующий формат машинного кода:
Примеры использования команды LES:
Команда LAHF не имеет операндов и помещает в регистр AH значения флагов SF, ZF, AF, PF и CF. При этом содержимое регистра флагов не изменяется. Эта команда имеет следующий формат машинного кода: Значения флагов помещаются в регистр AH в формате: (SF):(ZF): X :(AF): X :(PF): X :(CF), где X – обозначает неопределенный бит. Команда SAHF не имеет операндов и загружает определенные биты из регистра AH в регистр флагов. Эта команда имеет следующий формат машинного кода: Содержимое регистра AH рассматривается в формате: (SF):(ZF): X :(AF): X :(PF): X :(CF), где X – обозначает неопределенный бит. При выполнении команды SAHF изменяются значения флагов SF, ZF, AF, PF и CF. Команда PUSHF не имеет операндов и подобно команде PUSH сохраняет в стеке содержимое регистра флагов. При этом само содержимое этого регистра не изменяется. Данная команда имеет следующий формат машинного кода: Команда POPF не имеет операндов и подобно команде POP извлекает из стека данные и помещает их в регистр флагов. При этом, естественно, все флаги изменяются. Данная команда имеет следующий формат машинного кода: СОДЕРЖАНИЕ РАБОТЫ 1. Ознакомиться с теоретическим материалом. 2. С помощью программы debug исследовать выполнение всех команд пересылки с любым возможным типом их операндов. 3. В соответствии со своим вариантом решить поставленные задачи и с помощью DEBUG установить правильность их решения.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|