Математика | ||||
Дао Л. 3 Программирование микропроцессора 8088: Пер. с англ. — М.: Мир, 1988.— 357 с., ил. ISBN 5-03-000232-4 Книга американского автора является простым и доступным для широкого круга пользователей пособием по программированию на языке ассемблера микропроцессора 8088. В качестве примеров приводятся 20 программ, реализующих алгоритмы типовых задач сбора и обработки данных. Описывается архитектура микропроцессора с использованием 32-разрядных регистров, позволяющих создавать микро-ЭВМ больших вычислительных возможностей* Для программистов и специалистов, использующих вычислительную технику и желающих ознакомиться с программированием микро-ЭВМ. | ||||
ПРЕДИСЛОВИЕ К РУССКОМУ ИЗДАНИЮ Персональные ЭВМ оказались первыми программно-управляемыми вычислительными средствами, доступными широкому кругу пользователей. Это позволило последним приступить к активной формализации знаний с целью автоматизации рутинной части интеллектуальной деятельности. Появление персональных ЭВМ, положивших начало эре «компьютерной» грамотности, по значимости для развития человечества можно сравнить с изобретением книгопечатания. Чтобы «общаться» с машиной, необходимо знать ее входной язык и иметь возможность прямого доступа к вычислительным ресурсам для обработки данных по формализованным алгоритмам. До недавнего времени формализация алгоритмов и разработка соответствующих программ оставались прерогативой профессиональных программистов. Однако в связи с быстрым ростом числа ЭВМ и областей их проблемной ориентации остро встала проблема подготовки нужного числа программистов. Кроме того, решение ряда задач, например в биотехнологии, сегодня возможно только на основе неформализованных знаний специалистов, что требует их личного участия в процессе формализации алгоритмов. При этом за программистами остаются функции системного сопровождения разработки программ пользователем и создание базового программного обеспечения комплекса. Пользователь составляет "программы на одном из языков высокого уровня. Когда его потребности выходят за пределы возможностей освоенной версии языка, программист разрабатывает новые процедуры этого языка, расширяющие его функциональные возможности. По мере развития описанного процесса частота контактов ОГЛАВЛЕНИЕ X Предисловие к русскому изданию...........5 Предисловие...................7 Глава I ОБЩИЕ ПРИНЦИПЫ ПОСТРОЕНИЯ МИКРО-ЭВМ Аппаратная часть ................ 10 Программное обеспечение компьютера........ 18 Представление информации в микро-ЭВМ....... 26 Персональная микро-ЭВМ фирмы IBM........ 37 Глава II , МИКРОПРОЦЕССОР Intel 8088 Машинный язык................. 47 Архитектура процессора ...... ........ 48 Организация памяти и адресации.......... 64 Режимы адресации................ 69 Работа со стековой памятью............ 80 Прерывания работы микропроцессора........ 86 Глава III ЯЗЫК АССЕМБЛЕРА МИКРОПРОЦЕССОРА 8088 Почему необходим язык ассемблера?.....'....' 98 Формат программы................100 Распространенные ошибки программирования на языке ассемблера ...................120 Макрокоманды..................126 Глава IV СИСТЕМА КОМАНД ААА-коррекция кода ASCII при сложении.......123 AAD-коррекция кода ASCII при делении.......131 ААМ-коррекция кода ASCII при умножении......133 AAS-коррекция кода ASCII при вычитании.......134 ADC-сложение с переносом.............135 ADD-сложение..................137 AND-логическое умножение.............139 CALL-вызов процедуры..............141 353 CBW-преобразование байта в слово.........144 CLC-сброс флага переноса.............145 CLD-сброс флага направления............145 CLI-сброс флага прерываний.............146 CMC-инверсия флага переноса...........147 СМР-сравнение операндов.............143 CMPS-сравнение строк ..............149 CWD-преобразование слова в двойное слово......151 DAA-десятичная коррекция при сложении.......152 DAS-десятичная коррекция при вычитании.......153 DJV-деление...................155 ESC-выдача...................137» HLT-останов...................158 IDIV-целочисленное деление............159 IMUL-целочисленное умножение ...........161 IN-ввод из порта.................163 INC-инкремент.................. 164 INT-программное прерывание............165 INTO-прерывание по переполнению..........167 IRET-возврат из прерывания............168 JA/JNBE-переход, если больше/переход, если не меньше или равно .....................169 JAE/JNB/JNC:nepexoA, если больше или равно/переход, если не меньше/переход, если нет переноса........170 JB/JNAE/JC-переход, если меньше/переход, если не больше или равно/переход, если есть перенос........171 JBE/JNA-переход, если меньше или равно/переход, если не больше....................173 JCXZ-переход, если содержимое регистра СХ равно нулю 174 JE/JZ-переход, если равно/переход по нулю......175 JG/JNLE-переход, если больше чем/переход, если не меньше чем или равно...............176 JGE/JNL-переход, если больше или равно/переход, если не меньше чем..................177 JL/JNGE-переход, если меньше/переход, если не больше или равно..........:.......... 178 JLE/JNG-переход, если меньше или равно/переход, если больше....................179 JMP-безусловный переход.............181 JHE/JNZ-переход по неравенству/переход, если не нуль . .183 JNO-переход, если нет переполнения.........18 i JNP/JPO-переход при отсутствии четности.......185 JNS-переход, если нет знака............186 JO-переход по переполнению............187 JP/JPE-переход по четности............183 JS-переход по знаку...............189 LAHF-загрузка регистра АН из регистра флагов . . . .190 LDS-загрузка указателя в регистр DS........191 LEA-загрузка исполнительного адреса.........192 LES-загрузка указателя с использованием регистра ES 193 LOCK-захват шины................194 LODS-загрузка строки..............195 LOOP-цикл...............'.....196 LOOPE/LOOPZ-цикл если равно/цикл если нуль......19? LQOPNE/LOOPNZ-цикл если не равно/цикл если не нуль 199 354 MOV-пересылка .................200 MOVS-пересылка строки..............202 MUL-умножение .................204 NEG-отрицание..................205 NOP-отсутствие операции.............205 NOT-логическое отрицание .............207 OR-логическое ИЛИ...............208 OUT-вывод в порт................210 PUSHF-запись в стек содержимого регистра флагов . .211 POPF-чтение из стека содержимого регистра флагов . . . 212 PUSH-запись в стек...............213 POP-чтение из стека...............215 RCL-циклический сдвиг влево через перенос......2IS RCR-циклический сдвиг вправо через перенос.....218 REP/REPE/REPZ-повторение/повторение если равно/повторение если нуль................21Э RET-возврат из процедуры.............229 ROL-циклический сдвиг влево............222 ROR-циклический сдвиг вправо...........223 REPNE/REPNZ-повторение если равно/повторение если нуль 225 SAHF-запись содержимого регистра АН в регистр флагов 226 SAL/SHL-арифметический сдвиг влево/логический сдвиг влево 227 SAR-арифметический сдвиг вправо..........228 SBB-вычитание с заемом..............230 SCAS-сканированве строк.............232 SHR-логический сдвиг вправо............234 STC-установить флаг переноса . . . ........235 STD-установить флаг направления..........238 STI-установить флаг прерывания...........236 STOS-запомнить строку..............237 SUB-вычитание..................238 TEST-тест....................240 WAIT-ожидание .................242 XCHG-замена..................243 XLAT-передача из таблицы.............244 XOR-исключающее ИЛИ..............245 Глава V АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ НАД ЦЕЛЫМИ ЧИСЛАМИ Арифметические команды.............248 Арифметические операции с 32-разрядными числами . . . 252 Генерация псевдослучайных чисел .......... 262 Перевод чисел из шестнадцатеричного представления в десятичное...................269 Глава VI ЛОГИЧЕСКИЕ ОПЕРАЦИИ Стандартные операции ............... 272 Логические команды............... 273 Преобразования разрядов операндов ....... . . 275 Буквенные преобразования ............. 276 Засекречивание и восстановление данных ....... 283 355 Глава VII ПЕРЕСЫЛКА ДАННЫХ Команды пересылки данных............295 Перемещение данных в перекрывающихся последовательностях-строках ..................297 Взаимные преобразования кодов ASCII и EBCDIC . . . 299 Поиск последовательности знаков .......... 302 Преобразования дважды связанных списков......303 Глава VIII ПЕРЕДАЧА УПРАВЛЕНИЯ Команды переходов................313 Цикл......................316 Структура процедуры ............... 319 «Пузырьковая» сортировка.............323 Перевод алгебраического выражения в обратную польскую запись ...................325 Рекурсивное программирование...........333 Глава IX ЦИКЛИЧЕСКИЙ И ЛИНЕЙНЫЙ СДВИГ Команды циклического сдвига........... 343 Команды линейного сдвига............. 345 Декодирование машинных команд.......... 347 Применение префикса переназначения сегмента...... 349 Цена: 150руб. |
||||