Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11639
Последний выпуск: 19.06.2015

СПРАВОЧНИК по системе программирования ТУРБО АССЕМБЛЕР 2.0


Оглавление

                                Память
-----------------------------------------------------------------

     Процессор 8086 может адресоваться к памяти объемом  1  мега-
байт  (это два в двадцатой степени или 1048576 ячеек памяти, каж-
дая размером 8 бит).  Первый байт памяти имеет адрес 0, а послед-
ний - адрес 0FFFFFh (см. Рис. 4.2).

     Адрес 0FFFFFh  -  это  шестнадцатиричная форма (по основанию
16) записи,  о чем говорит суффикс h. В десятичном виде (по осно-
ванию 10) это эквивалентно значению 1048575. Использование записи
в шестнадцатиричном виде - существенная черта программирования на
Ассемблере.  Шестнадцатиричной  записи мы коснемся в Главе 5 "Ос-
новные элементы программы на Ассемблере".

   Шестнадцатиричный    ----------------------  Десятичный адрес
   адрес         00000  |                    | 0
                 00001  |                    | 1
                 00002  |                    | 2
                 00003  |                    | 3
                 00004  |                    | 4
                 00005  |                    | 5
                 00006  |                    | 6
                 00007  |                    | 7
                 00008  |                    | 8
                 00009  |                    | 9
                 0000A  |                    | 10
                 0000B  |                    | 11
                 0000C  |                    | 12
                 0000D  |                    | 13
                 0000E  |                    | 14
                 0000F  |                    | 15
                 00010  |                    | 16
                        |--------------------|
                        .                    .
                        .                    .
                        .                    .
                 FFFEF  |                    | 1048559
                 FFFF0  |                    | 1048560
                 FFFF1  |                    | 1048561
                 FFFF2  |                    | 1048562
                 FFFF3  |                    | 1048563
                 FFFF4  |                    | 1048564
                 FFFF5  |                    | 1048565
                 FFFF6  |                    | 1048566
                 FFFF7  |                    | 1048567
                 FFFF8  |                    | 1048567
                 FFFF9  |                    | 1048569
                 FFFFA  |                    | 1048570
                 FFFFB  |                    | 1048571
                 FFFFC  |                    | 1048572
                 FFFFD  |                    | 1048573
                 FFFFE  |                    | 1048574
                 FFFFF  |                    | 1048575
                        ----------------------

     Рис. 4.2 Пространство адресов памяти процессора 8086.

     Один байт  размером  8 бит может содержать один символ,  или
одно целое значение в диапазоне от 0 до 255. Это не означает, что
процессор 8086 не может работать с большими значениями. Два байта
(которые называются словом) могут одно целое значение в диапазоне
от 0 до 65535. Процессор 8086 может работать как с байтами, так и
со словами.

     Четыре вместе взятых байта (которые называются двойным  сло-
вом)   могут  содержать  целое  значение  в  диапазоне  от  0  до
4294967295 или одно значение с плавающей точкой (плавающей  запя-
той) с одинарной точностью. Четыре вместе взятых байта (четверное
слово) могут содержать одно значение с плавающей  точкой  двойной
точности. Процессор  8086  не обрабатывает эти два последние типа
данных непосредственно,  однако сопроцессор 8087 может непосредс-
твенно  работать со значениями с плавающей точкой и целыми значе-
ниями с расширенной точностью. При наличии соответствующего прог-
раммного  обеспечения  процессор 8086 может выполнять виртуальную
обработку любого типа данных, хотя и медленнее.

     В любой момент программа процессора 8086 может  считать  или
изменить содержимое любого из более чем 1000000 байт памяти. Нап-
ример, фрагмент программы:

      .
      .
      .
      mov   ax,0
      mov   dx,ax
      mov   bx,0
      mov   al,[bx]
      .
      .
      .

загружает содержимое байта по адресу 0 в  регистр  AL.  Здесь  не
стоит  беспокоиться о деталях: на самом деле пространство адресов
памяти процессора 8086 обеспечивает память для рабочих  значений,
несколько превышающих 1000000, к которым процессор 8086 может по-
лучить гибкий, быстрый и оперативный доступ.

     Один мегабайт - это большая память, существенно большая, чем
