1745
.pdfМинистерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования
«Нижегородский государственный архитектурно-строительный университет»
А. В. Пичугин
Языки программирования низкого уровня
Учебно-методическое пособие
по выполнению лабораторных работ для обучающихся по дисциплине «Языки программирования низкого уровня»
по направлению подготовки 09.03.02 Информационные системы и технологии, без профиля
Нижний Новгород
2016
Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования
«Нижегородский государственный архитектурно-строительный университет»
А. В. Пичугин
Языки программирования низкого уровня
Учебно-методическое пособие
по выполнению лабораторных работ для обучающихся по дисциплине «Языки программирования низкого уровня»
по направлению подготовки 09.03.02 Информационные системы и технологии, без профиля
Нижний Новгород ННГАСУ
2016
УДК 681.3 (075)
Пичугин. А. В/ Языки программирования низкого уровня[Электронный ресурс]: учеб. – метод. пос./А. В. Пичугин; Нижегор. гос. архитектур. – строит. ун-т – Н. Новгород: ННГАСУ, 2016. - ___ с. 1 электрон.опт.диск (CD-R)
В методических указаниях представлены задания к выполнению лабораторных работ в среде разработки TASMв рамках курса «Языки программирования низкого уровня».
А. В. ПичугинННГАСУ. 2016.
Введение
Само слово ассемблер (assembler) переводится с английского как «сборщик». На самом деле так называется программа-транслятор, принимающая на входе текст, содержащий условные обозначения машинных команд, удобные для человека, и переводящая эти обозначения в последовательность соответствующих кодов машинных команд, понятных процессору. В отличие от машинных команд, их условные обозначения, называемые также мнемониками, запомнить сравнительно легко, так как они представляют собой сокращения от английских слов. Язык условных обозначений и называется языком ассемблера.
Таким образом, ассемблер — этомашинно ориентированный язык программирования, позволяющий работать с компьютером напрямую, один на один. Отсюда и его полная формулировка — язык программирования низкого уровня второго поколения (после машинного кода).
Поскольку ассемблер всего лишь программа, написанная человеком, ничто не мешает другому программисту написать свой собственный ассемблер, что часто и происходит. На самом деле не так уж важно, язык какого именно ассемблера изучать. Главное — понять сам принцип работы на уровне команд процессора, и тогда не составит труда освоить не только другой ассемблер, но и любой другой процессор со своим набором команд.
ЛАБОРАТОРНАЯ РАБОТА № 1
Тема: Регистры процессора Intel, способы адресации
Цель работы: Знакомство со средой TASM. Познакомится со способами адресации. Создать простейшую программу на языке assembler.
Лабораторная работа состоит из шести последовательно выполняемых заданий.
1.Создать пустой проект DOS – приложения в среде TASM.
2.Написать последовательную программу, выводящую на экран сообщение: ―HelloWorld!‖.
3.Создатьеще одну строку, которую назовем Mess2. Затем, начиная с определѐнной строки , вставим в нашу программу команды.
3. Модифицировать программу из Задания 3 так, чтобычто бы обеспечивалось прерывание.
4. Запустить программу на ПК.
ЛАБОРАТОРНАЯ РАБОТА № 2
Тема: Типы данных, регистры, базовая арифметика.
Цель работы: Изучениеосновных типов, данных и их различий, специфики регистров и основных правил базовой арифметики.
Лабораторная работа состоит из четырѐх последовательно выполняемых заданий.
1.Написать программу, с использованием операторов сложения и вычитания.
2.Написать программу котораявыводит на экран сообщение и ждет, когда пользователь нажмет любую клавишу.
3.Модифицировать программу, написанную в Задании 2 так, чтобы она возвращалась в DOS.
4.вывести результат.
ЛАБОРАТОРНАЯ РАБОТА № 3
Тема: Сегменты, модели памяти и упрощенные директивы определения сегментов.
Цель работы: Изучение принципа сегментации памяти в реальном режиме.
Лабораторная работа состоит из трѐх последовательно выполняемых заданий.
1. Написать программу для сегментации памяти, на основе регистров: ds, es,
ss.
2. Написать программу, выводящую рисунок в определѐнном месте экрана. 3.Высчитать адрес строки вывода.
ЛАБОРАТОРНАЯ РАБОТА № 4
Тема: Вывод на экран в текстовом режиме, ввод с клавиатуры, графические режимы.
Цель работы:Изучение способоввводапопрерываниюINT 21H и16H, изучениепроцедурвыводапопрерываниюINT 21H, ввод/выводпопрерываниюINT 10H, написаниефрагментовпрограммввода/вывода.
Лабораторная работа состоит из четырѐх последовательно выполняемых заданий.
1. Вциклеввестисимволсклавиатурыивывестиегодвоичноепредставление наэкран.
2.Вциклеввестидесятичноечислосклавиатуры(ФункцияAH=2 INT21H).
Числодесятичныхразрядовот1 |
до5. |
Признакконцаввода- |
нажатиеклавиши[Ввод]. |
|
|
Преобразоватьчисловдвоичноеивывестиегодвоичноепредставлениенаэкран. 3. Вциклеввестидесятичноечислосклавиатуры(ФункцияAH=0AH INT21H).
Числодесятичныхразрядовот1 до5. Признакконцавводанажатиеклавиши[Ввод]. Преобразоватьчисловдвоичноеивывестиегодвоичноепредставлениенаэкран.
4. Вывестивтекстовомрежимепрямоугольнуюрамкунаэкран. Координаты
Левоговерхнегоиправогонижнегоуглов(0-24 и0-79) ввестисклавиатуры. СимволыдлявыводарамкикодыASCII.
ЛАБОРАТОРНАЯ РАБОТА № 5
Тема: Работа с памятью.
Цель работы: Изучение основных приѐмов работы с памятью. Работа с расширенной памятью.
Лабораторная работа состоит из трѐх последовательно выполняемых заданий.
1.Написать программу размещения файлов в памяти.
2.Разместить файлы в памяти.
3.Написать программу для обработкиклавиш <Home> и <End>.
ЛАБОРАТОРНАЯ РАБОТА № 6
Тема:Процедуры и функции. Передача параметров. Целочисленная арифметика повышенной точности.
Цель работы: Освоить модульное программированиев Assembler.
Лабораторная работа состоит из трѐх последовательно выполняемых заданий.
1.Написать программу, которая выводит на экран сообщение "Нажмите любую клавишу...", ждет нажатия клавиши, а затем выводит еще одно сообщение: "Вы успешно нажали клавишу!", ждет, пока пользователь нажмет любую клавишу, после чего завершает свою работу.
2.Вызвать два раза функцию 09h прерывания 21h и столько же функцию 10h прерывания 16h.
3.Упростить программу и вызвать подпрограмму.