ЭУМК по дисциплине "Проектирование проблемно-ориентированных вычислительных средств" › Практика › Практическое занятие "Группа команд работы с аккумулятором"

# Электронный учебно-методический
комплекс по дисциплине
"Проектирование проблемно-ориентированных вычислительных средств"

для специальности

1-40 02 02 «Электронные вычислительные средства»

Оглавление | Программа | Теория | Практика | Контроль знаний | Об авторах

10. Директивы ассемблера для подключения файлов, программы поиска минимальных и максимальных элементов в массивах чисел.
1) Директивы ассемблера: подключение файлов к программе

1. директива .include – включить содержимое файла в программу
   формат: .include “имя файла“ ;
2. директива .copy - копировать содержимое файла в программу
   формат: .copy “имя файла“ ;
3. директива .list– разрешить выдачу листинга программы
4. директива .nolist– запретить выдачу листинга программы

Директива .include и .copy вставляют содержимое указанного файла в основной файл программы перед трансляцией программы. Таким образом из нескольких файлов собирается один файл (при этом не требуется определение глобальных переменных), который и транслируется для получения объектного кода. Единственное различие этих директив в том, что включенный файл (директива .include) не распечатывается в листинге. Чаще всего директива .include используется для подключения различных таблиц, а директива .copy – для подпрограмм.
Запретить вывод команд и директив в листинг можно с помощью директивы .nolist, а снова разрешить - директивой .list. Данные директивы игнорируются во включенном файле (директива .include).
Для формирования файла листинга необходимо после создания проекта выполнить команду Project | Build Options… | Compiler и в категории Assembly включить флаг Generate Assembly Listing Files.

    ; ППО ВС Практическое занятие №2 (Часть 1)
    ; (c) Клюс В.Б. 22/01/07 18:20
    ; Директивы подключения файлов
    	.mmregs		; Определение регистров CPU
    Cnt	.set	8-1		; Число элементов массива -1
    	.def	_c_int00	; Метка начала программы
    	.text			; Секция программы
    _c_int00:			; Начало программы
    	ld	#0, DP		; Основной файл, Команда 1
    	.copy	"file1.inc"	; 1-й копируемый файл
    	.nolist		; Запретить листинг
    	.copy	"file2.inc"	; 2-й копируемый файл
    	.list			; Разрешить листинг
    	ssbx	FRCT		; Основной файл, Команда 2
    	ld	#0, a		; Основной файл, Команда 3
    	nop			; Точка останова
    	.data			; Секция данных
    CNT	.word	8-1		; Основной файл, Директива 1
    	.list			; Разрешить листинг
    	.include "file3.tab"	; 4-й копируемый файл
    	.word	0		; Основной файл, Директива 2
    	.end			; Конец программы

2) Программа поиска минимального или максимального элемента массива

Исходные данные и варианты задачи аналогичны практическому занятию №9.

Используемые команды:

    ; 1 - вход:  a) память, b) McDRR, c) PA
    ; 2 - выход: a) память, b) McDXR, c) PA
    ; 3 - счетчик: a) .set, b) .word
    ; 4 - данные: a) знаковые(Ц), b) беззнаковые(Ц), c) дробные(З)
    ; 5 - цикл: a) BANZ, b) RPTB
    	ldu	*ar2+, a	; Загрузка беззнаковая из памяти	(1)
    	ldm	McDRR0, a	; Загрузка беззнаковая из МБПП		(1)
    	ld	McDRR0, a	; Загрузка знаковая из МБПП (DP=0)	(1)
    	portr	PAinp, AL	; Загрузка из пар.порта (DP=0) 		(2)
    	ld	AL, a		; Перезагрузка для знаковых		(1)
    ; Нахождение максимума или минимума
    	max	a		; Поиск максимума из А и В в А		(1)
    	min	a		; Поиск минимума из А и В в А		(1)

Оглавление | Программа | Теория| Практика | Контроль знаний | Об авторах
© БГУИР , 2012