Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скляров И. Изучаем Assembler за 7 дней (2010).pdf
Скачиваний:
1332
Добавлен:
23.02.2015
Размер:
2.11 Mб
Скачать

http://www.sklyaroff.ru

2

ИВАН СКЛЯРОВ

Изучаем

Assembler за7

дней

2010

http://www.sklyaroff.ru

3

Никакая часть данной книги не может быть воиспроизведена в какой бы то ни было форме без письменного разрешения владельца авторских прав.

Все права защищены. ©

http://www.sklyaroff.ru

4

Содержание

 

Введение.................................................. ..................................................................

8

День 1. Знакомство с архитектурой компьютера..............................................

9

1.1. Что такое архитектура компьютера..................................................................

9

1.2. Системы счисления.................................................. .........................................

10

1.3. Биты и байты............................................... .......................................................

13

1.4. Фон-неймановская архитектура........................................................................

14

1.5. Процессор............................................... ............................................................

15

1.5.1. Режимы работы процессора.........................................................................

16

1.5.2. Регистры процессора....................................................................................

16

1.5.2.1. Пользовательские регистры...................................................................

17

1.5.2.1.1. Регистры общего назначения..........................................................

17

1.5.2.1.2. Сегментные регистры.......................................................................

18

1.5.2.1.3. Регистр флагов и указателя команд................................................

19

1.5.2.2. Системные регистры..............................................................................

20

1.5.2.3. Регистры FPU и MMX............................................................................

21

1.5.2.4. Регистры XMM (расширение SSE/SSE2) ............................................

22

1.6. Память............................................... ............................................... ..................

23

1.7. Порты ввода-вывода............................................... ...........................................

27

1.8. Шины............................................... ............................................... ...................

28

День 2. Основы программирования на ассемблере..........................................

29

2.1. Какой ассемблер выбрать............................................... ..................................

30

2.2. Этапы создания программы...............................................................................

31

2.3. Структура программы........................................................................................

32

2.3.1. Метка............................................... ..............................................................

32

2.3.2. Команда или директива............................................... ................................

33

2.3.3. Операнды............................................... .......................................................

33

2.3.4. Комментарий............................................... .................................................

33

2.4. Некоторые важные директивы ассемблера......................................................

34

2.4.1. Директивы определения данных.................................................................

34

2.4.2. Директива эквивалентности............................................... ........................

35

2.4.3. Директива присваивания..............................................................................

35

2.4.4. Директивы задания набора допустимых команд.......................................

35

2.4.5. Упрощенные директивы определения сегмента........................................

36

2.4.6. Директива указания модели памяти...........................................................

36

2.5. Разработка нашей первой программы на ассемблере.....................................

37

2.5.1. Программа типа COM..................................................................................

38

2.5.2. Программа типа EXE....................................................................................

39

2.6. Основные различия между программами типа EXE и COM..........................

41

http://www.sklyaroff.ru

5

2.7. Функции BIOS и DOS............................................... ........................................

42

2.8. Префикс программного сегмента (PSP) ..........................................................

44

2.9. Знакомство с отладчиком...................................................................................

47

2.10. Младший байт по младшему адресу...............................................................

49

День 3. Основные конструкции ассемблера.......................................................

51

3.1. Цикл............................................... .....................................................................

51

3.2. Безусловный переход............................................... .........................................

53

3.3. Сравнение и условные переходы......................................................................

55

3.4. Стек............................................... ............................................... ......................

57

3.5. Подпрограммы (процедуры)..............................................................................

59

3.6. Директива INCLUDE..........................................................................................

60

3.7. Конструкции времени исполнения программы...............................................

61

3.8. Директивы условного ассемблирования..........................................................

63

3.9. Макросы............................................... ...............................................................

67

3.9.1. Блоки повторений............................................... .........................................

68

День 4. Основные команды ассемблера..............................................................

71

4.1. Команды пересылки............................................... ...........................................

71

4.2. Оператор PTR............................................... ......................................................

73

4.3. Способы адресации............................................... ............................................

74

4.3.1. Непосредственная адресация.......................................................................

74

4.3.2. Регистровая адресация............................................... .................................

74

4.3.3. Косвенная адресация............................................... ....................................

74

4.3.4. Прямая адресация (адресация по смещению) ...........................................

74

4.3.5. Базовая адресация............................................... .........................................

75

4.3.6. Индексная адресация............................................... ....................................

75

4.3.7. Базовая-индексная адресация......................................................................

75

4.3.8. Адресация по базе с индексированием и масштабированием.................

76

4.4. Относительные операторы.................................................................................

76

4.5. Логические команды............................................... ..........................................

77

4.6. Команды сдвига............................................... ..................................................

78

4.6.1. Команды линейного (нециклического) сдвига..........................................

78

4.6.2. Команды циклического сдвига....................................................................

79

4.7. Команды обработки строк/цепочечные команды............................................

79

4.7.1. Команды пересылки цепочек......................................................................

80

4.7.2. Команды сравнения цепочек.......................................................................

81

4.7.3. Команды сканирования цепочек.................................................................

82

4.7.4. Команды загрузки элемента из цепочки в аккумулятор...........................

84

4.7.5. Команды переноса элемента из аккумулятора в цепочку........................

84

4.7.6. Команды ввода элемента цепочки из порта ввода-вывода.......................

85

4.7.7. Команды вывода элемента цепочки в порт ввода-вывода........................

86

4.8. Команды работы с адресами и указателями....................................................

87

