Содержание
- 2. Будова процесора РЕГІСТРИ ЗАГАЛЬНОГО ПРИЗНАЧЕННЯ Процесор 8086 має 8 регістрів загального призначення, кожен регістр має ім'я:
- 3. SI - регістр - індекс джерела. DI - регістр - індекс призначення. BP – вказівник бази.
- 4. СЕГМЕНТНІ РЕГІСТРИ • CS - вказує на сегмент, що містить початкову адресу поточної програми. • DS
- 5. Адреса, сформована за допомогою двох регістрів, називається реальною адресою. За замовчуванням регістри BX, SI і DI
- 6. Доступ до пам’яті Для доступу до пам'яті можна використовувати наступні чотири регістри: BX, SI, DI, BP.
- 7. Підстановка може бути безпосереднім значенням або зміщенням змінної, або навіть і тим і іншим. Вона перетворюється
- 8. Вы можете формировать все имеющие силу комбинации, взяв по одному пункту из каждого столбца, либо пропустить
- 9. Emu8086 підтримує короткі префікси: b. - для BYTE PTR w. - для WORD PTR іноді компілятор
- 10. Команда MOV Копіює другий операнд (джерело) в перший операнд (приймач). Операнд-джерело може бути безпосереднім значенням, регістром
- 12. Команда MOV не меже використовуватися для установки значень регістрів CS і IP. Ви можете скопіювати і
- 13. Ви повинні побачити щось подібне, коли програма закінчить свою роботу: Фактично, вищеописана програма записує дані безпосередньо
- 14. Змінні Змінні зберігаються в пам'яті за певними адресами. Програмісту простіше мати справу з іменами змінних, ніж
- 15. Команда MOV також використовується для копіювання значення з джерела в приймач. Давайте розглянемо ще один приклад
- 16. На малюнку ви можете помітити команди, схожі на ті, що використовуються в нашому прикладі. Тільки змінні
- 17. Зсув змінної var2 - це 0109h, а повна адреса - 0B56: 0109. Ця змінна має тип
- 18. Можна навіть написати програму, використовуючи тільки директиву DB: Якщо скопіювати вищенаведений код в редактор коду Emu8086
- 19. ORG 100h - це директива компілятора (вона вказує компілятору як обробляти вихідний код). Ця директива дуже
- 20. Масиви Масив можна розглядати як ланцюжок змінних. Текстовий рядок - це приклад масиву байтів, в якому
- 21. Можна також використовувати будь-якої з регістрів BX, SI, DI, BP, наприклад: MOV SI, 3 MOV AL,
- 22. Отримання адреси змінної Є така команда LEA (Load Effective Address) і альтернативний оператор OFFSET. Як OFFSET
- 23. Другий приклад, який використовує OFFSET замість LEA: Обидва приклади функціонально ідентичні. Ці рядки: LEA BX, VAR1
- 24. Константи Константи подібні змінним, але вони існують до того, як ваша програма відкомпільована. Після визначення константи
- 25. Щоб спостерігати масиви, потрібна клацнути по змінній і встановити властивість Elements - розмір масиву. У Ассемблері
- 26. Вирази перетворюються автоматично, наприклад: якщо введено цей вираз: 5 + 2 воно буде перетворено в 7
- 27. Переривання Переривання можна розглядати як номер функції. Ці функції роблять програмування більш легким - замість написання
- 28. Наступний приклад використовує переривання INT 10h і підфункцію 0Eh, щоб надрукувати повідомлення "Hello!". Ця функція виводить
- 29. Бібліотека загальних функцій - emu8086.inc Щоб полегшити програмування, є кілька загальних функцій, які можна включати в
- 30. Щоб використовувати будь-якої з вищеописаних макросів, просто надрукуйте його ім'я в потрібному місці вашого коду і,
- 31. PRINT_STRING - процедура для друку рядка з нульовим закінченням з поточної позиції курсора. Отримує адреса рядка
- 32. SCAN_NUM - процедура, яка отримує багатозначне число ІЗ ЗНАКОМ з клавіатури, і записує результат в регістр
- 33. Щоб використовувати будь-яку з вищеописаних процедур, ви повинні спочатку оголосити функцію в нижній частині вашого файлу
- 35. Скачать презентацию