- •1. Представление данных в компьютере: двоичная, шестнадцатиричная системы исчисления, числа со знаком.
- •2.Организация памяти. Модели памяти.
- •3. Регистровая структура процессоров Intel ix86: регистры общего назначения, сегментные регистры, регистр флагов.
- •4. Директивы определения данных
- •5. Способы адресации: регистровая, непосредственная, прямая, косвенная.
- •6. Текстовый и графический режимы видеопамяти. Адресное пространство. Вывод символов и пикселей на экран. Примеры.
- •7. Структура стека. Команды для работы со стеком. Синтаксис. Примеры.
- •8. Прерывания.
- •9. Функции dos: ввод с клавиатуры, печати строки, завершение инициализации.
- •10. Команды двоичной арифметики
- •11. Команды десятичной арифметики языка assembler. Синтаксис. Примеры.
- •12. Логические команды языка ассемблер. Синтаксис. Примеры.
- •13. Команды пересылки данных. Синтаксис. Примеры. Оператор ptr.
- •14. Сдвиговые операторы. Синтаксис.
- •15. Безусловный переход
- •16. Команды сравнения и передачи управления.
- •17. Организация циклов. Синтаксис. Примеры.
- •18. Строковые команды. Синтаксис.
- •19. Расширение mmx
- •20. Структура резидентных программ. Загрузка и выгрузка резидентной программы.
- •21. Драйверы устройств dos. Формат и загрузка драйвера устройства.
- •Символьные устройства осущ-ют послед. Ввод/вывод. Такими устройствами являются console, последовательный порт, часы и принтер.
- •22. Программирование на уровне портов ввода/вывода. Системный таймер.
- •23.Команды ввода-вывода
- •24. Переферийные устройства. Структура fdd, hdd, cd-rom.
4. Директивы определения данных
dB – 1 байт
DW – слово
DD – двойное слово
DF – 6 байт
DQ – учетверённое слово
DT – 10 байт
По данным директивам отводятся определённое место в памяти.
Пример 1
Имя – директива
X DB? – под переменную отвести 1 байт, в котором ничего не записывается
X DB ?
DB 12h |
DB ‘*’ |=> X DB ? , 12h , ‘*’ , 0
DB 0 |
Под X отводиться 4 байта подряд. Если под переменную X нужно поместить 8 одинаковых значений (X DB 0,0, … 0)? То удобно использовать конструкцию повторения:
X DB 8 DUP (0)
X DB 2 DUP (‘ab‘,?,1) X DB ‘ab‘,?,1, ‘ab‘,?,1
A BD 20 DUP (30Dup(?)) - байтовая матрица 20 на 30.
Пример 2
X DW 1234h – слова в памяти храняться в перевёрнутом виде: |__34h__|__12h__|
В регистре приведённый выше пример переварачиваеться.
Директивы эквиваленитности:
EQU: A DW ?
B EQU A
C DW B = С DWA
Оператор указания типов
PTR
Если величина данных заведомо неизвестна, то существует оператор указания типа: mov [si],0 mov [si], byte PTR 0
Если необходимо изменить какое-то значение байта не трогая другое: Z DW 1234h
Если mov z,0 , to то mov byte ptr z,0, получим z=00h, 12 h, а чтобы изменить младший байт: mov byte ptr z11,0
5. Способы адресации: регистровая, непосредственная, прямая, косвенная.
Регистровая адресация – большинство команд процессора вызываются с аргументами, которые в ассемблере называються операндами, операнды могут располагать в любых регистрах общего назначения и сегментных регистрах.
Непосредственная адресация – некоторые коды позволяют указывать один из операторов непосредственно в тексте программы: mov ax, 2
Прямая адресация – если у операнда располагающегося в памяти известен адрес, то его можно использовать. Если операнд слово находиться в сегменте, на который указывает регистр ES со смещением от начала сегмента 0001, то команда: mov ax, es, 0001 поместит это слово в регистр AX. Если в сегменте указанном в регистре ES была описана переменная word_var размером в слово, то можно записать (1), тогда ассемблер сам заменит слово word_var на соответствующий адрес.
Косвенная адресация – по аналогичным с регистровой адресацией операндов так же можно не указывать адрес операндов, хранить в любом регистре ax, [bx] – перемещает в регистр AX слово из ячейки памяти, селектор сегмента которых находиться в DS, а смещение в BX/
Адресация по базе со сдвигом – mov ax, [bx+2] помещает в регистр AX слово, которое есть в сегменте с указанием DS со смещением на 2 больше чем число из BX.
6. Текстовый и графический режимы видеопамяти. Адресное пространство. Вывод символов и пикселей на экран. Примеры.
Адресное пространство – набор адресов, которые может формировать процессор.
В зависимости от модификации компьютера и состава его периферийного оборудования распределение адресного пространства может несколько различаться.
Текстовая память включает 8 видео-страниц и занимает в адресном пространстве 32 кб от сегментного адреса 0BS00h.
Для того, чтобы из программы получить доступ к видео-памяти, надо занести в один из сегментных регистров данных ее сегментный адрес. После этого задавая те или иные смещения, мы сможем выполнять запись в любые места видео-памяти.
1. mov ax, 0B800h
mov es, ax
2. mov si, 80*2*12+40*2 ‘ смещение к центру экрана
mov woid ptr es:[si], 3130h ‘ нолик на экран
mov ah, 01h ‘ остановка программы для наблюдения результата
int 21h
1) Непосредственная адресация в сегментный регистр запрещена, операция замещения адреса текстового режима видео-памяти в es осуществляется через промежуточный ax.
2) Для задания смещения воспользуемся базовыми и индексными регистрами.
Каждая строка содержит 80 символов, а символ требует 2 байта.
Запись строки в видео-память.
txt DB ‘Word’
mov ax, 0B800h
mov es, ax
mov di,(80*10+10)*2 ‘ di – смещение в приемнике
mov si,offset txt ‘ si – смещение источника
mov dx,4
m: mov bl,ds:[si]
mov ex:[di],bl
inc di
add si,2
dec dx
jnz m ‘ пока dx не станет равным 0, будет возвращаться на метку.
mov ah,4ch
int 21h
end.
Графический режим
В отличие от DOS, ко всем функциям, к которым мы обращаемся с помощью прерывания int 21h, в BIOS за каждым устройством компьютера закреплено свое прерывание.
int 16h – с клавиатурой
int 10h – обмен с видеоадаптером (работа с графическим изображением)
.model iny
.code
.startup
mov ah,13h ‘ записывает строку в текущую страницу видеобуфера.
int 10h ‘ вызов BIOS
mov ax, DA000h ‘ адрес графического видеорежима
mov es,ax
mov di,0 ‘ линию рисуем с начала экрана
m: mov byte ptr es:[di],3
add di,1
cmp di,320
jnz m ‘ выполняется пока di не станет равным 320
xor ah,ah ‘ обнуление счетчика
int 16h ‘ обмен с клавиатурой
mov ah,03 ‘ текстовый режим
int 10h ‘ вызов BIOS
mov ah,1 ‘ ждет нажатия клавиши
int 21h
mov ah,4ch ‘ стандартная функция завершения DOS
end.
В фрагменте предусмотрено переключение видеоадаптера в стандартный текстовый режим. Если видеоадаптер останется в графическом режиме, это может помешать выполнению прикладных программ.
0ch – функция вывода пикселя.