DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Програмування вводу та виводу на асемблері. Створення COM-файлів

Інформація про навчальний заклад

ВУЗ:
Національний технічний університет України Київський політехнічний інститут
Інститут:
ООП
Факультет:
Комп’ютерні науки
Кафедра:
Кафедра обчислювальної техніки

Інформація про роботу

Рік:
2013
Тип роботи:
Лабораторна робота
Предмет:
Системне програмування
Група:
КН-21
Коротко про документ

Про що ця робота

У роботі розглядаються особливості створення виконуваних COM-файлів на мові асемблер. Наведено практичний приклад реалізації виводу символів за допомогою псевдографіки.

У роботі розглядаються

  • COM-файли
  • Сегментація пам'яті
  • Псевдографіка
  • Ввід-вивід даних
  • Переривання DOS
  • ASCII-символи

Зміст і розділи

  1. Мета роботи
  2. Структура програми типу .com
  3. Завдання
  4. Текст програми
Для кого:Студенти технічних спеціальностей
Викладачі:Викладач кафедри

Ключові поняття

COM-файлсегментPSPorg 100hпсевдографікаASCIIперериваннятекст програми

Частина тексту файла (без зображень, графіків і формул):

Мета: оволодіння навичками створення *.COM – файлів та навчитися реалізовувати ввід з клавіатури та вивід на екран символьних даних Програма типу .COM вміщує лише один сегмент, де розташовані усі компоненти програми: - префікс програмного сегмента; - програмний код; - дані; - стек. Структура типової програми має вигляд: tіtle Програма типу .COM text segment 'code' assume CS:text, DS:text, ES:text, SS:text org 100h myproc proc ... ; текст прграми myproc endp ... ; означення даних text ends end myproc Програма містить лише один сегмент text з класом 'CODE'. Оператор ASSUME затверджує, що усі чотири сегментні регістри вказують на цей єдиний сегмент. Оператор ORG 100h резервує 256 байтів для PSP (префікса програмного сегмента). Наповнювати PSP буде система. У програмі нема потреби ініціалізувати регістр DS, бо його, як всі інші сегментні регістри, ініціалізує система. Система у випадку .COM - файлу завжди задає ІP=100h. Через це негайно за оператором ORG 100h повинен знаходитись перший виконуваний рядок програми. Якщо власні дані бажано розмістити на початку програми, тоді першою командою програми має бути jmp через ці дані. Образ пам'яті програми типу .COM наведено нижче  До покажчика стека автоматично записується число FFFEh. Незалежно від реального розміру програми їй надається 64 K адресного простору, тобто один і тільки один сегмент. Стек зростає в напрямку зменшення адрес та за умови поганого планування програмістом може "наїхати (тобто затерти)" на власні дані та програму. Розрізняють два стилі оформлення ( запису ) асемблерних програм - із стандартними та спрощеними сегментними директивами. Наступний приклад ілюструє застосування стандартних сегментних директив Tекст програми Завдання: за допомогою псевдографіки вивести зображення символу «ρ». Для вирішення поставленої задачі, слід визначити коди ASCII псевдографічних символів. Для цього необхідно скористатися повною таблицею ASCII символів, приведеною вище. З таблиці видно, що псевдографічні символи розташовані між 176 і 223 кодом. Оберемо для створення границь зображення заданого символу заповнений прямокутник (код 219), а для наповнення – розріджений прямокутник (код 176). Для наочності, утворимо зображення заданого символу «О» безпосередньо при описі даних. Для цього можна скористатися або ASCII кодами, або комбінацією клавіш Alt+ASCII код, яка дозволяє в текстовому редакторі відобразити сам символ. Таким чином, наведемо програму, що рисує зображення символу «О» за допомогою псевдографіки. Текст програми міститься : Examples\laba2.asm ; Вивід за допомогою псевдографіки. model small .code org 100h start: jmp prog Simbol db 60 dup (32),10,13 db 21 dup (32),20 dup(219),21 dup (32),13,10 db 19 dup (32),2 dup(219),5 dup(176),2 dup(219),4 dup(32),2 dup(219),7 dup(176),2 dup(219),17 dup(32), 10,13 db 17 dup (32),2 dup(219),5 dup(176),2 dup(219),8 dup(32),2 dup(219),7 dup(176),2 dup(219),15 dup(32), 10,13 db 15 dup (32),2 dup(219),5 dup(176),2 dup(219),12 dup(32),2 dup(219),7 dup(176),2 dup(219),13 dup(32), 10,13 db 13 dup (32),2 dup(219),6 dup(176),2 dup(219),15 dup(32),2 dup(219),7 dup(176),2 dup(219),11 dup(32), 10,13 db 12 dup (32),1 dup(219),7 dup(176),2 dup(219),17 dup(32),2 dup(219),7 dup(176),2 dup(219),12 dup(32), 10,13 db 12 dup (32),1 dup(219),7 dup(176),2 dup(219),17 dup(32),2 dup(219),7 dup(176),2 dup(219),11 dup(32), 10,13 db 12 dup (32),1 dup(219),7 dup(176),2 dup(219),16 dup(32),2 dup(219),7 dup(176),2 dup(219),13 dup(32), 10,13 db 12 dup (32),1 dup(219),7 dup(176),2 dup(219),14 dup(32),2 dup(219),7 dup(176),2 dup(219),15 dup(32), 10,13 db 12 dup (32),1 dup(219),7 dup(176),4 dup(219),10 dup(32),2 dup(219),7 dup(176),2 dup(219),17 dup(32), 10,13 db 12 dup (32),1 dup(219),7 dup(176),7 dup(219),5 dup(32),2 dup(219),4 dup(176),5 dup(219),17 dup(32), 10,13 db 12 dup (32),1 dup(219),7 dup(176),2 dup(219),2 dup(32),14 dup(219),23 dup(32), 10,13 db 12 dup (32),1 dup(219),7 dup(176),2 dup(219), 10,13 db 12 dup (32),1 dup(219),7 dup(176),2 dup(219), 10,13 db 12 dup (32),1 dup(219),7 dup(176),2 dup(219), 10,13 db 12 dup (32),1 dup(219),7 dup(176),2 dup(219), 10,13 db 11 dup (32),2 dup(219),5 dup(176),2 dup(219), 10,13 db 8 dup (32),12 dup(219),40 dup(32), 10,13 db 60 dup (32),10,13,'$' prog: mov ax,0600h mov cx,0000 mov bh,07 mov dx,184fh int 10h mov al,00 mov ah, 09 mov dx, offset Simbol int 21h mov ah, 7 int 21h mov ax,0600h mov cx,0000 mov bh,07 mov dx,184fh int 10h mov al,0 mov ah, 4ch int21h end start Зображення заданого варіантом символу.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!