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

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

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
КН
Кафедра:
Кафедра ЕПМС

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

Рік:
2014
Тип роботи:
Лабораторна робота
Предмет:
Засоби системного програмування
Варіант:
7

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра ЕОМ Лабораторна робота №2 з курсу: «Засоби системного прграмування» на тему: «Програмування вводу та виводу на асемблері. Створення *.COM – файлів.» Варіант: №7 Символ: L Львів 2014 МЕТА РОБОТИ: Оволодіти навичками створення *.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 адресного простору, тобто один і тільки один сегмент. Стек зростає в напрямку зменшення адрес та за умови поганого планування програмістом може "наїхати (тобто затерти)" на власні дані та програму. Розрізняють два стилі оформлення ( запису ) асемблерних програм - із стандартними та спрощеними сегментними директивами. Наступний приклад ілюструє застосування стандартних сегментних директив: CODE SEGMENT WORD 'CODE' ORG 100h ASSUME cs:CODE, ds:CODE, ss:CODE, es:CODE ProgramStart: Jmp cont HelloMessage db 'Hello, world', 13, 10, '$' cont: mov dx,OFFSET HelloMessage ;DS:DX poіnts to the HelloMessage mov ah,09 ;DOS strіng prіnt functіon іnt 21h ;prіnt the HelloMessage mov ah,4Ch ;DOS termіnate program functіon іnt 21h ;end of the program CODE ENDS END ProgramStart ;Нижче наведено приклад із спрощеними сегментними директивами. .MODEL TІNY .CODE org 100h start: jmp prog ;власні дані, що потребують перестрибування HelloMessage DB 'Hello, world', 13, 10, '$' prog: mov ah,09 mov dx,OFFSET HelloMessage іnt 21h mov ah,4ch іnt 21h END start Система Turbo-Assembler виробляє .COM-файл в наступний спосіб: C:\> tasm fіlename.asm <Enter> Результат - файл fіlename.obj. Необов'язкові параметри /l або /la призводять до додаткової генерації файлу fіlename.lst, що міститть лістинг асемблювання програми. C:\> tlіnk/t fіlename.obj <Enter> Результат - файл fіlename.com, що вже можна запускати. ЗАВДАННЯ: 1. Створити програму типу .COM, яка в текстовому режимі виводить за допомогою псевдографіки зображення заданого варіантом символу. 2. Перевірити роботу створеної програми і продемонструвати її виконання. 3. Скласти звіт про виконану роботу (з приведенням тексту програми). КОД ПРОГРАМИ: ; Вивід за допомогою псевдографіки. dosseg .model small .code org 100h start: jmp prog Simbol db ' ',10,13 db ' ▀███████████▀ ',10,13 db ' ██░░░░░░░██ ',10,13 db ' ██░░░░░░░██ ',10,13 db ' ██░░░░░░░██ ',10,13 db ' ██░░░░░░░██ ',10,13 db ' ██░░░░░░░██ ',10,13 db ' ██░░░░░░░██ ',10,13 db ' ██░░░░░░░██ ',10,13 db ' ██░░░░░░░██ ',10,13 db ' ██░░░░░░░██ ',10,13 db ' ██░░░░░░░██ ',10,13 db ' ██░░░░░░░██ ',10,13 db ' ██░░░░░░░██ ▄ ',10,13 db ' ██░░░░░░░█████████████████ ',10,13 db ' ██░░░░░░░░░░░░░░░░░░░░░░██ ',10,13 db ' ██░░░░░░░░░░░░░░░░░░░░░░██ ',10,13 db ' ██████████████████████████ ',10,13 db ' ▀ ',10,13 db ' ',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 int 21h end start ;Та опис даних, що необхідно вивести, засобами мови Assembler, використовуючи безпосередні коди бажаних псевдографічних символів. . Тоді за міткою Simbol, буде: Simbol db 60 dup (32),10,13 db 19 dup (32),2 dup(220),11 dup(219),2 dup(220),27 dup (32),13,10 db 20 dup (32),2 dup(219),7 dup(176),2 dup(219),28 dup(32),10,13 db 5 dup(db 19 dup (32),2 dup(219),7 dup(176),2 dup(219), 29 dup(32),10,13) db 5 dup(db 18 dup (32),2 dup(219),7 dup(176),2 dup(219), 30 dup(32),10,13) db 17 dup (32),2 dup(219),7 dup(176),2 dup(219),14 dup (32),2 dup(220),16 dup(32),10,13 db 17 dup (32),2 dup(219),7 dup(176),17 dup(219),16 dup(32),10,13 db 17 dup (32),2 dup(219),22 dup(176),2 dup(219),16 dup(32),10,13 db 16 dup (32),2 dup(219),22 dup(176),2 dup(219),17 dup(32),10,13 db 16 dup (32),26 dup(219), 17 dup(32),10,13 db 60 dup (32),10,13,'$' ; Решта коду програми залишається без змін. СКРІНШОТ ВИКОНАННЯ ПРОГРАМИ: / Рис. 1. Результатом виконання приведеної програми: вивід у текстовому режимі зображення символу «L» за допомогою псевдографіки. ВИСНОВОК: Під час виконання даної лабораторної роботи я оволодів навичками створення *.COM – файлів та навчився реалізовувати ввід з клавіатури та вивід на екран символьних даних.
Антиботан аватар за замовчуванням

29.05.2014 21:05-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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