Конспект лекций Системное программирование (семестр 2) Возле названия каждой лекции написано число пар, в течение которых она будет читаться (+ ср обозначает
Вид материала | Конспект |
Loope/loopz loopne/loopnz Схема команды Состояние флагов после выполнения команды См. также Состояние флагов после выполнения команды См. также Схема команды См. также |
- 8Б класс Химия Пар. 30 (№1-3), Пар. 31 (№1-5), рабочая тетрадь эти же темы Биология, 8.14kb.
- Рабочая программа учебной дисциплины (модуля) Системное программирование, 108.12kb.
- Смирнягин курс США население Лекция население США этой теме будут посвящены три лекции, 288.75kb.
- Инструкция подумайте о ситуациях, в которых Ваши желания отличаются от желаний другого, 98.01kb.
- Лекция 8 Системное программирование. Системное проектирование взаимодействия процессов., 225.21kb.
- Программа лекций Будущее начинается сегодня! После каждой лекции конкурс с розыгрышем, 75.64kb.
- Программа лекций Будущее начинается сегодня! После каждой лекции конкурс с розыгрышем, 73.71kb.
- Конспект лекций по курсу "Информатика и использование компьютерных технологий в образовании", 1797.24kb.
- Календарно-тематический план лекций по факультетской терапии 4 курс (8 семестр) специальность, 119.31kb.
- Программа вступительного экзамена по специальности 05. 13. 18 Математическое моделирование,, 115.33kb.
LOOPE/LOOPZ
LOOPNE/LOOPNZ
(LOOP control by register cx not equal 0 and ZF=1)
(LOOP control by register cx not equal 0 and ZF=0)
Управление циклом по cx c учетом значения флага ZF
Схема команды: | loope/loopz метка loopne/loopnz метка |
Назначение: организация цикла со счетчиком в регистре cx с учетом флага zf.
Синтаксис
Алгоритм работы:
- выполнить декремент содержимого регистра ecx/cx;
- проанализировать регистр ecx/cx:
- если ecx/cx=0, передать управление следующей за loopxx команде;
- если ecx/cx=1, передать управление команде, метка которой указана в качестве операнда loopxx;
- если ecx/cx=0, передать управление следующей за loopxx команде;
- анализ флага zf:
- если zf=0, для команд loope/loopz это означает выход из цикла, для команд loopne/loopnz — переход к началу цикла;
- если zf=1, для команд loope/loopz это означает переход к началу цикла, для команд loopne/loopnz — выход из цикла.
- если zf=0, для команд loope/loopz это означает выход из цикла, для команд loopne/loopnz — переход к началу цикла;
Состояние флагов после выполнения команды:
выполнение команды не влияет на флаги |
Применение:
Команды loopxx удобно использовать вместе с командами, которыe в результате своей работы меняют значение флага zf. Типичный пример — команда сравнения cmp.
;найти первый пробел в строке символов str db 'Найти первый пробел' str_size=$-str ... cld mov cx,str_size lea si,str cycl: lodsb cmp al,' ' loopne cycl jcxz m1 ;переход, если пробелов нет dec si ;в si — адрес пробела в строке str ... m1 |
См. также: уроки 8, 10, 11 и команду loop
MOV
(MOVe operand)
Пересылка операнда
Схема команды: | mov приемник,источник |
Назначение: пересылка данных между регистрами или регистрами и памятью.
Синтаксис
Алгоритм работы:
копирование второго операнда в первый операнд.
Состояние флагов после выполнения команды:
выполнение команды не влияет на флаги |
Применение:
Команда mov применяется для различного рода пересылок данных, при этом, несмотря на всю простоту этого действия, необходимо помнить о некоторых ограничениях и особенностях выполнения данной операции:
- направление пересылки в команде mov всегда справа налево, то есть из второго операнда в первый;
- значение второго операнда не изменяется;
- оба операнда не могут быть из памяти (при необходимости можно использовать цепочечную команду movs);
- лишь один из операндов может быть сегментным регистром;
- желательно использовать в качестве одного из операндов регистр al/ax/eax, так как в этом случае TASM генерирует более быструю форму команды mov.
mov al,5 mov bl,al mov bx,ds |
См. также: урок 10 и команды movs, lods/lodsb/lodsw/lodsd, stos/stosb,
stosw/stosd
MOV
(MOVe operand to/from system registers)
Пересылка операнда в системные регистры (или из них)
Схема команды: | mov приемник,источник |
Назначение: пересылка данных между регистрами или регистрами и памятью.
Синтаксис
Алгоритм работы:
копирование второго операнда в первый.
Состояние флагов после выполнения команды:
11 | 07 | 06 | 04 | 02 | 00 |
OF | SF | ZF | AF | PF | CF |
r | r | r | r | r | r |
Применение:
Команда mov применяется для обмена данными между системными регистрами. Это одна из немногих возможностей доступа к содержимому этих регистров. Данную команду можно использовать только на нулевом уровне привилегий либо в реальном режиме работы микропроцессора.
.286 ;переключение микропроцессора в защищенный режим36: mov eax,cr0 bts eax,0 mov cr0,eax |
См. также: уроки 16, 17 и команды mov, bts