SlideShare a Scribd company logo
LOGO
Лекция № 18
31.05.13
Основы
программирования
процессора
LOGO
Об ассемблере
Ассемблер - язык программирования низкого уровня, то есть
максимально приближенный к «железу» — аппаратному
обеспечению компьютера.
Для каждого процессора характерен свой уникальный набор
действий, которые процессор способен выполнить, поэтому
языки ассемблера разных процессоров отличаются друг от друга.
Язык ассемблера — это всего лишь ориентированная на
человека форма записи инструкций процессора (которые
называются также машинным языком), а сам ассемблер — это
программа, переводящая симво-лические имена команд в
машинные коды.
LOGO
Системы счисления
Архитектура компьютера тесно связана с двоичной системой
счисления, кото-рая состоит всего из двух цифр — 0 и 1.
С технической точки зрения, двоичная система (с основой 2)
идеально подходит для компьютеров, поскольку обе цифры
могут отображать два состояния — включено (1) и выключено
(0).
Однако «большие» числа становятся огромными в двоичной
системе, поэтому для более удобного представления чисел были
разработаны восьмеричная и шестнадцатеричная системы
счисления (с основами 8 и 16 соответственно).
Обе системы легко преобразуются в двоичную систему, но
позволяют записывать числа более компактно.
LOGO
Пример: число 123 456 = (1E240)16.
Запись со скобками и нижним индексом в тексте программы
неудобна, по-этому мы будем использовать следующие
обозначения для записи чисел в различных системах счисления:
• Запись шестнадцатеричного числа начинается с 0х или $0 либо
заканчи-вается символом «h». Если первая цифра
шестнадцатеричного числа — символ A-F, то перед таким числом
нужно обязательно написать 0, чтобы компилятор понял, что
перед ним число, а не идентификатор, например, 0DEADh.
Таким образом, записи 0x1234, $01234 и 01234h представляют
число (1234)10.
LOGO
• Десятичные числа могут записываться без изменений
либо они закачиваются постфиксом «d».
Например, 1234 и 1234d представляют число (1234)10.
• Двоичные цифры должны заканчиваться постфиксом
«b», например 1100b —это (1100)2.
• Восьмеричные цифры заканчиваются на «q»: 12q —
это (12)8.
LOGO
Биты и слова
Биты (разряды) двоичного числа нумеруются справа налево, от
наименее зна­чимого до наиболее значимого. Нумерация
начинается с 0.
Самый правый бит числа — это бит с номером 0 (первый бит).
Этот бит называется LSB-битом (Least Significant Bit — наименее
значимый бит).
Подобно этому самый левый бит называется MSB-битом (Most
Significant Bit — наиболее значимый бит).
Большие группы битов называются словом (word) или двойным
словом (dword — double word):
1 байт = 8 бит
1 слово (word) = 2 байта = 16 бит
1 двойное слово (dword) = 4 байта = 32 бит
LOGO
LOGO
Типы данных
В языках программирования высокого уровня есть
специальные типы дан­ных, позволяющие хранить символы и
строки.
В языке ассемблера таких типов данных нет. Вместо них для
представления одного символа использу­ется байт, а для
представления строки — группа последовательных байтов.
Каждое значение байта соответствует одному из символов
ASCII­таблицы (American Standard Code for Information
Interchange). Первые 128 символов — управляющие символы,
латинские буквы, цифры — одинаковы для всех компьютеров и
операционных систем.
LOGO
LOGO
Регистры общего назначения
Среди регистров обязательно должны присутствовать следующие
группы:
регистры общего назначения,
регистры состояния
счетчики.
Регистры обще­го назначения содержат рабочие данные,
полученные из памяти.
Регистры состояния содержат текущее состояние процессора (или
состояние АЛУ).
Последняя группа — это счетчики. Согласно теории фон­Неймана,
должен быть хотя бы один регистр из этой группы — счетчик
команд, содержащий адрес следующей инструкции.
LOGO
LOGO
Регистры общего назначения. Они называются ЕАХ, ЕВХ, ЕСХ и
EDX (Аккумулятор, База, Счетчик и Данные). Кроме названий, они
больше ничем другим не отличаются друг от друга, поэтому
рассмотрим только первый регистр — ЕАХ (рис. 2.4).
Процессор 80386 обратно совместим с процессором 80286, регистры
которого 16­разрядные. Как же 80386 может выполнять команды,
предназначенные для регистров меньшего размера?
Регистр ЕАХ может быть разделен на две части — 16-
разрядный регистр АХ (который также присутствует в 80286) и
верхние 16 битов, которые никак не называются.
В свою очередь, регистр АХ может быть разделен на два 8-
битных регистра — АН и AL.
LOGO
LOGO
Пример. Если мы заносим в регистр ЕАХ значение 0x12345678,
то регистр АХ будет содержать значение 0x5678 (0x56 в АН и
0x78 в AL), а значение 0x1234 будет помещено в верхнюю часть
регистра ЕАХ.
«Младшие» регистры других регистров общего назначения
называются по такому же принципу: ЕВХ содержит ВХ, который,
в свою очередь, содержит ВН и BL и т.д.
LOGO
Индексные регистры
К регистрам общего назначения иногда относят и индексные
регистры про­цессора 80386 —ESI, EDI и ЕВР (или SI, DI и ВР для
16­разрядных действий).
Обычно эти регистры используются для адресации памяти:
обращения к массивам, индексирования и т.д.
Отсюда их имена: индекс источника (Source Index), индекс
приемника (Destination Index), указатель базы (Base Pointer).
Но хранить в них только адреса совсем необязательно:
регистры ESI, EDI и ЕВР могут содержать произвольные данные.
У регистров ESI, EDI и ЕВР существуют только в 16­разрядная и
32­разряд­ная версии.
Эти регистры программно до­ступны, то есть их содержание может быть
изменено программистом. Другие регистры лучше «руками не трогать».
LOGO
Регистры состояния
Регистры из этой группы используются при вычислении реального адреса
(адреса, который будет передан на шину адреса).
Процесс вычисления реального адреса зави­сит от режима процессора
(реальный или защищенный).
Сегментные регистры только 16­разрядные, такие же, как в 80286.
Названия этих регистров соответствуют выполняемым функциям:
CS (Code Segment, сегмент кода) вместе с EIP (IP) определяют адрес
памяти, откуда нужно прочитать следующую инструкцию;
Регистр SS (Stack Segment, сегмент стека) в паре с ESP (SS:SP) указывают на
вершину стека.
Сегментные регистры DS, ES, FS, и GS (Data, Extra, F и G сегменты) исполь­
зуются для адресации данных в памяти.
Стек ­ это структура данных, которая используется для временного
хранения информации. Программа может поместить данные в стек
(PUSH) или забрать их оттуда (POP).

