ТСвИС / (х) архитектура устройства компьютера.ассемблер
.pdf
Архитектура ЭВМ и систем К.т.н., доц. каф. ИСТ Кислицын Д.И. – ННГАСУ, 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. Этот тип шейдеров отвечает за изменение геометрии: реалистичное разрушение и деформирование объектов, например, после взрыва гранаты, тем самым, освободив от этого ЦП.
