[ главная ]   [ рейтинг статей ]   [ справочник радиолюбителя ]   [ новости мира ИТ ]



Ответов: 0
25-02-12 07:01







   Web - программирование
PHP


ASP






XML



CSS

SSI





   Программирование под ОС











   Web - технологии








   Базы Данных









   Графика






Данные




Программирование под ОС / Assembler /

Введение в x86 собрание программирование на ассемблере

История

Intel386 ™ Семья Процессора
Некоторое время прошло после создания ENIAC (первый компьютер) в 1946. В 1971 Intels первый микропроцессор 4004 (рис., pic2) был введен Интелом (разработанный Федерико Фагхином) wich используемые транзисторы как главная часть, не электрические лампы как ENIAC. Это не было намного лучше чем todays калькуляторы. Тогда в 1972 Интел сделал 8008 (рис.) wich, использовался в одном из первых домашних микрокомпьютеров, 8 марок. Это был первый микропроцессор на 8 битов, и это достигало 800 кГц (по сравнению с todays 3GHz...) . В 1974 эти 8080 были созданы, первый популярный микропроцессор wich использовался в PC Альтаиров. В 1978 более быстрый и более продвинутый чип был введен Интелом, 8086 чипов, Это - стартер x86 семьи процессора.. Тот же самый год быстрее модификация был выпущен - 8088 (рис.). У этого было большинство todays главных x86 инструкций. 8086 был процессор на 16 битов! Это бежало в ~5Mhz. В 1982 эти 80286 были введены Интелом. Новые opcodes были добавлены, но teh comptability с 8086 программными обеспечениями оставили. Это - одна из причин, почему 286 стал настолько популярным. Это было способно к адресации к RAM 16 МБ (старший жареный картофель поддерживал до 640 КБ памяти), и частоты были 6 - 16 мгц. AMD вступил с версией на 20 мгц 80286. Тогда в 1985 Intel386 ™, первое Мультиуправление задачами 32 битов процессор Интела отсутствовал. Это вводило ProtectedMode, чтобы оставить comptability для Softwere, написанного для 286 и ранее. Это вводило много новых opcodes, регистры и особенности. Это бежало в 20-33Mhz частотах и имело несколько модификаций как 386SL и 386DX. В 1989 Intel486 ™ вышел, заполненный новыми особенностями, как FPU, конвейерная обработка и больше. Графические Операционные системы начали свою историю тогда. У Linux была графическая поддержка, и Вы могли управлять ранними окнами на 486. Частоты для 486 были от 33 мгц до 100 мгц. Вы могли управлять графическими OSE на 386, но это было все еще слишком медленно. 1993 был год еще более продвинутых микропроцессоров, семья Pentium® была начата, улучшаясь x86 технология. Тогда Про Pentium был введен, с MMX (расширение MiltiMedia) поддержка технологии, позволяя оперативные кинофильмы быть показанным быстрее чем когда-либо. MMX позволил более быструю обработку математики на данных на 64 бита. Pentium II полностью поддерживал MMX. Более поздние процессоры только становятся более быстрыми и новыми технологиями, и расширения были введены, как ЮГО-ЮГО-ВОСТОК, SSE2, SSE3, расширения SIMD и так далее.

AMD был единственной компанией, которая была реальным соперником Интелу. После того, как Интел выпустил, это 486, 100 МГц, AMD выпустил Am486® wich, достигал 120 мгц. Теперь у AMD есть полностью рабочий центральный процессор на 64 бита и Windows, Выпуск 64 битов XP основан на AMD Athlon 64 архитектуры. Таким образом это - миф, что AMD делает низкий центральный процессор класса, только смотрите на точки отсчета в участках Аппаратных средств.



Собрание



Хорошо. Теперь позволяет видеть как программирование Ассемблер и x86 архитектура похожи.


ТОПОР - Регистр Сумматора
ОСНОВНОЙ ОБМЕН - Индексный регистр
CX - Встречный Регистр
ДУПЛЕКС - Регистр Данных
СИ - Исходный Индекс
ДИ - Индекс Предназначения
BP - Указатель базы
ИСПАНИЯ - Указатель стека

Они - регистры на 16 битов. Чтобы получить регистры на 32 бита только добавляют письмо 'E', чтобы зарегистрировать название - EAX, EDI... Используя AL, КИПУ, CL и DL, Вы можете получить доступ низко byto регистра и использующий АХ, BH, CH, ГОРЯЧЕКАТАНОГО - высокий байт. Есть Регистры Сегмента wich, используются, чтобы получить доступ к данным в других сегментах памяти, они:

CS - Сегмент кода
DS - Сегмент Данных
ES - Дополнительный Сегмент
SS - Сегмент Стека

Они используются, чтобы получить доступ к сегментам памяти, каждый сегмент составляет 64 КБ. 386 и более поздние процессоры имеют регистры контроля CR0, CR1, CR2, CR3. Они используются, чтобы установить специальные процессоры propierties.

