
/*
    Пример 5. Автор Ю.А. Богоявленский.
  
    3 мая 2008 г.
 
    Раздельная трансляция и редактирование связей

    Необходимо, запустив ассемблер отдельно для каждого исходного файла 
    (расширение S), получить объектные файлы (расширение o), а затем собрать
    объектные файлы в исполняемый файл с помощью редактора связей командой

    ld -melf_i386 -o main main.o Read_Sym.o Trans_Sym.o 

*/
.include "my-macro" # подключение файла с макроопределениями
    
.data # секция данных, распределение памяти

Symbols:
	.asciz	"91A23B456C789"	# массив символьных кодов
				# цифр и "не цифр"

.bss	# секция общей памяти (для результата)

.lcomm	Numbers, 40	# массив 4-х байтовых значений цифр

# Описание внешних (заданных в других файлах) символьных имен

.globl Read_Sym, Numbers

.text 	# секция команд процесора

.global _start	# точка входа - глобальная метка

_start:
	nop
		
	pusha		# сохранение регистров главной программы
		
	pushl $Symbols	# Параметр-2 - адрес массива в стек
	pushl $8 	# Параметр-1 в стек
		
	call Read_Sym   # вызов функции

	addl $8, %esp	# очистить стек от параметров Read_Sym
	popa		# восстановить регистры главной програмы

	Finish 		# конец работы, возврат в ОС (макро из файла my-macro)
	
.end   # последняя строка исходного текста	
