Содержание
- 3. Механізм формумування фізичної адреси в реальному режимі
- 5. Розглянемо формат двооперандної команди. В першому байті записується код операції, в другому – режим адресації. Інші
- 6. Регістри кодуються таким чином:
- 7. Сегментні регістри кодуються так: Режим адресації другого операнда визначається кодами в полях MOD і R/M (register-memory).
- 8. Поле MOD визначає, що саме закодовано в полі слово R/M. Коли ж MOD = 11, це
- 9. Наприклад, для команди ADD (додати): Додати операнди в регістрах чи пам'яті Додати безпосередній операнд до регістру
- 10. Тобто, команда ADD має 3 варіанти коду і різні формати. Як видно, в форматі є лише
- 11. Поля із 6-ти бітів для кодування всіх команд не достатньо. Тому деякі команди об'єднуються в групу
- 12. Оператори Програма на асемблері складається з окремих рядків-операторів, які описують виконувані операції. Оператором може бути команда
- 13. COUNT: MOV AX,DI; переслати DI в акумулятор Наприклад:
- 14. Псевдооператори – керують роботою транслятора, а не мікропроцесора. З їх допомогою визначають сегменти і процедури (підпрограми),
- 15. Їх можна розділити на групи: Визначення ідентифікаторів; Визначення даних; Псевдооператори визначення сегменту і процедури. Псевдооператори даних
- 16. DBL_SPEED EQU 2*SPEED 1. Визначення ідентифікаторів Дозволяють присвоїти символічне ім'я виразу, константі, адресі, іншому символічному імені.
- 17. Шіснадцяткові константи – справа літера Н (2FH). Коли така константа починається з літери, то ліворуч треба
- 18. Коли комірка використовується для збереження даних, їй можна присвоїти ім'я за допомогою псевдооператорів DB, DW, DD
- 19. LAMBDA DW ? POLITE DB ‘Введіть дані знову $’ Коли значення змінних завчасно невідоме, але буде
- 20. BETA DW 15 DUP(0) или GAMA DW 3 DUP (4DUP(0)) ALPHA DW 20 DUP (?) THERE
- 21. Як зазначалося, програма може складатися з декількох сегментів: коду, даних, стеку, додаткового сегменту. Для поділу програми
- 22. В сегменті даних визначаються імена даних та резурвується пам'ять для результатів. У псевдооператора SEGMENT можуть бути
- 23. PARA — сегмент починається з адреси, що кратна 16, то остання шістнадцяткова цифра адреси повинна бути
- 24. Об'єднання визначає спосіб опрацювання сегменту при компонуванні. PRIVATE – за замовчуванням, сегмент повинен бути відділений від
- 25. STACK SEG SEGMENT PARA STACK ‘STACK’ MAS DW 20 DUP (?) STACK SEG ENDS. Клас –
- 26. Як зазначалося, процесор використовує регістр CS для адресації сегменту коду, SS – сегменту стеку, DS -
- 27. CALC PROC ....... RET CALC ENDP Сегмент коду може вміщати одну або кілька процедур. Окрема процедура
- 28. В програмі може бути кілька сегментів з однаковим іменем. Рахується, що це один сегмент, який з
- 29. A SEGMENT A1 DB 400h DUP(?) A2 DW 8 A ENDS ; B SEGMENT B1 DW
- 30. Сегменти, розміщені на межі параграфу, тобто, адреса кратна 16. Якщо А розміщено 1000h, то він займе
- 31. Значення імені сегменту являється номером, який відповідає сегменту пам'яті, тобто, перші 16 бітів початкової адреси заданого
- 32. Директива ASSUME відмічає, з якими сегметними регістрами пов'язувати сегменти. Регістри DS і ES потрібно завантажити початковими
- 33. Відносно сегменту стеку SS, навіть якщо програма і не використовує його, то створити такий сегмент в
- 34. Тому, програма на асемблері має таку структуру: Title EXAMPLE ;заголовок dat segment ; сегмент даних mas
- 35. В загальному випадку в сегменті даних можна розміщувати і команди, а в сегменті коду - дані.
- 36. MASM (Macro Assembler) - стандарт де-факто при програмуванні під Windows 9x/NT; TASM (Turbo Assembler) – стандарт
- 37. Є декілька види трансляторів асемблеру: MASM фірми Microsoft TASM фірми Borland, може працювати в режимі MASM
- 38. Наприклад: Спрощений опис сегментів Masm ; режим роботи транслятора TASM model small ; модель пам'яті .data
- 39. Спрощені директиви визначення сегменту
- 40. @ code – фізична адреса (зміщення) сегменту коду @ data – фізична адреса (зміщення) сегменту даних
- 41. Моделі пам'яті Модифікатор директиви model дозволяє визначити деякі особливості вибраної моделі пам'яті: Use 16 - 16-бітові
- 43. Скачать презентацию