More Related Content

Similar to 038

представление текстовой информации
представление текстовой информациипредставление текстовой информации
представление текстовой информации
Елена Ключева
 
Архитектура AMD64 (EM64T)
Архитектура AMD64 (EM64T)Архитектура AMD64 (EM64T)
Архитектура AMD64 (EM64T)
Tatyanazaxarova
 
Лекция №4 Организация ЭВМ и систем (продолжение)
Лекция №4 Организация ЭВМ и систем (продолжение)Лекция №4 Организация ЭВМ и систем (продолжение)
Лекция №4 Организация ЭВМ и систем (продолжение)
Александр Силантьев
 
Лекция №4(часть 1) Организация ЭВМ и систем
Лекция №4(часть 1) Организация ЭВМ и системЛекция №4(часть 1) Организация ЭВМ и систем
Лекция №4(часть 1) Организация ЭВМ и системpianist2317
 
Применение статического анализа при разработке программ
Применение статического анализа при разработке программПрименение статического анализа при разработке программ
Применение статического анализа при разработке программ
Tatyanazaxarova
 
Типы данных
Типы данныхТипы данных
Типы данныхOlgaDask
 
базы данных.назаров
базы данных.назаровбазы данных.назаров
базы данных.назаровDifferent_56
 
базы данных.назаров
базы данных.назаровбазы данных.назаров
базы данных.назаровDifferent_56
 
лб № 1 кодирование
лб № 1 кодированиелб № 1 кодирование
лб № 1 кодирование
MKoryakina
 
