Архитектура компьютера

Введение
Теоретическая часть
    1 Архитектура компьютера
     
Лабораторный практикум
  1 Создание программы на языке ассемблера
  2 Применение функций DOS и BIOS
  3 Линейные алгоритмы
  4 Десятичная арифметика
  5 Команды передачи управления
  6 Циклы с условием
  7 Циклы со счетчиком
  8 Работа с массивами
  9 Цепочечные команды
     
Приложения
  1 Таблица кодов символов ASCII
  2 Функции DOS и BIOS
     
Гостевая книга

Лабораторная работа №1

Создание программы на языке ассемблера

В отличие от языков программирования высокого уровня, язык ассемблера поставляется без среды разработки программ. Поэтому разработчику приходится самостоятельно контролировать весь процесс создания программы. Для языка ассемблера этот процесс включает в себя следующие этапы:

  1. Постановка задачи (точное и подробное описание функциональности будущей программы, а также описание всех входных и выходных данных и способа их передачи программе);
  2. Разработка алгоритма программы (построение блок схемы, граф-схемы или текстовое или математическое описание решения);
  3. Формализация алгоритма (запись алгоритма на языке программирования).
    Создание текстового файла программы с расширением .asm (например my.asm). Отсутствие среды разработки позволяет программисту самостоятельно выбрать текстовый редактор для написания кода программы. Для этой цели подойдет любой текстовый редактор с нумерацией строк, мы рекомендуем редактор, встроенный в оболочку "FAR Manager".
  4. Компиляция программы;
    Компиляция - процесс перевода программы из текстового вида в машинный код. При использовании компилятора фирмы Borland необходимо выполнить:
    tasm my.asm
    т.е. запускаем компилятор tasm и передаем с командной строки имя файла, содержащего программу. Если программа имеет синтаксические ошибки, компилятор выдаст сообщение об ошибке с указанием номера строки и описанием для каждой ошибки (нужно вернуться на этап №3 и исправить синтаксические ошибки).
    В случае успешной компиляции будет создан файл, содержащий объектный код программы my.obj, который ещё не является исполняемым модулем.
  5. Компоновка программы;
    Компоновка - создание из файла объектного кода исполняемого модуля.
    tlink my.obj
    В качестве параметра компоновщик tlink принимает имя файла содержащего объектный код программы (в нашем случае - my.obj). В случае успешной компоновки будет создан исполняемый модуль my.exe
  6. Запуск и тестирование исполняемого модуля программы.
    На данном этапе необходимо проверить, соответствует ли написанная программа постановке задачи, сделанной нами на этапе №1. Неправильная работа программы говорит об алгоритмической ошибке (семантическая ошибка), поэтому для успешного её устранения нужно вернуться на этап разработки алгоритма (этап №2).


Написание первой программы на языке ассемблера

  1. Постановка задачи. Написать программу, которая выводит на экран строчку "Привет!".
  2. Разработка алгоритма программы. Алгоритм линейный, разработки не требует.
  3. Формализация (запись) алгоритма
    В текстовом редакторе создаем файл privet.asm и записываем в него следующий код (без номеров строк) :

    1     data segment ;описание сегмента данных
    2           mes db 'Привет!$' ;строка для вывода на экран. '$' - признак конца строки
    3   data ends ;конец сегмента данных
    4        
    5   code segment ;начало сегмента кода
    6   start: ;метка start - начало нашей программы
    7     assume cs:code, ds: data     ;директива компилятора
    8     mov ax, data ;настройка сегмента данных
    9     mov ds, ax  
    10        
    11     mov ah, 9 ;функция №9 - вывод строки на экран
    12     lea dx, mes ;берём адрес строки
    13     int 21h ;вызов прерывания для вывода строки
    14        
    15     mov ax, 4c00h ;функция завершения программы
    16     int 21h ;завершаем программу
    17   code ends ;конец сегмента кода
    18   end start ;конец программы с точкой входа start

  4. Компиляция программы
    tasm privet.asm
  5. Компоновка программы
    tlink privet.obj
  6. Запуск и тестирование
    privet.exe

Описание программы privet.asm

Строки 1 - 3 программы privet.asm содержат описание сегмента данных. Сегмент данных - область память, в которой будут храниться данные для наших программ.
Строки 5 - 17 — это код программы, её исполняемая часть.
В 8 и 9 строках выполняется настройка сегмента данных программы.
Строки 11 - 13 — вывод строки на экран при помощи функции №9 прерывания 21h (подробнее о функциях и работе с ними на следующей лабораторной работе).
15 и 16 строки — стандартное завершение программы.
После символа ';' пишутся комментарии, они не обрабатываются компилятором.

Переход на новую строку

Для организации перехода на новую строку достаточно вывести на экран символы перевода строки и возврата каретки (CR/LF). Эти символы имеют коды 10 и 13. Если в нашей программе необходимо после вывода строки перейти на новую, то для этого достаточно переписать вторую строку программы:

mes2 db 'Выводим строку и переходим на новую...', 10, 13, '$'

Переход на новую строку можно выполнить и до вывода сообщения на экран:

mes3 db 10, 13, 'Выводим с новой строки...$'

Задание для выполнения

Написать программу, которая выводит одно под другим следующие сообщения:
Привет!
Меня зовут компьютер!
До свидания!

© Истомин А.С. ЗабГГПУ
Хостинг от uCoz