adfun.ru
 
BIGLIB
  большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно
 
АСТРОЛОГИЯ
  книги по астрологии
 
КРИМИНАЛ
  книги про криминал
 
ДЕТЕКТИВЫ
  детективы известных
   писателей
 
ФАНТАСТИКА
  фентези, фантастика,   фантастические повести
 
ПРИКЛЮЧЕНИЯ
  книги про приключения,   путешествия
 
ПОЛИТИКА
  книги про политиков,   репрессии
 
ПСИХОЛОГИЯ
  разнообразная литература   по психологии
 
КЛАССИКА
  классическая литература
 
КОМПЬЮТЕРНАЯ
  ЛИТЕРАТУРА
  про компютерное железо,   документация, языки   программирования
 
РЕЛИГИЯ, АТЕИЗМ
  книги про религию
 
ФИЛОСОФИЯ
  книги, которые заставляют   задуматься над   окружающим тебя миром.
 
ЭНЦИКЛОПЕДИИ
  самые интересные   энциклопедии на
   разные темы
 
МЕДИЦИНА
  медицинские книги,   методички,
   народные лечебники
 
КУЛИНАРИЯ
  рецепты тортов,   консервирование,
  все о спиртных
  напитках.
 
СТИХИ
  стихи популярных и не   очень авторов
 
ТВОРЧЕСТВО
  народное творчество,   стихи, песни и т.д.
 
ЮМОР
  анекдоты, приколы,   смешные истории
 
ЛЮБОВНЫЙ РОМАН
  мир высоких чувств и   любовных грез
 
ЭРОТИКА
  эротические рассказы,   книги о технике секса,   кама-сутра и др.




adfun.ru
Rambler's Top100 Rambler's Top100
    НА ГЛАВНУЮ
    РЕФЕРАТЫ
    ТОСТЫ
    ТЕСТЫ
    АВТО
    ДЛЯ СТУДЕНТА
    КНИГИ
    КОНТАКТ
 
Справочник по системе программирования Турбо Ассемблер 2.0
Автор ""
Размер 416131 Байт
Страница 40 из 51
СКАЧАТЬ КНИГУ ЦЕЛИКОМ

бой 65534 (беззнаковое число) или -2 (число со знаком).

     Если это кажется непонятным,  прочитайте одну из книг, реко-
мендуемых  в  конце  данного руководства (или одну из книг по Ас-
семблеру,  изданных в СССР,  например книгу Бредли). Это позволит
вам больше узнать об арифметике с дополнением до двух - средстве,
с помощью которого процессор 8086 обрабатывает числа со знаком. К
сожалению, мы не располагаем здесь местом, чтобы подробно расска-
зать об арифметике значений со знаком,  хотя для программиста это
представляет собой одну из важных тем, которую нужно хорошо пони-
мать. Пока же запомните, что инструкции ADD, SUB, ADC и SBB рабо-
тают  одинаково  хорошо  как с беззнаковыми значениями,  так и со
значениями со знаком,  поэтому для таких  операций  не  требуется
специальных инструкций сложения или сочетания.  Знак имеет значе-
ние в операциях умножения или деления (как вы увидите  далее),  а
также при преобразовании размеров данных.




TASM2 #1-5/Док              = 204 =

                    Преобразование размеров данных
-----------------------------------------------------------------

     Иногда бывает необходимо преобразовать слова в байты или на-
оборот.  При этом,  как и в других действиях, значения могут быть
со знаком или без знака.

     Давайте сначала рассмотрим преобразование слова в  байт. Это
довольно просто: нужно только избавиться от старшего байта слова.
Например:

        .
        .
        .
        mov     ax,5
        mov     bl,al
        .
        .
        .

     Здесь значение 5 размером в слово в регистре AX преобразует-
ся в байтовое значение 5 в регистре BL.  Конечно,  вы должны быть
уверены,  что преобразуемое вами значение поместится в байте. По-
пытка преобразовать в байт значение 100h с помощью инструкций:

        .
        .
        .
        mov     dx,100h
        mov     al,dl
        .
        .
        .

была бы  безуспешной,  так как в регистр AL был бы записан только
младший (нулевой) байт.

     Преобразование беззнакового байтового значения в слово  зак-
лючается просто в обнулении старшего байта слова.  Например, инс-
трукции:

        .
        .
        .
        mov     cl,12
        mov     al,cl
        mov     ah,0
        .
        .
        .