Ayan9r1 po(1)
Ayan9r1 po(1)Ayan9r1 po(1)
Ayan9r1 po(1)Ayan_R
 
8 3-1
8 3-18 3-1
024
024024
024JIuc
 
Кодирование текстовой информации 10 класс
Кодирование текстовой информации 10 классКодирование текстовой информации 10 класс
Кодирование текстовой информации 10 класс
Наталья Зиненко
 
кодирование текстовой информации
кодирование текстовой информациикодирование текстовой информации
кодирование текстовой информацииElenaAlex
 
Разработка статического анализатора кода для обнаружения ошибок переноса прог...
Разработка статического анализатора кода для обнаружения ошибок переноса прог...Разработка статического анализатора кода для обнаружения ошибок переноса прог...
Разработка статического анализатора кода для обнаружения ошибок переноса прог...
Tatyanazaxarova
 
кодирование текстовой информации
кодирование текстовой информациикодирование текстовой информации
кодирование текстовой информацииSasha
 
Общие сведения о языке программирования Паскаль
Общие сведения о языке программирования ПаскальОбщие сведения о языке программирования Паскаль
Общие сведения о языке программирования Паскаль
Andrey Dolinin
 
Язык программирования Паскаль
Язык программирования ПаскальЯзык программирования Паскаль
Язык программирования ПаскальOlgaDask
 

Similar to 038 (20)

представление текстовой информации
представление текстовой информациипредставление текстовой информации
представление текстовой информации
 
Архитектура AMD64 (EM64T)
Архитектура AMD64 (EM64T)Архитектура AMD64 (EM64T)
Архитектура AMD64 (EM64T)
 
Лекция №4 Организация ЭВМ и систем (продолжение)
Лекция №4 Организация ЭВМ и систем (продолжение)Лекция №4 Организация ЭВМ и систем (продолжение)
Лекция №4 Организация ЭВМ и систем (продолжение)
 
Лекция №4(часть 1) Организация ЭВМ и систем
Лекция №4(часть 1) Организация ЭВМ и системЛекция №4(часть 1) Организация ЭВМ и систем
Лекция №4(часть 1) Организация ЭВМ и систем
 
Применение статического анализа при разработке программ
Применение статического анализа при разработке программПрименение статического анализа при разработке программ
Применение статического анализа при разработке программ
 
Типы данных
Типы данныхТипы данных
Типы данных
 
378 егоров александр
378 егоров александр378 егоров александр
378 егоров александр
 
базы данных.назаров
базы данных.назаровбазы данных.назаров
базы данных.назаров
 
базы данных.назаров
базы данных.назаровбазы данных.назаров
базы данных.назаров
 
лб № 1 кодирование
лб № 1 кодированиелб № 1 кодирование
лб № 1 кодирование
 
Ayan9r1 po(1)
Ayan9r1 po(1)Ayan9r1 po(1)
Ayan9r1 po(1)
 
8 3-1
8 3-18 3-1
8 3-1
 
024
024024
024
 
Кодирование текстовой информации 10 класс
Кодирование текстовой информации 10 классКодирование текстовой информации 10 класс
Кодирование текстовой информации 10 класс
 
кодирование текстовой информации
кодирование текстовой информациикодирование текстовой информации
кодирование текстовой информации
 
Разработка статического анализатора кода для обнаружения ошибок переноса прог...
Разработка статического анализатора кода для обнаружения ошибок переноса прог...Разработка статического анализатора кода для обнаружения ошибок переноса прог...
Разработка статического анализатора кода для обнаружения ошибок переноса прог...
 
кодирование текстовой информации
кодирование текстовой информациикодирование текстовой информации
кодирование текстовой информации
 
Общие сведения о языке программирования Паскаль
Общие сведения о языке программирования ПаскальОбщие сведения о языке программирования Паскаль
Общие сведения о языке программирования Паскаль
 
Язык программирования Паскаль
Язык программирования ПаскальЯзык программирования Паскаль
Язык программирования Паскаль
 
29212p
29212p29212p
29212p
 

More from JIuc

выступление на совет директоров
выступление на совет директороввыступление на совет директоров
выступление на совет директоровJIuc
 
