Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Топ:
Методика измерений сопротивления растеканию тока анодного заземления: Анодный заземлитель (анод) – проводник, погруженный в электролитическую среду (грунт, раствор электролита) и подключенный к положительному...
Техника безопасности при работе на пароконвектомате: К обслуживанию пароконвектомата допускаются лица, прошедшие технический минимум по эксплуатации оборудования...
Проблема типологии научных революций: Глобальные научные революции и типы научной рациональности...
Интересное:
Распространение рака на другие отдаленные от желудка органы: Характерных симптомов рака желудка не существует. Выраженные симптомы появляются, когда опухоль...
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
До этого момента примеры выполнялись последовательно команда за командой. Однако, программируемые задачи редко бывают так просты. Большинство программ содержат ряд циклов, в которых несколько команд повторяются до достижения определенного требования, и различные проверки, определяюшие какие из нескольких действий следует выполнять. Обычным требованием является проверка – должна ли программа завершить выполнение. Эти требования включают передачу управления по адресу команды, которая не находится непосредственно за выполняемой в текущий момент командой. Передача управления может осуществляться вперед для выполнения новой группы команд или назад для повторения уже выполненных команд. Некоторые команды могут передавать управление, изменяя нормальную последовательность шагов непосредственной модификацией значения смещения в командном указателе (регистре IP). Ниже приведены три способа передачи управления:
Безусловный переход: JMP
Цикл: LOOP
Условный переход: Jnnn (больше,меньше,равно)
Следует отметить что имеется три типа адресов: SHORT, NEAR и FAR. Адресация SHORT используется при циклах, условных пеpеходах и некоторых безусловных переходах. Адресация NEAR и FAR используется для вызовов процедур (CALL) и безусловных переходов, которые не квалифицируются, как SHORT. Все три типа передачи управления воздействуют на содержимое регистра IP; тип FAR также изменяет регистр сегмента кода CS.
Команда JMP. Одной из команд обычно используемых для передачи управления является команда JMP. Эта команда выполняет безусловный переход, т.е. обеспечивает передачу управления при любых обстоятельствах. В следующей процедуре используется команда JMP. В pегистры AX, BX, и CX загружается значение 1, и затем в цикле выполняются следующие операции:
прибавить 1 к регистру AX,
прибавить AX к BX,
удвоить значение в регистре CX.
Повторение цикла приводит к увеличению содержимого регистра AX: 1,2,3,4..., регистра BX: 1,3,6,10..., и регистра CX: 1,2,4,8... Начало цикла имеет метку, в данном случае, A20: - двоетичие oбозначает, что метка находится внутри процедуры в сегменте кода. В конце цикла находится команда
JMP a20
которая указывает на то, что управление должно быть передано команде c меткой a20. Следует обратить внимание, что адресная метка в операнде команды указывается без двоеточия. Данный цикл не имеет выхода и приводит к бесконечному выполнению - такие циклы обычно не используются.
main proc near
mov ax,01; Инициализация AX,
mov bx,01;BX,
mov cx,01; и CX
a 20: ;метка
add ax,01;Прибавить 1 к AX
add bx, ax;Прибавить 1 к BX
shl cx,1;Удвоить CX (сдвиг влево на 1;разряд)
jmp a 20;Переход на метку а20
main endp
Метку можно кодировать на одной строке с командой:
a 20: add ax,01
или на отдельной строке:
a 20:
add ax,01
В обоих случаях адрес a20 указывает на первый байт команды ADD. Отсутствие двоеточия в метке является частой ошибкой.
Команда LOOP. Команда JMP в предыдущем примере реализует бесконечный цикл. Но более вероятно подпрограмма должна выполнять определенное число циклов. Команда LOOP, которая служит для этой цели, использует начальное значение в регистре CX. В каждом цикле команда LOOP автоматически уменьшает содержимое регистра CX на 1. Пока значение в CX не равно нулю, управление передается по адресу, указанному в операнде, и если в CX будет 0, управление переходит на следующую после LOOP команду.
В следующем примере показана процедура, иллюстрирующая использование команды LOOP, она выполняет действия, аналогичные предыдущему примеру за исключением того, что после десяти циклов программа завершается. Команда MOV инициализирует регистр CX значением 10. Так как команда LOOP использует регистр CX, то в программе для удвоения начального значения 1 вместо регистра CX используется DX. Команда JMP A20 заменена командой LOOP и для эффективности команда ADD AX,01 заменена командой INC AX (увеличение AX на 1).
Аналогично команде JMP, операнд команды LOOP определяет адрес метки A20. Для команды LOOP расстояние до метки должно быть в пределах от -128 до +127 байт. Если операнд превышает эти границы, то ассемблер выдаст сообщение "Relative jump out of range " (превышены границы перехода).
begin proc near
mov ax,01; Инициализация AX,
mov bx,01;BX,
mov dx,01; и DX
mov cx,10; Число повторений цикла
a20:
inc ax ;Прибавить 1 к AX
add bx, ax;Прибавить AX к BX
shl dx,1;Удвоить DX путем сдвига влево;на 1 разряд
loop a 20;Уменьшить CX на 1 и повторить;цикл, если CX > 0
ret ;Выход из процедуры
begin endp
Команды условного перехода.
В предыдущих примерах было показано, что команда LOOP уменьшает на единицу содержимое регистра CX и проверяет его: если не ноль, то управление передается по адресу, указанному в операнде. Таким образом, передача управления зависит от конкретного состояния. Ассемблер поддерживает большое количество команд условного перехода, которые осуществляют передачу управления в зависимости от состояний флагового регистра (flags).
Команду LOOP в процедуре можно заменить на две команды: одна уменьшает содержимое регистра CX, а другая выполняет условный переход:
|
|
|
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!