Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Программы Обои   Экспорт RSS E-Books
 
 

   Программирование -> Assembler -> Основные команды языка ASSEMBLER


Основные команды языка ASSEMBLER



###  ASCII - фоpмат ######################################################

 ### В ASCII - формате каждый байт содержит одну десятичную цифру в младшей
 тетраде, старшая тетрада  содержит нули.  Максимальное значение  байтового
 числа pавно  9.  Многоpазрядные числа  представляются  последовательностью
 байт. Например:

    15------------------------------7-------------------------------0
    ¦ 0   0   0   0 ¦ 1   0   0   0 ¦ 0   0   0   0 ¦ 0   0   0   1 ¦
    +---------------------------------------------------------------+

     0000.1000.0000.0001 в двоичном формате равно десятичному числу 2049,
                         в ASCII - формате  равно десятичному числу 81

 ### С ASCII - числами можно производить любые арифметические  операции.

###  Команда AAA #########################################################

 ### Производит символьную коррекцию результата двоичного сложения байтовых
 ASCII - чисел, который содержится в аккумуляторе AL.
     Сложение  ASCII - чисел   производится  в  два  этапа:  сначала  байты
 суммируются  как обычные двоичные числа,  а затем осуществляется коррекция
 по следующим правилам:
     1) Если младшая тетрада AL меньше  или  равна  десятичному числу  9  и
        флажок AF = 0, то переход к шагу 3).
     2) Если младшая тетрада AL больше десятичного числа 9 и флажок  AF = 1,
        то к содержимому AL прибавляется число 6, к содержимому регистра AH
        прибавляется   единица,   а   флажок   AF   устанавливается   в   1.
     3) Сбрасывается  старшая  тетрада  аккумулятора  AL.
     4) Флажок  CF  устанавливается  в  то  же  состояние,  что и флажок AF.

 ### Флажки CF и AF устанавливаются в 1, если результат суммирования больше
 числа 9. Состояние остальных флажков не определено.

 ### Формат команды:
                                                       7                0
    +-------------------------+ l = 1 байт             +----------------+
    ¦ AAA                     ¦ t = 4 такта            ¦    00110111    ¦
    +-------------------------+                        +----------------+

 ### Примечание:
     Сложение  ASCII - чисел  с  повышенной  точностью  похоже  на двоичную
 арифметику  с  повышенной  точностью,  но  после  сложения  каждого  байта
 необходимо производить символьную коррекцию.

###  Команда AAS #########################################################

 ### Производит  символьную   коррекцию  результата   двоичного   вычитания
 байтовых  ASCII - чисел,  который  содержится  в  регистре  AL.
     Вычитание производится  в два этапа:  сначала осуществляется вычитание
 как  для  обычных  двоичных  чисел, а  затем  результат  корректируется по
 следующим правилам:
     1) Если младшая тетрада AL меньше  или  равна  десятичному числу  9  и
        флажок AF = 0, то переход к шагу 3).
     2) Если младшая тетрада AL больше десятичного числа 9 и флажок  AF = 1,
        то из содержимого AL вычитается число 6, из содержимого регистра AH
        вычитается единица, а флажок AF устанавливается в 1.
     3) Сбрасывается старшая тетрада аккумулятора AL.
     4) Флажок CF устанавливается в то же состояние, что и флажок AF.

 ### Флажки   AF  и  CF  устанавливаются  в  1,  если   вычитаемое   больше
 уменьшаемого  (AF и  CF  интерпретируются  как  флажки  заема).  Состояние
 остальных флажков не определено.

 ### Формат команды:
                                                       7                0
    +-------------------------+ l = 1 байт             +----------------+
    ¦ AAS                     ¦ t = 4 такта            ¦    00111111    ¦
    +-------------------------+                        +----------------+

 ### Примечание:
     Вычитание  ASCII - чисел  с повышенной  точностью  похоже  на двоичную
 арифметику  с повышенной точностью,  но после каждого  байтового вычитания
 необходимо производить символьную коррекцию.

###  Команда AAM #########################################################

 ### Производит символьную коррекцию результата умножения байтовых  ASCII -
 чисел, который содержится в регистре AL.
     Умножение    ASCII - чисел   производится   в   два   этапа:   сначала
 осуществляется умножение командой MUL, а затем результат корректируется по
 следующим правилам:
     1) Содержимое регистра AL делится на число 10.
     2) Частное загружается в регистр AH, а остаток - в регистр AL.

 ### Состояние  флажков  SF,  ZF,  PF  зависит от содержимого регистра  AL.
 Состояние флажков OF, AF, CF не определено.

 ### Формат команды:
                                                       7                0
    +-------------------------+ l = 2 байта            +----------------+
    ¦ AAM                     ¦ t = 83 такта           ¦    11010100    ¦
    +-------------------------+                        ¦----------------¦
                                                       ¦    00001010    ¦
                                                       +----------------+
 ### Примечание:
     Команду  AAM  можно  использовать  для деления  двоичного числа  на 10.
 Частное помещается в регистр AH, остаток - в регистр AL.

###  Команда AAD #########################################################

 ### Производит символьную коррекцию содержимого регистра  АХ  по следующим
 правилам:
     1) Содержимое  регистра  AH  умножается  на  число  10.
     2) Полученный  результат  прибавляется   к  содержимому   регистра  AL.
     3) Содержимое  регистра  AH  сбрасывается.
     Деление  ASCII - чисел производится в два этапа:  сначала двухбайтовое
 ASCII - делимое  преобразуется  в двоичное число  в регистре  AL,  а затем
 командой  DIV  содержимое регистра  AX  делится на байтовое  ASCII - число.
 После деления в регистре  AL  остается частное, а в регистре  AH - остаток.

 ### Состояние  флажков  SF,  ZF,  PF  зависит от содержимого  регистра  AL.
 Состояние флажков OF, AF, CF не определено.

 ### Формат команды:
                                                       7                0
    +-------------------------+ l = 2 байта            +----------------+
    ¦ AAD                     ¦ t = 60 тактов          ¦    11010101    ¦
    +-------------------------+                        ¦----------------¦
                                                       ¦    00001010    ¦
                                                       +----------------+
 ### Применение и особенности программирования:
      Если  делитель  равен  0,  генерируется  прерывание  типа 0.  Если в
 программе   нет  обработки   такого  прерывания,  необходимо  до  операции
 проверить  возможность  возникновения  деления  на  0.
      Может  оказаться,  что  частное  -  это  не  одна  десятичная  цифра
 (например,  когда  число  40  делится  на  2).  При  этом  переполнение не
 возникает,  поэтому  после  каждой  последовательности  команд   AAD - DIV
 необходимо  проверять,  не  превысило  ли  частное  числа  9,  и  вызывать
 соответствующую  обработку  переполнения.

[   ВЕРНУТЬСЯ К ОГЛАВЛЕНИЮ   ]

 

 
Интересное в сети
 
10 новых программ
CodeLobster PHP Edition 3.7.2
WinToFlash 0.7.0008
Free Video to Flash Converter 4.7.24
Total Commander v7.55
aTunes 2.0.1
Process Explorer v12.04
Backup42 v3.0
Predator 2.0.1
FastStone Image Viewer 4.1
Process Lasso 3.70.4
FastStone Image Viewer 4.0
Xion Audio Player 1.0.125
Notepad GNU v.2.2.8.7.7
K-Lite Codec Pack 5.3.0 Full


Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
Реклама на сайте. Размещая рекламу у нас, вы получите новых посетителей, которые могут стать вашими клиентами.
 
Это интересно
 

Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.