тест по теме системы счисления
тест по теме системы счислениятест по теме системы счисления
тест по теме системы счисленияJIuc
 
тест по теме компьютерные коммуникации
тест по теме компьютерные коммуникациитест по теме компьютерные коммуникации
тест по теме компьютерные коммуникацииJIuc
 
тест по теме аппаратное обеспечение эвм
тест по теме аппаратное обеспечение эвмтест по теме аппаратное обеспечение эвм
тест по теме аппаратное обеспечение эвмJIuc
 
тест по теме устройство компьютера (20 вопросов)
тест по теме  устройство компьютера (20 вопросов)тест по теме  устройство компьютера (20 вопросов)
тест по теме устройство компьютера (20 вопросов)JIuc
 
тест Atutor аппаратное обеспечение
тест Atutor аппаратное обеспечениетест Atutor аппаратное обеспечение
тест Atutor аппаратное обеспечениеJIuc
 
итоговый тест по дисциплине аппаратное обеспечение эвм
итоговый тест по дисциплине аппаратное обеспечение эвмитоговый тест по дисциплине аппаратное обеспечение эвм
итоговый тест по дисциплине аппаратное обеспечение эвмJIuc
 
тест по теме основные устройства компьютера
тест по теме основные устройства компьютератест по теме основные устройства компьютера
тест по теме основные устройства компьютераJIuc
 
тесты сортировка в бд Excel
тесты сортировка в бд Excelтесты сортировка в бд Excel
тесты сортировка в бд ExcelJIuc
 
тест создание и модифиация структуры бд
тест создание и модифиация структуры бдтест создание и модифиация структуры бд
тест создание и модифиация структуры бдJIuc
 
тест система управления базами данных
тест система управления базами данныхтест система управления базами данных
тест система управления базами данныхJIuc
 
тест работа с макросами и внешними данными
тест работа с макросами и внешними даннымитест работа с макросами и внешними данными
тест работа с макросами и внешними даннымиJIuc
 
тест по Sql
тест по Sqlтест по Sql
тест по SqlJIuc
 
тест ключи, связи, индексы поиск и фильтрация
тест ключи, связи, индексы поиск и фильтрациятест ключи, связи, индексы поиск и фильтрация
тест ключи, связи, индексы поиск и фильтрацияJIuc
 
тест запросы
тест запросытест запросы
тест запросыJIuc
 
тест бд
тест бдтест бд
тест бдJIuc
 
тест база данных. основные функции
тест база данных. основные функциитест база данных. основные функции
тест база данных. основные функцииJIuc
 
тестирование по разделу архитектура эвм
тестирование по разделу архитектура эвмтестирование по разделу архитектура эвм
тестирование по разделу архитектура эвмJIuc
 
тест треннинг по архитектуре
тест треннинг по архитектуретест треннинг по архитектуре
тест треннинг по архитектуреJIuc
 
тест треннинг по архитектуре
тест треннинг по архитектуретест треннинг по архитектуре
тест треннинг по архитектуреJIuc
 

More from JIuc (20)

выступление на совет директоров
выступление на совет директороввыступление на совет директоров
выступление на совет директоров
 
тест по теме системы счисления
тест по теме системы счислениятест по теме системы счисления
тест по теме системы счисления
 
тест по теме компьютерные коммуникации
тест по теме компьютерные коммуникациитест по теме компьютерные коммуникации
тест по теме компьютерные коммуникации
 
тест по теме аппаратное обеспечение эвм
тест по теме аппаратное обеспечение эвмтест по теме аппаратное обеспечение эвм
тест по теме аппаратное обеспечение эвм
 
тест по теме устройство компьютера (20 вопросов)
тест по теме  устройство компьютера (20 вопросов)тест по теме  устройство компьютера (20 вопросов)
тест по теме устройство компьютера (20 вопросов)
 
тест Atutor аппаратное обеспечение
тест Atutor аппаратное обеспечениетест Atutor аппаратное обеспечение
тест Atutor аппаратное обеспечение
 
итоговый тест по дисциплине аппаратное обеспечение эвм
итоговый тест по дисциплине аппаратное обеспечение эвмитоговый тест по дисциплине аппаратное обеспечение эвм
итоговый тест по дисциплине аппаратное обеспечение эвм
 