преобразуют беззнаковое значение 12 в регистре CL в  значение  12
размером в слово в регистре AX.

     Преобразование в слово байтового значения со знаком несколь-
ко более сложно,  поэтому в процессоре 8086 для  выполнения  этой
задачи  предусмотрена специальная инструкция CBW.  Инструкция CBW
преобразует байтовое значение со знаком в регистре AL  в значение
со  знаком размером в слово в регистре AX.  В следующем фрагменте
программы байтовое значение со знаком -1 в регистре DH преобразу-
ется в значение со знаком размером в слово в регистре DX (-1):

        .
        .
        .
        mov   dh,-1
        mov   al,dh
        cbw
        mov   dx,ax
        .
        .
        .

     В наборе инструкций процессора 8086 для преобразования слова
со знаком в регистре AX в двойное слово со знаком в регистрах DX:





AX (старшее слово содержится в регистре AX) предусмотрена специ- альная инструкция CWD. Следующие инструкции преобразуют значение со знаком +10000 (размером в слово), содержащееся в регистре AX, в значение со знаком +10000 (размером в двойное слово), содержа- щееся в паре регистров DX:AX: . . . mov ax,10000 cwd . . . Беззнаковые значения размером в слово можно преобразовать в беззнаковые значения размером в двойное слово путем обнуления старшего слова значения. Доступ к сегментным регистрам ----------------------------------------------------------------- Хотя для перемещения значений в сегментные регистры и из них можно использовать инструкцию MOV, это особый случай, более огра- ниченный, чем другие случаи использования инструкции MOV. Если одним из операндов инструкции MOV является сегментный регистр, то другим операндом должен быть регистр общего назначения или ячейка памяти. Загрузить константу в сегментный регистр непосредственно невозможно, и невозможно непосредственно скопировать один сегмен- тный регистр в другой сегментный регистр. Так как имена сегментов являются константами, необходимо загружать сегментные регистры таким же образом, как общие регист- ры или переменную в памяти. Вот, например, два способа установки регистра ES в значение сегмента .DATA: . . . .DATA DataSeg DW @Data . . . .CODE . . . mov ax,@Data mov es,ax . . . mov ex,[DataSeg] . . . Вместо этого хотелось бы сделать следующее: mov es,@Data ; недопустимо! но это работать не будет. Чтобы скопировать содержимое одного сегментного регистра в другой сегментный регистр, вам придется передать значение через регистр общего назначения или память. Инструкции: . . . mov ax,cs mov ds,ax . . . и . . . push cs pop ds . . . копируют содержимое регистра CS в DS. Первый метод работает быст- рее, но при втором методе требуется меньший объем кода. Не удивляйтесь, при работе с инструкцией MOV вы сталкивае- тесь с ограничениями, когда дело касается сегментных регистров, ведь в большинстве инструкций сегментные регистры вовсе не допус- кается использовать в качестве операндов. Сегментные регистры можно заносить в стек и извлекать из стека, но этим дело и огра- ничивается. В операциях сложения, вычитания, логических операциях или сравнениях их использовать нельзя.


Страницы : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 [40] 41 42 43 44 45 46 47 48 49 50 51


adfun.ru









Форум раскрутка сайта и интернет-реклама
реклама - рекламное агентство -
Интернет PR агентство чат и форум
волчат знакомства - сайт знакомств
бесплатные компьютерные игры
фото знакомства
новые стеклопакеты -
качественное остекление балконов
портал - пластиковые окна -
закажите окна пвх в Москве

частная стоматология в Москве:
надежная стоматологическая клиника
протезирование зубов и
отбеливание зубов в стоматологии
Музыка - скачать mp3 музыка
каталог партнерские программы
ручной бесплатный обмен ссылками цифровые камеры цифровые фотоаппараты -
цифровые видеокамеры

театры - заказ билетов в театр -
магазин - продажа компьютеров
в Москве форум Испания - жилье -
недвижимость в испании

турфирма - испания туры
Переводы - бюро переводов
Законы - закон о товарных знаках,
Грузовые перевозки. АсМАП. Дальнобой закон о рекламе
Интернет казино
реклама на форуме и контекстная реклама
на Яндексе Баннерная сеть и
интернет каталог сайтов Holiday.Ru
Форумы политика, лучшие анекдоты
знакомства.