- •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.
1. Представление данных в компьютере: двоичная, шестнадцатиричная системы исчисления, числа со знаком.
I Двоичная система исчисления.
В двоичной системе исчисления 2 цифры, а вместо степени здесь применяется степень двойки.
10010111b, “b” – означает двоичная системы исчисления.
10010111b = 1*2^7 + 0 *2&6 + 1*2^4 + 0*2^3 + 1*2^2 + 1*2^1 + 1*2^0 = 151
a) Перевести из Bin в Dec
a)Перевести из Dec в Bin
151 / 2 = 75 | 1 младший
75 / 2 = 37 | 1
37 / 2 = 18 | 1
18 / 2 = 9 | 0
9 / 2 = 4 | 1
4 / 2 = 2 | 0
2 / 2 = 1 | 0
1 / 2 = 1 | 1 старший
Бит, байт и слово.
Минимальная единица цифры - бит. Он может принимать два значения 0 или 1. Единица цифры размером в 8 бит называется байтом. Байт – минимальный объём данных, который реально может использовать компьютерная программа. Ст. бит|7||6||5||4||3||2||1||0|мл. Бит. Т.к. в Байте 8-бит ,то он может принимать 2*e8-1 или 256 различных значений.
Байт используется для представления:
целых чисел [0..255]
целых чисел со знаком [-128..127]
наборов символов ASCII кодов или символов принимающих <256 значений/
Следующий тип данных слово, его размер 2 байта. Может принимать до 2*у16-1=65563 значений.
|15__старший байт____8|7__младший байт____0| Слово или 2Байта используется для представления:
целых чисел без знака [0..65563]
целых чисел со знаком [-32768..32767]
адреса сегментов и адресаций при 16-ти битной адресации.
Два слова подряд образуют двойное слово, состоящее из (32 бит), два двойных-учетверённое (64 бит), слово и двойное слово – основной тип данных.
Шестнадцатеричная система исчисления:
Использует 16 цифр. 0123456789ABCDEF
Номер позиции цифры в числе соответствует степени, в которую надо возвести число 16.
96h , “h” – означает шестнадцатеричную систему исчисления.
9h = 1001b 6h= 0110b
96h = 9*16^1 + 6*16^0 = 150
|_Dec | _ Bin_ | Hex__|
|_0 | _ 0000 | 00 __|
|_1 | _ 0001 | 01 __|
|_2 | _ 0010 | 02 __|
|_3 | _ 0011 | 03 __|
|_4 | _ 0100 | 04 __|
|_5 | _ 0101 | 05 __|
|_6 | _ 0110 | 06 __|
|_7 | _ 0111 | 07 __|
|_8 | _ 1000 | 08 __|
|_9 | _ 1001 | 09 __|
|_10 | _ 1010 | 0A _|
|_11 | _ 1011 | 0B _|
|_12 | _ 1100 | 0C _|
|_13 | _ 1101 | 0D _|
|_14 | _ 1110 | 0E _|
|_15 | _ 1111 | 0F __|
|_16 | _10000 | 10h__|
Числа со знаком.
Чтобы применить арифметические операции для представления отрицательных чисел, Существует специальная операция дополнения до двух. Для изменения знака числа выполняется инверсия, т.е. заменяют в двоичном коде 1 на 0, а 0 на 1, а затем прибавляют 1.
150 = 0096h = 00000000 1010110 в инверсии 11111111 011010101 = 0FF6Ah = -150
2.Организация памяти. Модели памяти.
Любая программа начинаеться с описания модели памяти:
самая простая .model tiny – сегментированнная модель памяти (каждый размером). Формирование адреса осуществляется как сегмент + смещение относительно данного сигмента. Память занимает до 4Гб.
model small, В данной модели памяти код размещается в одном сегменте, а данные и стек в другом, для их описания могут применяться разные сегменты, но объединённые в одну группу.
model compact, В данной модели памяти код размещается в одном сегменте, а для хранения данных может быть использовамно несколько сегментов. Таким образом, для обращения данным требуется указывать сегмент и смещение.
model medium, код нескольких сегментах, а данные в одном => для доступа к данным используется только смещение.
model large & model huge и код и данные могут занимать несколько сегментов.
model flat – память рассмартривается как единый массив, используется 32 битные сегменты, таким образом максимальный размер сегмента содержащие и данные и код и стек достигает 4 Мб.
Пример
.model tiny
.data – директива указания ала сегмента данных.
X dB 13,10’Привет’,13,10,$ - под переменную Х выделить память 1 байт, поместить туда “Привет”, 13,10- перевод каретки, ; завершение ввода строки.
.code указывает на начало сегмента кода.
.startup – указывает что далее идёт текст программы.
Команда пересылки данных:
mov пр., аист. – Копирует источник в приёмник, значение источника не изменяеться.
add пр., ист. – сложение, складывание содержимое источника с приёмником, соохраняем в нём результат.
div пр., ист. – деление
mul пр., ист. – умножение
sub пр., ист. – вычитание
В качестве приёмника может использоваться регистры. В качестве источника – регистр, переменная, символьное значение.
Память с точки зрения Центрального процессора – последовательность байтов, каждому из которых присвоен свой уникальный адрес со значение от 0 до 4 Г б. Программы могут работать с памятью как с одним непрерывным массивом и как с несколькими. Во втором случае для задания адреса любого байта требуются два числа: адрес начала массива и адрес искомого байта внутри массива. Помимо основной памяти программы могут использовать регистры - специальные ячейки памяти расположенные физически внутри процессора, доступ к которым осуществляется не по адресам, а по именам. Физический адрес состоит и двух 16-битных частей: адреса сдвинутого относительно адреса сегмента влево на 4 бита, сдвиг влево на 4 бита, эквивалентен умножению на 16. Исполнительный адрес называется эффективным, он всегда кратен 16. Таким образом, физический адрес имеет разрядность в 20 бит: PA = FA*16+EA