тест по теме основные устройства компьютера
тест по теме основные устройства компьютератест по теме основные устройства компьютера
тест по теме основные устройства компьютера
 
тесты сортировка в бд Excel
тесты сортировка в бд Excelтесты сортировка в бд Excel
тесты сортировка в бд Excel
 
тест создание и модифиация структуры бд
тест создание и модифиация структуры бдтест создание и модифиация структуры бд
тест создание и модифиация структуры бд
 
тест система управления базами данных
тест система управления базами данныхтест система управления базами данных
тест система управления базами данных
 
тест работа с макросами и внешними данными
тест работа с макросами и внешними даннымитест работа с макросами и внешними данными
тест работа с макросами и внешними данными
 
тест по Sql
тест по Sqlтест по Sql
тест по Sql
 
тест ключи, связи, индексы поиск и фильтрация
тест ключи, связи, индексы поиск и фильтрациятест ключи, связи, индексы поиск и фильтрация
тест ключи, связи, индексы поиск и фильтрация
 
тест запросы
тест запросытест запросы
тест запросы
 
тест бд
тест бдтест бд
тест бд
 
тест база данных. основные функции
тест база данных. основные функциитест база данных. основные функции
тест база данных. основные функции
 
тестирование по разделу архитектура эвм
тестирование по разделу архитектура эвмтестирование по разделу архитектура эвм
тестирование по разделу архитектура эвм
 
тест треннинг по архитектуре
тест треннинг по архитектуретест треннинг по архитектуре
тест треннинг по архитектуре
 
тест треннинг по архитектуре
тест треннинг по архитектуретест треннинг по архитектуре
тест треннинг по архитектуре
 

