- •Рабочая программа, методические указания к практическим работам
- •1. Цель и задачи дисциплины
- •1.1. Цель преподавания дисциплины
- •1.2. Задачи изучения дисциплины
- •1.3. Взаимосвязь курса с другими дисциплинами
- •2. Рабочая программа курса
- •2.1. Наименование тем лекций и их содержание
- •2.2. Темы практических работ
- •3. Методические указания к практическим работам
- •Практическая работа 1. Представление данных в памяти эвм, основы работы с ассемблером Краткие теоретические сведения и примеры
- •Контрольные вопросы и задания.
- •Задания по программированию.
- •Практическая работа 2. Пересылка данных, адресация памяти, целочисленная арифметика Краткие теоретические сведения и примеры
- •Контрольные вопросы и задания
- •Задание по программированию
- •Практическая работа 3. Условия и циклы. Краткие теоретические сведения и примеры
- •Контрольные вопросы и задания
- •Задание по программированию
- •Практическая работа 4. Процедуры в ассемблере Краткие теоретические сведения и примеры
- •Контрольные вопросы и задания
- •Задание по программированию
- •Практическая работа 5. Обработка строк и массивов в ассемблере Краткие теоретические сведения и примеры
- •Контрольные вопросы и задания
- •Задание по программированию
- •Практическая работа 6. Интерфейс ассемблера с языками высокого уровня Краткие теоретические сведения и примеры
- •Контрольные вопросы и задания
- •Задания по программированию
- •Практическая работа 7. Представление вещественных чисел в памяти эвм, работа с математическим сопроцессором Краткие теоретические сведения и примеры
- •Контрольные вопросы и задания.
- •Задания по программированию
- •Практическая работа 8. Самокорректирующиеся коды для хранения и передачи информации в вычислительных системах Краткие теоретические сведения и примеры
- •Контрольные вопросы и задания
- •Задание по программированию
- •4. Библиографический список
2.2. Темы практических работ
1. Представление данных в памяти ЭВМ, основы работы с ассемблером
2. Пересылка данных, адресация памяти, целочисленная арифметика
3. Условия и циклы
4. Процедуры в ассемблере
5. Обработка строк и массивов в ассемблере
6. Интерфейс ассемблера с языками высокого уровня
7. Представление вещественных чисел в памяти ЭВМ, работа с математическим сопроцессором
8. Самокорректирующиеся коды для хранения и передачи информации в вычислительных системах
3. Методические указания к практическим работам
В настоящее время наиболее распространены вычислительные машины с Intel-совместимыми процессорами, и для профессиональной деятельности выпускников в первую очередь требуется знание именно этой архитектуры. В связи с этим на практических работах рассматривается преимущественно архитектура IA-32.
Учитывая специфику специальности, 32-разрядная архитектура Intel рассматривается преимущественно с точки зрения программиста, при этом основное внимание уделено защищенному режиму работы процессора. Также одна из практических работ посвящена построению и использованию самокорректирующихся кодов [4], используемых в серверных модулях памяти, жестких и оптических дисках.
Хотя некоторые задания практикума выполняется без использования компьютеров, для большинства требуется персональный компьютер с процессором не ниже Pentium и 32-разрядной версией операционной системы Windows. В качестве языка программирования выбран masm версии 6 как один из наиболее распространённых ассемблеров в настоящее время, вместе с ним используются библиотеки пакета Microsoft Platform SDK.
Для проверки некоторых задач по программированию используется электронный практикум по программированию, расположенный по адресу http://atpp.vstu.edu.ru/cgi-bin/arh_problems.pl. Работа с данным практикумом уже знакома студентам 4-го курса, поэтому приведём лишь особенности отправки задач на языке ассемблера и для примера рассмотрим решение простой задачи о нахождении суммы двух целых чисел. Ниже приводится листинг программы, решающей эту задачу.
include masm32rt.inc
.data
in_fmt BYTE "%d %d", 0
out_fmt BYTE "%d", 0
var_a DWORD 1
var_b DWORD 1
.code
main PROC
invoke crt_scanf,ADDR in_fmt,ADDR var_a,ADDR var_b
mov eax, var_a
add eax, var_b
invoke crt_printf, ADDR out_fmt, eax
exit
main ENDP
end main
Обратите внимание на организацию ввода-вывода - здесь используются функции из библиотеки msvcrt.dll, которая в операционной системе Windows по умолчанию уже загружена в память. Для доступа к прототипам функций из неё подключается файл masm32rt.inc.
В компьютерных классах кафедры программное обеспечение для практических работ уже настроено требуемым образом (если нет, обратитесь к преподавателю). Для отладки программ на домашнем компьютере рекомендуем скачать готовый пакет разработчика masm32 с сайта wasm.ru (в разделе "Инструменты"), так как он уже содержит необходимые библиотеки и подключаемые файлы.
При решении задач не из электронного практикума удобно также использовать библиотеку функций с компакт-диска к книге Кипа Ирвина [2], для её использования нужно подключать файл Irvine32.inc. В частности, очень полезна функция DumpRegs, позволяющая вывести на экран значения всех регистров общего назначения и флаги. Данную библиотеку можно легко найти в сети Internet.