- •Содержание
- •1 Группа
- •1. Організація адресації ат286 в захищеному режимі.
- •2. Архітектура мп 80386.
- •3. Архітектура мп 80486.
- •4. Регістри стану й керування і486.
- •5. Архітектура та функціональні можливості Pentium.
- •6. Провести порівняльний аналіз архітектур мікропроцесорів фірми Intel.
- •7. Risc-процесори.
- •8. Архітектура сигнального мікропроцесора adsp.
- •9. Описати роботу системного таймера ibm-сумісного комп'ютера.
- •10. Класифікація мікропроцесорних наборів.
- •11. Класифікація мікропроцесорних наборів за числом віс.
- •12. Режими роботи таймерів однокристальної мікро еом Intel 8051.
- •13. Архітектура пам’яті процесорів adsp-2100.
- •14. Система команд і регістри процесорів сімейства adsp-2100.
- •15. Динамічні зп з довільною вибіркою.
- •16. Стекова адресація. Польський зворотній запис.
- •If (число)
- •17. Перетворення віртуальних адресів у фізичні.
- •18. Адресний простір еом. Способи адресації операндів.
- •19. Оперативна пам’ять. Організація та принципи управління.
- •20. Система переривань та її характеристики.
- •21. Формування фізичної адреси з логічної у реальному режимі.
- •22. Формування фізичної адреси з логічної у 386 захищеному режимі.
- •23. Підсистема керування оперативної пам’яті. Організація та принципи управління.
- •1. Динамическое распределение памяти.
- •2. Разделение памяти на страницы.
- •3. Использование связанных списков.
- •4. Сегментация памяти.
- •5. Свопинг памяти.
- •6. Организация виртуальной памяти.
- •24. Динамічний розподіл пам’яті. Організація віртуальної пам’яті.
- •25. Загальні принципи будування багатопроцесорних обчислювальних комплексів..
- •26. Загальні принципи будування багатомашинних обчислювальних комплексів.
- •27. Конвеєрні, векторні та матричні багатопроцесорні комплекси.
- •28. Асоціативні системи та системи зі структурою, що перебудовується.
- •29. Принципи будування високонадійних обчислювальних систем - кластерів.
- •30. Принципи побудови систем з симетрично-паралельною обробкою даних. Переваги та недоліки таких систем
- •31. Страницы jsp. Теги и встроенные объекты jsp
- •32. Архитектура распределенных приложений. Web – сервисы
- •33. Soap
- •34. Java rmi Достоинства и недостатки Java rmi
- •35. Распределенные компьютерные системы. Промежуточное программное обеспечение распределенных компьютерных систем
- •36. Виртуальная машина jvm
- •37. Пространства и схемы xml
- •38. Corba. Достоинтсва и недостатки corba
- •39. Сервлет-технология Java
- •40.Xml. Структура xml-документа
- •2 Группа
- •1 Класифікація операційних систем
- •2 Мультизадачність, її розновиди
- •3. Процеси, потоки та їх взаємодія
- •4. Стани процесів
- •5. Розподіл оперативної пам'яті фіксованими розділами
- •6. Розподіл оперативної пам'яті зміними розділами, алгоритми завантаження нових процесів
- •7. Пошук фізичної адреси у реальному режимі
- •8.Пошук фізичної адреси у захищеному режимі
- •9. Пошук фізичної адреси при сторінковій адресації
- •10.Сегментна та сторінкова організація віртуальної пам’яті, алгоритми заміщення сегментів
- •11. Системи введення-виведення, основні режими, базові таблиці
- •12.Файлові системи fat (fat-16, fat-32, vfat).
- •Vfat и длинные имена файлов
- •13.Файлова система hpfs.
- •14.Файлова система ntfs.
- •15.Файлова система UfS.
- •16. Структура жорсткого магнитного диску
- •1.Каждый жесткий диск обслуживают несколько головок, в зависимости от количества круглых пластинок, покрытых магнитным материалом, из которых состоит диск.
- •2.Информация записывается и читается блоками, поэтому все дорожки как бы разбиты на секторы (обычно по 512 байт).
- •3.В операциях чтения или записи на физическом уровне необходимо указывать номер головки (0,1,...), дорожки или цилиндра (0,1,...), сектора (1,2,...).
- •17 Класифікація системного програмного забезпечення
- •18 Мікроядерні та монолітні операційні системи, їх особливості
- •19 Сервісні системи (інтерфейсні системи, оболонки, утілити)
- •20 Інструментальні системи
- •21 Системи програмування, їх основні типи.
- •22 Системи штучного інтелекту
- •23 Асемблери, алгоритм двохпрохідного асемблера
- •24 Завантажувачі
- •25 Макропроцесори
- •26 Компілятори
- •27 Призначення та структура головної функції вікна.
- •Реєстрація класу вікна, параметри, які підлягають реєстрації.
- •29 Етапи створення вікна. Які функції задіяно на кожному етапі?
- •30 Ініціалізація dll-бібліотеки у середовищі Microsoft Windows nt/2000/xp.
- •31 Експорт та імпорт функцій при використанні dll-бібліотек.
- •32 Динамічний імпорт функцій при використанні dll-бібліотек.
- •33 Структура простої прикладної програми з бібліотекою динамічної компоновки. Послідовність дій при компіляції.
- •If(!strcmp((lpstr)lParam, szBuf)) // Сравниваем заголовок со строкой, адрес которой передан в функцию EnumWindowsProc
- •3 Группа
- •Void main ()
- •Void main ()
- •Void main ()
- •Int n; scanf("%d",&n); //число элементов в массиве
- •Void main()
- •Int n; scanf("%d",&n); //число элементов в массиве
- •Int main()
- •Int n,m; scanf("%d%d",&n,&m); //число элементов строк и элементов в строке
- •Int main()
- •Int n,m; scanf("%d%d",&n,&m); //число элементов строк и элементов в строке
- •Int main()
- •Int main()
- •Int main()
- •Int main()
- •Int mul(double X,double y)
- •Int main()
- •Int main()
- •Void func(a);
- •Int fclose(file *имя);
- •Void perror(const char *s);
- •Int fputc(int ch, file *fp);
- •Int fgetc(file *fp);
- •Int fputs(char* string, file *fp);
- •Int fprintf(file *fp, char *format [,аргумент]…);
- •Int fscanf(file *fp, char *format [,указатель]…);
- •Int n; float f; long l; int a[5]; float m[5];
- •Int fwrite(void *ptr, int size, int n, file *fp);
- •Int fread(void *ptr,int size,int n,file *fp);
- •16 Ооп. Визначення класу. Компоненти класу. Спеціфікатори доступу до компонентів класу. Різниця між методами класу, визначеними в класі та поза межами класу.
- •Void define(double re,double im)
- •Void display()
- •X.Define(1,2);
- •Void set(int);
- •Void myclass::set(int c)
- •Int myclass::get()
- •17 Ооп. Визначення класу. Конструктор, перевантажені конструктори, деструктор.
- •Void main()
- •Void main()
- •Void main()
- •18 Ооп. Поняття дружніх функціїй. Різниця між дружньою функцією - членом класу та не членом класу.
- •19 Ооп. Поняття перевантаження операцій. Правила її використання.
- •20 Ооп. Наслідування. Поняття базового та похідного класів. Спеціфікатори доступу до членів класів.
- •21 Моделювання. Визначення моделі та призначення моделювання. Види моделей.
- •22 Моделювання. Загальносистемна модель функціонування систем. Моделі систем: безперервна, лінійна, безперервна лінійна, дискретна.
- •23 Моделювання. Узагальнена модель систем масового обслуговування (смо). Типи смо
- •24 Моделювання. Позначений граф станів системи. Рівняння Колмогорова для ймовірностей стану системи. Фінальні ймовірності станів системи.
- •25 Асемблер. Регістри та біти ознак процесора Intel 8086. (регістри загального вжитку та сегментні регістри, їх призначення; ознаки cf, of, sf, pf, af, zf)
- •26 Асемблер. Структура програми (директиви сегментування segment та з використанням директиви model; директиви assume; моделі пам’яті; ініціалізація сегментних регістрів)
- •Int 21h ;вызов прерывания с номером 21h
- •28 Асемблер. Арифметичні операції додавання та віднімання чисел зі знаком та беззнакових, з урахуванням ознаки переносу, інкрементування й декрементування
- •Vich_1 dd 2 dup (0)
- •Vich_2 dd 2 dup (0)
- •Inc ax ;увеличить значение в ax на 1
- •29 Асемблер. Арифметичні операції множення та ділення чисел зі знаком та беззнакових
- •Imul eax,bx,8
- •Idiv (Integer diVide) Деление целочисленное со знаком
- •Idiv делитель
- •Idiv bx ;частное в ax, остаток в dx
- •30 Асемблер. Команди безумовної передачі керування. (прямі короткі; прямі; непрямі)
- •31 Асемблер. Організація циклів за допомогою команд jcxz; loop, loopz та loopnz
- •32 Асемблер. Команди умовного передавання керування. (операція cmp; операції умовного передавання керування jcxz, jc, jo, jz, jc, je, jl, jg, ja, jb)
- •Int 21h ;Вызов системной функции
- •33 Асемблер. Макроси (опис, розташування, використання)
- •4 Группа
- •1,2 Общая характеристика модели osi
- •3 Понятие «открытая система»
- •4 Стандартные стеки коммуникационных протоколов (osi , ipx/spx, NetBios/smb)
- •5 Стек tcp/ip
- •6 Общая структура телекоммуникационной сети
- •7 Корпоративные сети
- •8,9 Сети операторов связи
- •10 Классификация линий связи: первичные сети, линии и каналы связи; физ.Среда пердачи аднных
- •11 Классификация линий связи: аппаратура передачи данных
- •12 Структурированная кабельная система
- •13 Безпровідна лінія зв'язку, діапазони електромагнітного спектру
- •14 Безпровідне середовище передачі даних: розповсюдження електромагнітних хвиль, ліцензування
- •15 Общая характеристика протоколов локальных сетей: стандартная топология и разделяемая среда, стек протоклов локальных сетей.
- •16 Протокол mac. Адресация mac-уровня.
- •17 Структура стандартов ieee 802.X
- •18 Спецификация физической среды Ethernet ( общая характеристика стандартов 10Мбит/мек,Домен коллизий)
- •19 Спецификация физической среды Ethernet ( Стандарт 10Base-5, 10Base-5)
- •20 Спецификация физической среды Ethernet ( Стандарт 10Base-т)
- •21 Спецификация физической среды Ethernet ( Оптоволоконная сеть Ethernet)
- •22 Технология Fast Ethernet (Физический уровень технологии Fast Ethernet)
- •23 Технология Fast Ethernet (спецификация 100Base-fx/тх/т4)
- •24 Правила построения сегментов Fast Ethernet при наличии повторителей
- •25. Gigabit Ethernet
- •26. Технология Token Ring
- •27 Загальна характеристика безпровідних локальних мереж
- •28 Мережі Стек протоколів ieee 802.11, безпека безпровідних локальних мереж
- •29 Мережі Топології безпровідних локальних мереж стандарту 802.11, розподілений та централізований режими доступу до розділеного середовища
- •30 Мережі Особливості персональних мереж, архітектура Bluetooth
- •31 Мережі Стек протоколів Bluetooth, кадри Bluetooth.
- •32 Мережі Основні функції мережних адаптерів
- •33 Мережі Основні и додаткові функції концентраторів
- •34 Мережі Багатосегментні концентратори
- •35 Мережі Основні характеристики та особливості комутаторів. Неблокуючі комутатори
- •36 Мережі Функції комутаторів (боротьба з перевантаженнями трансляція протоколів канального рівня, фільтрація трафіку)
- •37 Мережі Характеристики продуктивності комутаторів
- •38 Мережі Поняття та призначення віртуальних мереж
- •39 Мережі Створення віртуальніх мереж на базі одного та декількох комутаторів
- •40 Мережі Якість обслуговування в віртуальних мережах
- •41 Мережі Типи адрес стеку tcp/ip (локальні адреси, мережні ip-адреси, доменні імена).
- •42 Мережі Протокол dhcp
- •43 Мережі Протоколи транспортного рівня tcp и udp (загальна характеристика, порти)
- •44 Мережі Протокол транспортного рівня udp
- •45 Мережі Протокол транспортного рівня tcp (формат tcp - сегмента, логічне з‘єднання, послідовний та затверджений номер)
- •47 Мережі Класифікація протоколів маршрутизації, маршрутизація без таблиць, адаптивна маршрутизація
- •48 Мережі Використання декількох протоколів маршрутизації, зовнішні та внутрішні шлюзні протоколи
- •49 Мережі Протокол bgp
- •50 Мережі Поняття, типи icmp-повідомлень
- •51 Мережі Протокол icmp (формат ехо – запитання /ехо - відповідь и утиліта ping; формат повідомлення про помилку та утиліта traceroute)
- •5 Группа
- •1 Трьохрівнева модель субд
- •2 Моделі даних
- •3 Реляційна модель даних
- •4 Ключі відношень. Визначення, різновиди, призначення. Умови цілісності даних
- •5 Інфологічне моделювання предметної області. Модель “Сутність – зв’язок”
- •6 Види зв’яку між сутностями. Навести приклади
- •7 Нормалізація відношень. Призначення. Послідовність виконання нормалізації.
- •8 Нормалізація відношень. 1 та 2 нормальні форми.
- •9 Нормалізація відношень. 3 нормальна форма та нормальна форма Бойса-Кодда. Навести приклади
- •10 Функціональні залежності атрибутів у відношеннях.
- •11 Реляційна алгебра. Основні операції реляційної алгебри.
- •12 Оператор Select. Речення From . Синтаксис. Використання. Навести приклади.
- •13 Відбирання рядків у запитах. Синтаксис. Навести приклад.
- •14 Відбирання груп у запитах. Синтаксис. Навести приклад.
- •15 Групування та сортування записів у запиті. Навести приклад
- •16 Вкладені запити. Різновиди. Синтаксис. Навести приклади.
- •17 Використання агрегатних функцій у запитах.
- •18 Фізична модель даних. Структура записів на носії.
- •21. Рівні та задачі проектування електронних пристроїв от.
- •22. Математичне моделювання електронних пристроїв от: переваги та недоліки.
- •23. Математичні моделі елементів електронних пристроїв. Визначення і класифікація, методи розробки.
- •24. Задачі схемотехнічного проектування електронних пристроїв от.
- •25. Структура та можливості програм моделювання електронних схем.
- •26. Типова структура і засоби розробки макромоделей інтегральних мікросхем.
- •27. Імітаційне моделювання електронних пристроїв от: процес, подія, активність.
- •28. Методи функціонального моделювання аналогових і цифрових пристроїв.
- •29. Методи логічного моделювання цифрових пристроїв.
- •30. Тестування цифрових пристроїв: контролюючі та діагностичні тести. Засоби їх отримання.
- •31 Моделювання на рівні регістрових передач
- •32 Функціональне моделювання за допомогою програм моделювання аналогових схем.
- •33 Математические методы и модели на разных уровнях проетирования
- •6 Группа
- •1 Властивості інформації. Класифікація загроз інформації.
- •2 Уровни защиты информации в компьютерных системах
- •3 Законодательний рівень захисту інформації
- •4. Організаційно-адміністративний рівень захисту інформації
- •5. Фізико-технічні засоби захисту інформації в компьютерних системах
- •6. Криптографічний захист інформації
- •7. Стандарти симетричного шифрування даних
- •8. Криптосистеми з відкритим ключем
- •9. Канали несанкціонованого доступу до інформації
- •10, Системи захисту від несанкціонованого доступу
- •11. Аутентифікація електронних даних: імітоприкладка, електронний цифровий підпис
- •3. Проверка подписи
- •1. Генерация ключей
- •2. Подписание документа
- •3. Проверка подписи
- •12. Системи ідентифікації та аутентифікації користувачів
- •13. Взаємна аутентифікація користувачів
- •1. «Запрос-ответ»
- •2. «Временной штемпель»
- •3. Процедура рукопожатия
- •4. Протокол аутентификации с нулевым разглашением знаний
- •14. Парольная система. Требования к паролям.
- •15. Захист від віддалених мережевих атак
- •27. Перетворення спектра при дискретизації сигналів. Теорема Котельникова
- •28. Швидке перетворення Фур'є з проріджуванням за часом. Структурна схема "метелика" з проріджуванням за часом.
- •29. Поняття цифрового фільтра. Рекурсивні та нерекурсивні фільтри. Чотири основні форми реалізації фільтрів.
- •30. Операції над зображеннями. Поняття околу (4-точечний, 8-точечний окіл). Вікно, опорна точка вікна.
- •31. Лінійна фільтрація зображень. Рівняння лінійної фільтрації
- •7 Группа
- •2 За допомогою методики розрахунка конфігурації мережі Ethernet, підтвердіть правило 4-х хабів.
- •8 Наведіть обмеження для мереж, що побудовані на основі комутаторів
- •11 Яку максимальну кількість підмереж можливо організувати для мережі класа с? Приведіть значення маски
- •20 Проаналізуйте можливості та характеристики сучасних принтерів
- •21 Проведіть логічне тестування і відновлення інформації на гнучкому магнітному диску
- •22 Структура та принцип роботи сучасного модема, блок-схема передавача та приймача
- •23 Реалізація функцій скремблювання та ехоподавлення в сучасних модемах
- •24 Сучасні жорсткі диски. Проаналізуйте їх характеристики
- •25 Сучасні сканери, Проаналізуйте їх функції та характеристики
- •26 Джерела безперервного живлення. Проаналізуйте їх основні характеристики
- •27 Дайте визначення та наведіть робочі формули основних показників надійності. Приведіть та роз'ясніть графік інтенсивності відмов для обчислювальних пристроїв.
- •28 Приведіть формулу ймовірності безвідмовної роботи Pc(t) системи з навантаженим загальним резервом. Приведіть графік залежності нароботки до відказу від кратності резерву.
- •17 Розробіть на мові асемблер програму для обчислення суми чисел масиву з 10 елементів типу байт у процедурі з передаванням аргументів через регістри.
- •18 Розробіть на мові асемблер фрагмент програми, в якій знаходиться максимальний елемент масиву з 10 чисел типу слово (з використанням команди jcxz).
- •19 Розробіть на мові асемблер фрагмент програми для обчислення номеру мінімального елементу в масиві з 10 чисел типу слово (за допомогою команди loop)
- •20 Розробіть на мові асемблер фрагмент програми, що порівнює значення двох змінних введених з клавіатури й відображає результат у вигляді: рівні або нерівні.
- •21 Розробіть на мові асемблер фрагмент програми, в якій додаються та множаться два байтові числа, визначається парний чи непарний результат суми та дво- чи чотирьохбайтовий результат добутку.
- •26 Приведіть методи підвищення ефективності роботи з жорстким диском по переміщенню голівок
- •31 Проаналізуйте структуру драйверу ms dos. Його частини. Завантаження драйверу та робота з ним.
- •33 Наведіть характеристики режимів відеосистеми. Характеристики, які не змінюються, які змінюються з використанням фізичних методів. Характеристики, які змінюються програмно.
- •34 Проаналізувати методи створення розділів диску. Скільки розділів та логічних дисків можливо встановити на одному фізичному диску?
Int 21h ;вызов прерывания с номером 21h
main endp ;конец процедуры main
end main ;конец программы с точкой входа main
Обязательным параметром директивы MODEL является модель памяти. Этот параметр определяет модель сегментации памяти для программного модуля. Предполагается, что программный модуль может иметь только определенные типы сегментов, которые определяются упомянутыми нами ранее упрощенными директивами описания сегменто . Эти директивы приведены в табл. 3.
Упрощенные директивы определения сегмента
Формат директивы (режим MASM) |
Формат директивы (режим IDEAL) |
Назначение |
.CODE [имя] |
CODESEG[имя] |
Начало или продолжение сегмента кода |
.DATA |
DATASEG |
Начало или продолжение сегмента инициализированных данных. Также используется для определения данных типа near |
.CONST |
CONST |
Начало или продолжение сегмента постоянных данных (констант) модуля |
.DATA? |
UDATASEG |
Начало или продолжение сегмента неинициализированных данных. Также используется для определения данных типа near |
.STACK [размер] |
STACK [размер] |
Начало или продолжение сегмента стека модуля. Параметр [размер] задает размер стека |
.FARDATA [имя] |
FARDATA [имя] |
Начало или продолжение сегмента инициализированных данных типа far |
.FARDATA? [имя] |
UFARDATA [имя] |
Начало или продолжение сегмента неинициализированных данных типа far |
Наличие в некоторых директивах параметра [имя] говорит о том, что возможно определение нескольких сегментов этого типа.
При использовании директивы MODEL транслятор делает доступными несколько идентификаторов, к которым можно обращаться во время работы программы, с тем, чтобы получить информацию о тех или иных характеристиках данной модели памяти Перечислим эти идентификаторы и их значения
Идентификаторы, создаваемые директивой MODEL
Имя идентификатора |
Значение переменной |
@code |
Физический адрес сегмента кода |
@data |
Физический адрес сегмента данных типа near |
@fardata |
Физический адрес сегмента данных типа far |
@fardata? |
Физический адрес сегмента неинициализированных данных типа far |
@curseg |
Физический адрес сегмента неинициализированных данных типа far |
@stack |
Физический адрес сегмента стека |
Операнды директивы MODEL используют для задания модели памяти, которая определяет набор сегментов программы, размеры сегментов данных и кода, способ связывания сегментов и сегментных регистров
Модели памяти
Модель |
Тип кода |
Тип данных |
Назначение модели |
TINY |
near |
near |
Код и данные объединены в одну группу с именем DGROUP. Используется для создания программ формата .com. |
SMALL |
near |
near |
Код занимает один сегмент, данные объединены в одну группу с именем DGROUP. Эту модель обычно используют для большинства программ на ассемблере |
MEDIUM |
far |
near |
Код занимает несколько сегментов, по одному на каждый объединяемый программный модуль. Все ссылки на передачу управления — типа far. Данные объединены в одной группе; все ссылки на них — типа near |
COMPACT |
near |
far |
Код в одном сегменте; ссылка на данные — типа far |
LARGE |
far |
far |
Код в нескольких сегментах, по одному на каждый объединяемый программный модуль |
Параметр модификатор директивы MODEL позволяет уточнить некоторые особенности использования выбранной модели памяти
27 Асемблер. Визначення даних та директиви опису даних .(цілі числа без знаку; цілі числа зі знаком; символи й рядки символів; адреси, константи), оператор завдання типу й операції зміни розмірності числа. (оператор ptr; операції cbw, cwd)
В общем случае под целое число можно отвести любое число байтов, однако система команд процессора i8086 поддерживает числа размером в байт, слово и двойное слово.
Различаются целые числа без знака и знаковые целые числа. В ячейках одного и того же размера можно представить больший диапазон беззнаковых чисел, чем неотрицательных знаковых чисел.
Целые числа без знака могут быть представлены в виде байта, слова или двойного слова в зависимости от их размера. В виде байта представляются целые от 0 до 255 (=28-1), в виде слова - целые от 0 до 65535 (=216-1), в виде двойного слова - целые от 0 до 4 294 967 295 (=232-1). Числа записываются в двоичной системе счисления, занимая все разряды ячейки.
Следует сразу понять особенности хранения слов и двойных слов в памяти компьютера. Числа размером в слово хранятся в памяти в "перевернутом" виде: младшие (правые) 8 битов числа размещаются в первом байте слова, а старшие 8 битов - во втором байте (в 16-ричной системе: две правые цифры - в первом байте, две левые цифры - во втором байте). Аналогично хранятся и числа в формате двойного слова. В первом его байте размещаются младшие 8 битов числа, во втором байте - предыдущие 8 битов и т.д.
В первом слове двойного слова размещаются младшие (правые) 16 битов числа, а во втором слове - старшие 16 битов, причем в каждом из этих двух слов в свою очередь используется "перевернутое" представление.
Целые числа со знаком также представляются в виде байта, слова и двойного слова. В виде байта записываются числа от -128 до 127, в виде слова - числа от -32768 до 32767, а в виде двойного слова - числа от -2147483648 до 2147483647. При этом числа записываются в дополнительном коде: неотрицательное число записывается так же, как и беззнаковое число (т.е. в прямом коде), а отрицательное число -х представляется беззнаковым числом 28-х (для байтов), 216-х (для слов) или 232-х (для двойных слов). Например, дополнительным кодом числа -10 является байт F6h (256-10), слово FFF6h или двойное слово FFFFFFF6h. Таким образом самый левый бит интерпретируется как знаковый, если он равен 1, то число считается отрицательным, если 0 - положительным. Если знаковое целое число формата байт содержит единицу только в знаковом разряде, то оно интерпретируется как -128. Аналогично для слова это будет -32768, для двойного слова -2147483648.
Знаковые числа размером в слово и двойное слово записываются в памяти также в "перевернутом" виде и знаковый бит оказывается в последнем байте ячейки.
Символы и строки. На символ отводится один байт памяти, в который записывается код символа - целое от 0 до 255. В IBM-совместимых компьютерах используется система кодировки ASCII
Некоторые особенности этой системы кодировки:
-
код пробела меньше кода любого буквенного символа, цифры и других графически представимых символов;
-
коды цифр упорядочены по величине цифр и не содержат пропусков –это от 30h, до 39h;
-
коды больших и малых латинских и букв упорядочены согласно алфавиту и не содержат пропусков;
Строка - это последовательность символов, размещается в соседних байтах памяти, код первого символа строки записывается в первом байте, код второго символа - во втором байте и т.д. Адресом строки считается адрес ее первого байта.
Представление адресов. Адрес - это порядковый номер ячейки памяти, т.е. неотрицательное целое число, поэтому в общем случае адреса представляются так же, как и беззнаковые числа. Часто под адресом понимается 16-битовое смещение (offset) - адрес ячейки, отсчитанный от начала сегмента (области) памяти, которому принадлежит эта ячейка. В этом случае под адрес отводится слово памяти и как число он записывается в памяти в "перевернутом" виде.
В другом случае под адресом понимается 20-битовый абсолютный адрес некоторой ячейки памяти. Такой адрес задается как пара сегмент : смещение, где сегмент (segment) - это первые 16 битов начального адреса сегмента памяти, которому принадлежит ячейка, а смещение - 16-битовый адрес этой ячейки, отсчитанный от начала данного сегмента памяти. Абсолютный адрес образуется как сегмент*16+смещение. Такая пара записывается в памяти виде двойного слова: в первом слове размещается смещение, а во втором -сегмент (перевернутый вид), причем каждое из этих слов в свою очередь представлено в перевернутом виде.
Постоянные или непосредственные операнды — число, строка, имя или выражение, имеющие некоторое фиксированное значение. Имя не должно быть перемещаемым, то есть зависеть от адреса загрузки программы в память. К примеру, оно может быть определено операторами equ или = .
num equ 5
imd=num-2
mov al,num ;эквивалентно mov al,5
;5 здесь непосредственный операнд
add [si],imd ; imd=3 - непосредственный операнд
mov al,5 ;5 - непосредственный операнд
В данном фрагменте определяются две константы, которые затем используются в качестве непосредственных операндов в командах пересылки mov и сложения add.
Директивы определения данных. Для резервирования ячеек памяти для констант и переменных и их инициализации в языке ассемблера используются директивы определения данных - с названиями DB (определяет данные размером в байт), DW (определяет данные размером в слово) и DD (определяет данные размером в двойное слово).
Директивы, - это предложения программы, с помощью которых программист дает дополнительные указания ассемблеру или сообщает ему какую-то информацию, которые необходимы для задания режима работы и типа применяемой памяти, размещения программы, стека и данных в памяти, резервирования и инициализации ячеек памяти, организации связи основной программы с процедурами и т.п.
С помощью директив DB, DW и DD могут описываться одна или несколько переменных, присваивается им имена. По этой директиве ассемблер формирует машинное представление значений переменных и записывает их в очередные ячейки памяти. Адреса этих ячеек становятся значениями имен переменных, т.е. все вхождения имени в программу ассемблер будет заменять на соответствующий этому имени адрес. Имена, указанные в директивах DB, DW и DD, называются именами переменных. Примеры:
A DB 162 ;Резервирование памяти для данных размером 1 байт
;занести в нее число 162 и дать ей имя А
С DW -1 ;Выделить память размером 2 байта,занести -1
Е DD -1 ;Двойное слово
Данные в директиве DB могут описываться как числа, так и как символы: указывается либо код символа (целое от 0 до 255), либо сам символ в кавычках (одинарных или двойных); в последнем случае ассемблер сам заменит символ на его код. Например, следующие директивы эквивалентны (2А - код знака * в ASCII):
starDB 02Ah
starDB ' * '
starDB " * "
Если адрес необходимо представить как данные, то это делается так:
starDB ' * '
adr_star DW star
В этой директиве отведено слово памяти, которому дается имя adr_atar и в которое запишется адрес (смещение, эффективный адрес), соответствующий имени star. Если для аналогичной цели используется директива DD:
fadr_star DD star
ассемблер автоматически добавит к смещению имени его сегмент и запишет смещение в первую половину двойного слова, а сегмент - во вторую половину.
По любой из директив DB, DW и DD можно описать переменную, т.е. отвести ячейку, не дав ей начального значения. В этом случае в правой части директивы указывается вопросительный знак:
Perem_l DW ? ;выделить слово, присвоить ему имя Perem_l,
;ничего в это слово не записывать
В одной директиве можно описать сразу несколько констант и/или переменных одного и того же размера, для чего их надо перечислить через запятую. Они размещаются в соседних ячейках памяти. Пример:
betta DB 200,-5,10h,?,'F'
Имя, указанное в директиве, является именем первого из значений. Для ссылок на остальные в MASM используются выражения вида <имя>+<целое>, например, для доступа к байту с числом -5 используется выражение betta+1, для доступа к байту с значением 10h - выражение betta+2 и т.д. Как вы заметили индексация начинается с нуля. Если в директиве DB перечислены
только символы, например:
str DB 'a', 'b', 'с'
тогда эту директиву можно записать короче, заключив все эти символы в одни кавычки:
str DB 'abc' или str DB "abc"
Если в директиве описывается несколько одинаковых констант (переменных), то можно воспользоваться оператором повторения DUP.Например
mas db 5 dup (4)
что эквивалентно директиве
mas db 4,4,4,4,4
Другой пример:
arr DW 3 dup (?),-50,2 dup (7)
что эквивалентно директиве
arr DW ?,?,?,-50,7,7
В ассемблере имеются директивы EQU и =, с помощью которых можно определить константы. Директива EQU присваивает имени значение, которое определяется как результат целочисленного выражения. Директива EQU аналогична директиве #define в языке Си. Значение, присвоенное имени с помощью директивы EQU, нельзя в последствии изменить. Пример:
A equ 10
В equ 21/3
С equ "abcdef"
Директива "=" похожа на директиву EQU , но значение, присвоенное имени должно быть целым числом и его можно переопределять. Например:
alfa=20
alfa=alfa+l
Для ссылок на текущую ячейку используется обозначение $, которое является обозначением счетчика текущего адреса. Пример:
mas db "assembler"
mas_len=$-mas
В этом примере значением имени mas_len будет длина строки mas, т.е. число 9.
Преобразование байта в слово/слова в двойное слово CBW/CWDE (Convert Byte to Word/Convert Word to Double Word Extended)
Применяется для расширения операнда со знаком. Выполнение команды не влияет на флаги.
Алгоритм работы:
cbw –при работе команда использует только регистры al и ax:
-
если знаковый бит al=0, то ah=00h;
-
если знаковый бит al=1, то ah=0ffh.
cwde – при работе команда использует только регистры ax и eax:
-
если знаковый бит ax=0, то установить старшее слово eax=0000h;
-
если знаковый бит ax=1, то установить старшее слово eax=0ffffh.
Данные команды используются для приведения операндов к нужной размерности с учетом знака. Такая необходимость может, в частности, возникнуть при программировании арифметических операций.
.386 ;только для cwde, cwd была для i8086
mov ebx,10fecd23h
mov ax,-3 ;ax=1111 1111 1111 1101
cwde ;eax=1111 1111 1111 1111 1111 1111 1111 1101
add eax,ebx
Преобразование слова в двойное слово CWD (Convert Word to Double word)
Назначение: расширение слова со знаком до размера двойного слова со знаком.
Алгоритм работы: копирование значения старшего бита регистра ax во все биты регистра dx. выполнение команды не влияет на флаги
Команда cwd используется для расширения значения знакового бита в регистре ax на биты регистра dx. Данную операцию, в частности, можно использовать для подготовки к операции деления, для которой размер делимого должен быть в два раза больше размера делителя, либо для приведения операндов к одной размерности в командах умножения, сложения, вычитания.
mov ax,25
...
mov bx,4
cwd
div bx
Оператор переопределения типа PTR применяется для переопределения или уточнения типа метки или переменной, определяемых выражением Тип может принимать одно из следующих значений: byte, word, dword, qword, tbyte, near, far .
d_wrd dd 0
...
mov al,byte ptr d_wrd+1 ;пересылка второго байта из двойного слова
Поясним этот фрагмент программы. Переменная d_wrd имеет тип двойного слова. Что делать, если возникнет необходимость обращения не ко всей переменной, а только к одному из входящих в нее байтов (например, ко второму)? Если попытаться сделать это командой mov al,d_wrd+1, то транслятор выдаст сообщение о несовпадении типов операндов. Оператор ptr позволяет непосредственно в команде переопределить тип и выполнить команду.
Синтаксис оператора переопределения типа