Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ТСвИС / (х) архитектура устройства компьютера.ассемблер

.pdf
Скачиваний:
65
Добавлен:
28.05.2015
Размер:
6.3 Mб
Скачать

Архитектура ЭВМ и систем К.т.н., доц. каф. ИСТ Кислицын Д.И. – ННГАСУ, 2010г.

Основы Ассемблера

Организация подпрограмм

Команда

Перевод

Назначение

Процессор

CALL метка

call - вызов

Вызов подпрограммы

8086

 

 

 

 

...

(1)mov ah,9

(2)mov dx,offset Mess1

(3)int 21h

(4)mov ah,10h

(5)int 16h

(6)mov ah,9

(7)mov dx,offset Mess2

(8)int 21h

(9)mov ah,10h

(10)int 16h

(11)int 20h

(12)Mess1 db 'Нажмите любую клавишу...$'

(13)Mess2 db 'Вы успешно нажали клавишу!$'

...

...

(1)mov dx,offset Mess1

(2)call Out_string

(3)call Wait_key

(4)mov dx,offset Mess2

(5)call Out_string

(6)call Wait_key

(7)int 20h

(8)Out_string proc

(9)mov ah,9

(10)int 21h

(11)ret

(12)Out_string endp

(13)Wait_key proc

(14)mov ah,10h

(15)int 16h

(16)ret

(17)Wait_key endp

(18)Mess1 db 'Нажмите любую клавишу...$'

(19)Mess2 db 'Вы успешно нажали клавишу!$‘

Архитектура ЭВМ и систем К.т.н., доц. каф. ИСТ Кислицын Д.И. – ННГАСУ, 2010г.

Основы Ассемблера

Стек

Стек - это специально отведенная область памяти для хранения промежуточных данных

Организация памяти

Организация памяти

сегмента

стека

0000h

0FFFFh

0001h

0FFFEh

0002h

...

...

0002h

0FFFEh

0001h

0FFFFh

0000h

Следить за стеком позволяет пара регистров SS:SP.

При запуске какой-нибудь com-программы регистр SP равен 0FFFEh, а сегментный регистр SS равен единственному сегменту (CSEG) (как и CS, DS, ES)

call – ret

push - pop

Архитектура ЭВМ и систем К.т.н., доц. каф. ИСТ Кислицын Д.И. – ННГАСУ, 2010г.

Основы Ассемблера

Стек

Команда

Перевод

Назначение

Процессор

 

 

 

 

PUSH приѐмник

push – втолкнуть

Поместить в стек число

8086

 

 

 

 

POP приѐмник

pop - вытолкнуть

Взять из стека число

8086

 

 

 

 

Пример

использования

...

(1)mov ax,345h

(2)push ax

(3)mov ah,10h

(4)int 16h

(5)pop ax

...

Порядок восстановления данных из стека

push ax push bx push cx

pop cx pop bx pop ax

Примеры неправильной работы со стеком

mov ax,1234h mov bx,5678h

push ax

 

push bx

 

pop ax

AX = 5678h

pop bx

BX = 1234h

 

...

call Our_proc int 20h

...

Our_proc proc mov ax,15 push ax

mov ah,9

mov dx,offset Str int 21h

ret

Our_proc endp

...

Возврат по ret на адрес 15

Архитектура ЭВМ и систем К.т.н., доц. каф. ИСТ Кислицын Д.И. – ННГАСУ, 2010г.

Основы Ассемблера

Стек. Запрет прерываний

Команда

Перевод

Назначение

Процессор

 

 

 

 

CLI

Clear Interrupt – запретить

Запретить прерывания

8086

 

 

 

 

STI

reSTore Interrupt – восстановитть

Разрешить прерывания

8086

 

 

 

 

Правила работы с SS:SP регистрами:

1.Прежде чем менять регистры SS:SP, необходимо запретить все прерывания командой cli,

азатем разрешить командой sti.

2.SS:SP нужно устанавливать на свободную область памяти. При этом следует убедиться, что код не утратил работоспособности.

После загрузки com-программы в память, SS равен сегменту, куда загрузилась программа, а SP - 0FFFEh. Код программы начинается с адреса 100h (org 100h), а вершина стека - конец нашего сегмента.

Например, если программа занимает, 2000h байт, то можно установить SP в 2200h. В этом случае для стека отводится 100h (именно сто) байт (т.к. программа загружается по адресу 100h, то к 2000h нужно прибавить 100h). Если переполнить стек (например, поместить более 100h данных), то затрется часть нашей программы снизу.

Пример изменения регистров стека: cli

mov ax,0B900h mov ss,ax