64 килобайта (2 в степени 16 или 65536 байт),  адресуемых процес-
сорами,  предшествующими процессорам 8086. С другой стороны, пос-
ледняя модель процессора этой серии, процессор 80386, может обра-
щаться  к памяти в 4000 раз большей,  чем память процессора 8086.
Поэтому, как вы можете видеть, процессор 8086 все же весьма огра-
ничен в использовании памяти.  Кроме того, в компьютере IBM PC из
одного мегабайта адресного пространства доступно для  общего  ис-
пользования только 640К (килобайт). Остальное адресное пространс-
тво предназначено для использования системным программным обеспе-
чением,  а  также  занято  памятью,  используемой  для  работы  с
дисплеем (видеопамять). К тому же, не следует забывать о том, что
инструкции,  а также данные,  хранятся в памяти, поэтому данные и
код программы должна помещаться в компьютере РС в  память объемом
не более 640К.

     В то время как процессор 8086 может  адресоваться  к  памяти
объемом  1 мегабайт, практически не так просто одновременно полу-
чить доступ с более чем 64К (64 килобайта) памяти. Это связано со
специфическим средством, которое называется сегментацией. Сегмен-
тацию  мы  рассмотрим в последующих разделах ("Сегментные регист-
ры").


                             Ввод и вывод
-----------------------------------------------------------------

     Процессор 8086 поддерживает  устройства  ввода-вывода  двумя
способами: с помощью инструкций ввода-вывода и через адреса памя-
ти. Некоторые устройство ввода вывода управляются с помощью  пор-
тов, которые представляют собой специальные адреса ввода-вывода в
отдельном от 1 мегабайта адресном пространстве в  64К  (см.  Рис.
4.3).

Адрес памяти                        Адрес ввода-вывода (порт)
       ----------------------             ----------------------
00000  |                    |       0000  |                    |
00001  |                    |       0001  |                    |
00002  |                    |       0002  |                    |
00003  |                    |       0003  |                    |
00004  |                    |       0004  |                    |
00005  |                    |       0005  |                    |
00006  |                    |       0006  |                    |
00007  |                    |       0007  |                    |
00008  |                    |       0008  |                    |
00009  |                    |       0009  |                    |
0000A  |                    |       000A  |                    |
       |--------------------|             |--------------------|
       .                    .             .                    .
       .                    .             .                    .
       .                    .             .                    .
       |--------------------|             |--------------------|
FFFF5  |                    |       FFF5  |                    |
FFFF6  |                    |       FFF6  |                    |
FFFF7  |                    |       FFF7  |                    |
FFFF8  |                    |       FFF8  |                    |
FFFF9  |                    |       FFF9  |                    |
FFFFA  |                    |       FFFA  |                    |
FFFFB  |                    |       FFFB  |                    |
FFFFC  |                    |       FFFC  |                    |
FFFFD  |                    |       FFFD  |                    |
FFFFE  |                    |       FFFE  |                    |
FFFFF  |                    |       FFFF  |                    |
       ----------------------             ----------------------

     Рис. 4.3 Память и адреса ввода-вывода процессора 8086.

     Адресов ввода-вывода у процессора 8086 намного  меньше,  чем
адресов памяти.  В то время как  технически возможно  реализовать
64К адресов  ввода-вывода,  практически имеются только 4К адресов
ввода-вывода.  К тому же адреса ввода-вывода не используются  для
хранения  значений,  а  служат для управления и передачи данных в
каналы устройств ввода-вывода.  Например,  последовательные  уст-
ройства,  такие,  как модемы,  управляются целиком с помощью нес-
кольких адресов ввода-вывода.

     Доступ к адресам ввода-вывода можно получить с помощью  двух
специальных  инструкций,  IN и OUT, которые больше ни для чего не
используются. Например, инструкция:

          out    dx,al

посылает содержимое регистра AL в порт ввода-вывода, определяемый
регистром  DX.  К инструкциям IN и OUT мы вернемся в Главе 5 "Ос-
новные элементы программы на Ассемблере".

     Некоторые устройства ввода-вывода представляют собой устрой-
ства  с  отображаемой  памятью. Это означает, что они управляются
через обычные адреса памяти, а не адреса  ввода-вывода.  Особенно
это  относится к дисплейным адаптерам, которые могут использовать
16К, 32К или даже 256К  пространства  адресов  памяти  процессора
8086 для своих битовых массивов (массивов, описывающих точки, ко-
торые адаптеры выводят на экран).

     Данное устройство может управляться как  с  помощью  адресов
ввода-вывода, так и с помощью адресов отображаемой памяти. Факти-
чески, при работе с дисплейными адаптерами для  некоторых функций
используются инструкции ввода-вывода, а для других - адреса памя-
ти.



Оглавление

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог