Лекция по программированию

Автор работы: Пользователь скрыл имя, 11 Января 2011 в 19:34, лекция

Краткое описание

Язык ассемблера - это один из самых старых из всех существующих языков программирования. Когда-то это был один из основных языков программирования, без знания которого нельзя было заставить компьютер сделать что-либо полезное. Появились более удобные средства общения с компьютером. Но в отличии от других языков ассемблер не умирал, более того он это не смог сделать в принципе.

Содержимое работы - 1 файл

LECTS.DOC

— 893.00 Кб (Скачать файл)

LODS -    загрузить из памяти один байт в регистр  AL  или  одно  слово  в регистр AX;

STOS -    записать содержимое регистра AL или AX в память;

CMPS -    сравнить содержимое двух областей памяти, размером  в  один байт или в одно слово;

SCAS -    сравнить содержимое регистра AL или AX с содержимым памяти.

Префикс REP позволяет этим командам обрабатывать строки любой длины.

СВОЙСТВА ОПЕРАЦИЙ НАД СТРОКАМИ

    Цепочечная команда  может   быть   закодирована   для   повторяющейся обpаботки  одного  байта  или  одного слова за одно выполнениеНапример, можно выбрать "байтовую" команду для обработки строки  с  нечетным  числом байт  или  "двухбайтовуюкоманду для обработки четного числа байтНиже перечислены регистрыучаствующие в цепочечных командах (для однобайтовых и  двухбайтовых  вариантов).  Предположимчто  регистры DI и SI содержат необходимые адреса:

 

               Команда   Операнды            Байт      Слово

 

               MOVS      DI,SI               MOVSB     MOVSW

               LODS      AL,SI или AX,SI     LODSB     LODSW

               STOS      DI,AL или DI,AX     STOSB     STOSW

               CMPS      SI,DI               CMPSB     CMPSW

               SCAS      DI,AL или DI,AX     SCASB     SCASW

 

     Например, можно кодировать операнды для команды MOVS, но опустить  их для MOVSB и MOVSW. Эти команды предполагают, что pегистры DI и SI содержат относительные адресауказывающие  на  необходимые  области  памяти  (для загрузки можно использовать команду  LEA).  Регистр  SI  обычно  связан  с регистром сегмента данных - DS:SI.  Регистр DI всегда связан  с  регистром дополнительного сегмента - ES:DI.  Следовательно, команды MOVS, STOS, CMPS и SCAS требуют инициализации регистра ES (обычно адресом в регистре DS).

REP: ПРЕФИКС ПОВТОРЕНИЯ ЦЕПОЧЕЧНОЙ КОМАНДЫ

    Несмотря на то, что цепочечные команды имеют отношение к одному байту или одному слову, префикс REP обеспечивает  повторение  команды  несколько разПрефикс  кодируется  непосредственно  перед  цепочечной    командой, например, REP MOVSB.  Для использования префикса REP необходимо установить начальное значение в регистре CX.  При  выполнении  цепочечной  команды  с префиксом REP происходит уменьшение на 1 значения в регистре CX  до  нуля. Таким образом, можно обрабатывать строки любой длины.

     Флаг направления определяет направление повторяющейся операции:

          - для направления слева направо необходимо с помощью команды CLD установить флаг DF в 0;

          - для направления справа налево необходимо с помощью команды STD установить флаг DF в 1.

     В следующем примере  выполняется  пересылка  20  байт  из  STRING1  в STRING2. Предположим, что оба регистра DS и  ES  инициализированы  адресом сегмента данных:

               STRING1   DB   20 DUP('*')

               STRING2   DB   20 DUP(' ')

                         ...

Информация о работе Лекция по программированию