mov sp,100h sti

Архитектура ЭВМ и систем К.т.н., доц. каф. ИСТ Кислицын Д.И. – ННГАСУ, 2010г.

Основы Ассемблера

Организация циклов

Команда

Перевод

Назначение

Процессор

 

 

 

 

LOOP метка

loop– петля

Организация циклов

8086

 

 

Уменьшает на единицу CX и, если он

 

 

 

не равен нулю, переходит на Метку

 

JMP метка

jump– прыжок

Безусловный переход на Метку

8086

 

 

 

 

JZ метка

Jump if Zero -

Переход на указанную метку, если флаг

8086

 

переход, если

нуля установлен

 

 

ноль

 

 

JNZ метка

Jump if NoZero

Переход на указанную метку, если флаг

8086

 

- переход, если

нуля сброшен

 

 

не ноль

 

 

(1) mov ah,9

(1) mov cx,3

(1) mov ah,9

(2) mov dx,offset Str

(2) Label_1:

(2) mov dx,offset Str

(3) int 21h

(3) mov ah,9

(3) int 21h

(4) mov ah,9

(4) mov dx,offset Str

(4) jmp Label_2

(5) mov dx,offset Str

(5) int 21h

(5) add cx,12

(6) int 21h

(6) loop Label_1

(6) dec cx

(7) mov ah,9

 

(7) Label_2:

(8) mov dx,offset Str

 

(8) int 20h

(9) int 21h

 

 

Архитектура ЭВМ и систем К.т.н., доц. каф. ИСТ Кислицын Д.И. – ННГАСУ, 2010г.

Основы Ассемблера

Оператор сравнения

Команда

Перевод

Назначение

Процессор

 

 

 

 

COMPARER приѐмник, источник

Comparer - сравнить

Сравнение

8086

 

 

 

 

Если предыдущая команда сравнения была верной, то Флаг нуля устанавливается в единицу

...

(1) mov ax,15

(1) mov ah,10h

(1) Next_key:

(2) cmp ax,15

(2) int 16h

(2) mov ah,10h

(3) jz Our_lab

(3) cmp al,'Y'

(3) int 16h

(4) mov ah,3

(4) jz Yes_key

(4) cmp al,'ф'

(5) Our_lab:

...

(5) jz F_pressed

...

(5) Yes_key:

(6) cmp al,'Ф'

Строка (4) НЕ выполняется

(7) jz F_pressed

 

(8) jmp Next_key

 

(9) F_pressed:

(1) mov ax,15

 

 

(10) mov ah,9

(2) cmp ax,16

 

 

(11) mov dx,offset Mess

(3) jz Our_lab

 

 

(12) int 21h

(4) mov ah,3

 

 

(13) int 20h

(5) Our_lab:

 

 

(14) Mess db 'Ура! Вы нажали Ф или ф!!!$'

...

 

 

...

Строка (4)

 

выполняется

 

 

Архитектура ЭВМ и систем К.т.н., доц. каф. ИСТ Кислицын Д.И. – ННГАСУ, 2010г.

Основы Ассемблера

Таблица кодов некоторых символов расширенного набора ASCII

F1 … F10

Alt-F1 … F10

Shift-F1 … F1

Ctrl-F1 … F1

Enter

ESC

Space

Tab

 

 

 

 

 

 

 

 

3Bh … 44h

68h … 71h

54h … 5Dh

5Eh … 67h

0Dh

1Bh

20h

09h

 

 

 

 

 

 

 

 

в AL помещается 0, а в AH - расширенный код

...

(1)No_ext:

(2)mov ah,10h

(3)int 16h

(4)cmp al,0

(5)jnz No_ext

(6)cmp ah,57h

(7)jz Shift_f4

(8)jmp No_ext

(9)Shift_f4:

...

Архитектура ЭВМ и систем К.т.н., доц. каф. ИСТ Кислицын Д.И. – ННГАСУ, 2010г.

Видеокарта

Видеокарта (графическая карта, видеоадаптер) - устройство, преобразующее изображение, находящееся в памяти компьютера, в видеосигнал для монитора

1. TV-выход

2. Разъем DVI

3. Выход VGA

4. Разъем питания вентилятора охлаждения

5. Графический процессор с интегрированной DAC и теплоотводом/вентилятором

6. Разъем AGP 8х

7. Модули памяти GDDR

Архитектура ЭВМ и систем К.т.н., доц. каф. ИСТ Кислицын Д.И. – ННГАСУ, 2010г.

Видеокарта