Инструкции

Хорошо у Вас есть регистры... Что Вы делаете с ними? Хороший вопрос. Чтобы управлять ценностями в регистрах есть специальные инструкции. У сегодняшних процессоров есть многие из них, я объясню только главные здесь.

MOV dest, src - ценность шагов формируют src к dest.

Примеры:
mov ax, 15 - помещал 15 в ax
mov ax, bx основной обмен - перемещает ценность основного обмена на ax.
mov dx,[bx] - перемещают ценность по памяти местоположение, обращенное основным обменом.
дуплекс mov, [es:bx] - перемещает ценность памяти, расположенную в сегменте es в возмещенном основном обмене.

ДОБАВЬТЕ, что dest, src - Добавляют src к dest

Примеры:

add ax, 5 - incrase ax 5
add bx, ax - добавляют ax к основному обмену

SUB dest, src - Substract src от dest

Примеры:

sub cx, 7 - substract 7 от cx
основной обмен sub, дуплекс - substract ценность дуплекса от основного обмена

MUL val - Умножают регистр регистра val

Примеры:

основной обмен mul - умножает регистр ОСНОВНЫМ ОБМЕНОМ


Это - то, как инструкции похожи. Больший стол инструкций может быть загружен здесь. Но есть партии больше инструкций.



Используя ДОС и функции BIOS



ДОС и BIOS обеспечивают простые функции та жизнь программистов непринужденности. Используя BIOS и функции ДОСА программист может легко написать текст на экране, установить видео способы, получить данные клавиатуры, прочитать диски и дискеты и намного больше, и не делает requere аппаратных средств, кодирующих experiance. Например способ видео seting в BIOS:

mov ах, 0 - Видео BIOS 'функция' Режима работы монитора Набора.
mov al, 13-ый - Видео Способ (Вы можете установить al & ах бушель hust урегулирование регистр 'mov топор, 13-ый'),
10-ый int - Видео перерыв BIOS

И урегулирование Видео Способа без потребностей BIOS, устанавливающих регистры видеокарт (writting приблизительно 9 ценностей). Это проводило бы ~20 линий на собрании. ДОС использует перерыв 21h. печать текста на экране, используя ДОС (для компилятора NASM):

начало jmp; скачки, чтобы начаться

текст децибела "Привет, мир!", $; текст должен закончиться с $

начните:
mov dx, text ; текстовый указатель movs на дуплекс
mov ах, 9; ДОС печатает функцию
int 21h; мы называем это;)



Заключение


Собрано много, чтобы учиться, особенно если Вы хотите быть хорошим программистом ассемблера. Прочитайте книги, обучающие программы, статьи относительно собрания, читайте, форумы wich обычно содержит много usefull информации, попытаться закодировать, сделать некоторое исследование, и Вы будете definatly делать это.;) Удачи!




Комментарии

 Ваш комментарий к данному материалу будет интересен нам и нашим читателям!



Последние статьи: Программирование под ОС / Assembler /

Первая программа на linux
23-05-2010   

Ассемблер, который я буду использовать - NASM (Netwide Assembler, nasm.2y.net). Этот выбор объясняется тем, что: Во первых, он мультиплатформенный, т.е. для портирования программы на разные ОС достаточно только изменить код взаимодействия с системой, а всю программу переписывать не нужно... подробнее

Кол. просмотров: общее - 4207 сегодня - 1

Использование пакета NuMega Driver Studio для написания WDM - драйверов устройств
17-05-2010   

Разработка WDM - драйвера с использованием только DDK является сложной и трудоемкой задачей. При этом приходится выполнять много однотипных операций: создание скелета драйвера, написание inf - файла для его установки, создание приложения для тестирования и т.п... подробнее

Кол. просмотров: общее - 4037 сегодня - 1

Система классов DriverWorks
17-05-2010   

Возможно, идея писать драйвера объектно-ориентированными и кажется на первый взгляд нелогичной. Но при более близком знакомстве с DriverStudio и с драйверами в общем, оказывается, что это не так уж страшно и довольно удобно... подробнее

Кол. просмотров: общее - 3901 сегодня - 1

Объект устройства device object
17-05-2010   

Объекты устройств являются экземплярами класса KDevice или KPnpDevice. Эти классы являются краеугольными камнями архитектуры DriverWorks: они представляют собой как бы программный образ тех устройств, которые присутствуют в системе... подробнее

Кол. просмотров: общее - 4027 сегодня - 1

Объекты для управления оборудованием
17-05-2010   

Как было упомянуто выше, объект устройства управляет работой устройства при помощи специальных объектов, управляющих работой оборудования - портами В/В, прерываниями, памятью, контроллерами ПДП. Драйвер создает эти объекты для представления физических параметров устройства... подробнее

Кол. просмотров: общее - 4134 сегодня - 1



  WWW.COMPROG.RU - 2009-2012 | Designed and Powered by Zaipov Renat | Projects