4.9. Команды трансляции (преобразования) по таблице.......................................

87

День 5. Арифметические команды. Сопроцессор.............................................

88

5.1. Арифметические операторы..............................................................................

88

http://www.sklyaroff.ru

6

5.2. Команды выполнения целочисленных операций............................................

89

5.2.1. Целые двоичные числа.................................................................................

89

5.2.2. BCD-числа............................................... .....................................................

90

5.2.3. Команды, работающие с целыми двоичными числами............................

90

5.2.3.1. Сложение и вычитание...........................................................................

90

5.2.3.2. Инкремент и декремент..........................................................................

91

5.2.3.3. Умножение и деление............................................................................

91

5.2.3.4. Изменение знака числа...........................................................................

91

5.2.4. Ввод и вывод чисел............................................... ......................................

92

5.2.5. Команды, работающие с целыми BCD-числами.......................................

95

5.2.5.1. Сложение и вычитание неупакованных BCD-чисел...........................

95

5.2.5.2. Умножение и деление неупакованных BCD-чисел.............................

96

5.2.5.3. Сложение и вычитание упакованных BCD-чисел...............................

96

5.3. Команды выполнения операций с вещественными числами.........................

96

5.3.1. Вычисления с фиксированной запятой......................................................

97

5.3.2. Вычисления с плавающей запятой..............................................................

99

5.3.2.1. Сравнение вещественных чисел............................................................

102

5.4. Архитектура сопроцессора................................................................................

103

5.4.1. Типы данных FPU.........................................................................................

103

5.4.2. Регистры FPU................................................................................................

103

5.4.2.1. Регистры данных R0-R7.........................................................................

103

5.4.2.2. Регистр состояния SWR (Status Word Register)...................................

104

5.4.2.3. Регистр управления CWR (Control Word Register)..............................

104

5.4.2.4. Регистр тегов TWR (Tags Word Register).............................................

105

5.4.2.5. Регистры-указатели команд IPR (Instruction Point Register) и

 

данных DPR (Data Point Register)..........................................................

105

5.4.3. Исключения FPU...........................................................................................

105

5.4.4. Команды сопроцессора................................................................................

106

5.4.4.1. Команды пересылки данных FPU.........................................................

106

5.4.4.2. Арифметические команды.....................................................................

107

5.4.4.3. Команды манипуляций константами....................................................

109

5.4.4.4. Команды управления сопроцессором...................................................

109

5.4.4.5. Команды сравнения................................................................................

110

5.4.4.6. Трансцендентные команды....................................................................

112

День 6. Программирование под MS-DOS............................................................

113

6.1. Чтение параметров командной строки.............................................................

113

6.2. Вывод на экран в текстовом режиме................................................................

115

6.2.1. Функции DOS................................................................................................

115

6.2.2. Прямая запись в видеопамять......................................................................

116

6.3. Ввод с клавиатуры............................................... ..............................................

117

6.3.1. Функции DOS................................................................................................

118

6.3.2. Функции BIOS...............................................................................................

121

6.4. Работа с файлами................................................................................................

125

6.4.1. Создание и открытие файлов.......................................................................

126

6.4.2. Чтение и запись в файл................................................................................

128

6.4.3. Закрытие и удаление файла.........................................................................

130

http://www.sklyaroff.ru

7

6.4.4. Поиск файлов............................................... ................................................

131

6.4.5. Управление директориями...........................................................................

133

6.5. Прерывания............................................... .........................................................

136

6.5.1. Внутренние и внешние аппаратные прерывания......................................

137

6.5.2. Запрет всех маскируемых прерываний.......................................................

139

6.5.3. Запрет определенного маскируемого прерывания....................................

139

6.5.4. Собственный обработчик прерывания.......................................................

141

6.5.5. Распределение номеров прерываний..........................................................

142

День 7. Программирование под Windows...........................................................

145

7.1. Особенности программирования под Windows...............................................

145

7.2. Первая простейшая программа под Windows на ассемблере.........................

149

7.2.1. Директива INVOKE.........................................................................................

154

7.3. Консольное приложение....................................................................................

154

7.4. Графическое приложение..................................................................................

158

7.4.1. Регистрация класса окон..............................................................................

160

7.4.2. Создание окна...............................................................................................

162

7.4.3. Цикл обработки очереди сообщений..........................................................

162

7.4.4. Процедура главного окна.............................................................................

163

7.5. Дочерние окна управления................................................................................

166

7.6. Использование ресурсов....................................................................................

170

7.6.1. Подключение ресурсов к исполняемому файлу........................................

171

7.6.2. Язык описания ресурсов..............................................................................

171

7.6.2.1. Пиктограммы..........................................................................................

171

7.6.2.2. Курсоры...................................................................................................

172

7.6.2.3. Растровые изображения.........................................................................

172

7.6.2.4. Строки......................................................................................................

173

7.6.2.5. Диалоговые окна.....................................................................................

174

7.6.2.6. Меню........................................................................................................

174

7.7. Динамические библиотеки.................................................................................

179

7.7.1. Простейшая динамическая библиотека...................................................

180

7.7.2. Неявная загрузка DLL...............................................................................

182

7.7.3. Явная загрузка DLL...................................................................................

182

Приложение 1. Основные технические характеристики

 

микропроцессоров фирмы Intel...............................................

185

Приложение 2. Таблицы кодов символов...........................................................

188

Приложение 3. Сравнение двух синтаксисов ассемблера................................

195

Список литературы.................................................................................................

197