Графический процессор (Graphics Processing Unit - графическое процессорное устройство) — занимается расчѐтами выводимого изображения. Включает в себя блок обработки 2D-графики, блок обработки 3D-графики (геометрическое ядро, блок растеризации).

Видеоконтроллер — отвечает за формирование изображения в видеопамяти, даѐт команды RAMDAC на формирование сигналов развѐртки для монитора и осуществляет обработку запросов центрального процессора.

Видеопамять — выполняет роль кадрового буфера, в котором хранится изображение, генерируемое и постоянно изменяемое графическим процессором и выводимое на экран монитора. В видеопамяти хранятся также промежуточные невидимые на экране элементы изображения и другие данные. Современные видеокарты комплектуются памятью типа DDR3, DDR4 или DDR5.

Цифро-аналоговый преобразователь (ЦАП, RAMDAC - Random Access Memory Digital-to-Analog Converter) — служит для преобразования изображения, формируемого видеоконтроллером, в уровни интенсивности цвета, подаваемые на аналоговый монитор. Возможный диапазон цветности изображения определяется только параметрами RAMDAC. Чаще всего RAMDAC имеет четыре основных блока — три цифроаналоговых преобразователя, по одному на каждый цветовой канал (красный, зелѐный, синий, RGB), и SRAM для хранения данных о гамма-коррекции. Большинство ЦАП имеют разрядность 8 бит на канал — получается по 256 уровней яркости на каждый основной цвет, что в сумме дает 16,7 млн. цветов (а за счѐт гамма-коррекции есть возможность отображать исходные 16,7 млн. цветов в гораздо большее цветовое пространство).

Видео-ПЗУ (Video ROM) — постоянное запоминающее устройство, в которое записаны видео-BIOS, экранные шрифты, служебные таблицы и т. п. ПЗУ не используется видеоконтроллером напрямую — к нему обращается только центральный процессор. Хранящийся в ПЗУ видео-BIOS обеспечивает инициализацию и работу видеокарты до загрузки основной операционной системы, а также содержит системные данные, которые могут читаться и интерпретироваться видеодрайвером в процессе работы. На многих современных картах устанавливаются электрически перепрограммируемые ПЗУ (EEРROM, Flash ROM).

Шина – в настоящее время существуют два стандарта AGP (1х, 2х, 3х, 4x, 8х) и PCI Express (x1, x4, x8, x16, x32). Интерфейс PCI-Express 2.0 х32 (32 линии) имеет пропускную способность 32 Гбайт/с.

Система охлаждения — предназначена для сохранения температурного режима видеопроцессора и видеопамяти в допустимых пределах.

Архитектура ЭВМ и систем К.т.н., доц. каф. ИСТ Кислицын Д.И. – ННГАСУ, 2010г.

Видеокарта

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

API (Application Programming Interface) предоставляют разработчикам аппаратного и программного обеспечения средства создания драйверов и программ, работающих быстрее на большом количестве платформ. Программные драйверы разрабатываются для взаимодействия непосредственно с API, а не с операционной системой и программным обеспечением.

OpenGL (компания SGI)

Opengl 1.0

Opengl 1.2

Opengl 1.4

Opengl 2.0

Opengl 2.1

Opengl 3.1

Opengl 3.2

Direct 3D (компания MS)

DirectX 7 - карта не поддерживает шейдеры, все картинки рисуются наложением текстур;

DirectX 8 - поддержка пиксельных шейдеров версий 1.0, 1.1 и 1.2, в DX 8.1 ещѐ и версию 1.4, поддержка вершинных шейдеров версии 1.0;

DirectX 9 - поддержка пиксельных шейдеров версий 2.0, 2.0a и 2.0b, 3.0; DirectX 10 - поддержка унифицированных шейдеров версии 4.0;

DirectX 10.1 - поддержка унифицированных шейдеров версии 4.1.

Шейдер (Shader) - программа задающая вид поверхности объекта. Также она осуществляет трансформацию и освещение вершин, и отвечает за обработку пикселей.

Пиксельные шейдеры (Pixel Shader) - это программы которые выполняются чипом для каждого пикселя изображения. Отвечают за такие эффекты, как реалистичная вода, волосы и т.п.

Вершинные шейдеры (Vetrex Shader) - это программы которые производят различные операции над вершинами объектов. Отвечают за анимацию травы, деревьев, объѐмный туман и некоторый виды деформаций объектов.

Геометрические шейдеры (Geometry Shader) - это новый тип шейдеров, который появился с выходом DirectX 10. Этот тип шейдеров отвечает за изменение геометрии: реалистичное разрушение и деформирование объектов, например, после взрыва гранаты, тем самым, освободив от этого ЦП.