038

  • 2. LOGO Об ассемблере Ассемблер - язык программирования низкого уровня, то есть максимально приближенный к «железу» — аппаратному обеспечению компьютера. Для каждого процессора характерен свой уникальный набор действий, которые процессор способен выполнить, поэтому языки ассемблера разных процессоров отличаются друг от друга. Язык ассемблера — это всего лишь ориентированная на человека форма записи инструкций процессора (которые называются также машинным языком), а сам ассемблер — это программа, переводящая симво-лические имена команд в машинные коды.
  • 3. LOGO Системы счисления Архитектура компьютера тесно связана с двоичной системой счисления, кото-рая состоит всего из двух цифр — 0 и 1. С технической точки зрения, двоичная система (с основой 2) идеально подходит для компьютеров, поскольку обе цифры могут отображать два состояния — включено (1) и выключено (0). Однако «большие» числа становятся огромными в двоичной системе, поэтому для более удобного представления чисел были разработаны восьмеричная и шестнадцатеричная системы счисления (с основами 8 и 16 соответственно). Обе системы легко преобразуются в двоичную систему, но позволяют записывать числа более компактно.
  • 4. LOGO Пример: число 123 456 = (1E240)16. Запись со скобками и нижним индексом в тексте программы неудобна, по-этому мы будем использовать следующие обозначения для записи чисел в различных системах счисления: • Запись шестнадцатеричного числа начинается с 0х или $0 либо заканчи-вается символом «h». Если первая цифра шестнадцатеричного числа — символ A-F, то перед таким числом нужно обязательно написать 0, чтобы компилятор понял, что перед ним число, а не идентификатор, например, 0DEADh. Таким образом, записи 0x1234, $01234 и 01234h представляют число (1234)10.
  • 5. LOGO • Десятичные числа могут записываться без изменений либо они закачиваются постфиксом «d». Например, 1234 и 1234d представляют число (1234)10. • Двоичные цифры должны заканчиваться постфиксом «b», например 1100b —это (1100)2. • Восьмеричные цифры заканчиваются на «q»: 12q — это (12)8.
  • 6. LOGO Биты и слова Биты (разряды) двоичного числа нумеруются справа налево, от наименее зна­чимого до наиболее значимого. Нумерация начинается с 0. Самый правый бит числа — это бит с номером 0 (первый бит). Этот бит называется LSB-битом (Least Significant Bit — наименее значимый бит). Подобно этому самый левый бит называется MSB-битом (Most Significant Bit — наиболее значимый бит). Большие группы битов называются словом (word) или двойным словом (dword — double word): 1 байт = 8 бит 1 слово (word) = 2 байта = 16 бит 1 двойное слово (dword) = 4 байта = 32 бит
  • 8. LOGO Типы данных В языках программирования высокого уровня есть специальные типы дан­ных, позволяющие хранить символы и строки. В языке ассемблера таких типов данных нет. Вместо них для представления одного символа использу­ется байт, а для представления строки — группа последовательных байтов. Каждое значение байта соответствует одному из символов ASCII­таблицы (American Standard Code for Information Interchange). Первые 128 символов — управляющие символы, латинские буквы, цифры — одинаковы для всех компьютеров и операционных систем.
  • 10. LOGO Регистры общего назначения Среди регистров обязательно должны присутствовать следующие группы: регистры общего назначения, регистры состояния счетчики. Регистры обще­го назначения содержат рабочие данные, полученные из памяти. Регистры состояния содержат текущее состояние процессора (или состояние АЛУ). Последняя группа — это счетчики. Согласно теории фон­Неймана, должен быть хотя бы один регистр из этой группы — счетчик команд, содержащий адрес следующей инструкции.
  • 11. LOGO
  • 12. LOGO Регистры общего назначения. Они называются ЕАХ, ЕВХ, ЕСХ и EDX (Аккумулятор, База, Счетчик и Данные). Кроме названий, они больше ничем другим не отличаются друг от друга, поэтому рассмотрим только первый регистр — ЕАХ (рис. 2.4). Процессор 80386 обратно совместим с процессором 80286, регистры которого 16­разрядные. Как же 80386 может выполнять команды, предназначенные для регистров меньшего размера? Регистр ЕАХ может быть разделен на две части — 16- разрядный регистр АХ (который также присутствует в 80286) и верхние 16 битов, которые никак не называются. В свою очередь, регистр АХ может быть разделен на два 8- битных регистра — АН и AL.
  • 13. LOGO
  • 14. LOGO Пример. Если мы заносим в регистр ЕАХ значение 0x12345678, то регистр АХ будет содержать значение 0x5678 (0x56 в АН и 0x78 в AL), а значение 0x1234 будет помещено в верхнюю часть регистра ЕАХ. «Младшие» регистры других регистров общего назначения называются по такому же принципу: ЕВХ содержит ВХ, который, в свою очередь, содержит ВН и BL и т.д.
  • 15. LOGO Индексные регистры К регистрам общего назначения иногда относят и индексные регистры про­цессора 80386 —ESI, EDI и ЕВР (или SI, DI и ВР для 16­разрядных действий). Обычно эти регистры используются для адресации памяти: обращения к массивам, индексирования и т.д. Отсюда их имена: индекс источника (Source Index), индекс приемника (Destination Index), указатель базы (Base Pointer). Но хранить в них только адреса совсем необязательно: регистры ESI, EDI и ЕВР могут содержать произвольные данные. У регистров ESI, EDI и ЕВР существуют только в 16­разрядная и 32­разряд­ная версии. Эти регистры программно до­ступны, то есть их содержание может быть изменено программистом. Другие регистры лучше «руками не трогать».
  • 16. LOGO Регистры состояния Регистры из этой группы используются при вычислении реального адреса (адреса, который будет передан на шину адреса). Процесс вычисления реального адреса зави­сит от режима процессора (реальный или защищенный). Сегментные регистры только 16­разрядные, такие же, как в 80286. Названия этих регистров соответствуют выполняемым функциям: CS (Code Segment, сегмент кода) вместе с EIP (IP) определяют адрес памяти, откуда нужно прочитать следующую инструкцию; Регистр SS (Stack Segment, сегмент стека) в паре с ESP (SS:SP) указывают на вершину стека. Сегментные регистры DS, ES, FS, и GS (Data, Extra, F и G сегменты) исполь­ зуются для адресации данных в памяти. Стек ­ это структура данных, которая используется для временного хранения информации. Программа может поместить данные в стек (PUSH) или забрать их оттуда (POP).