Пример полной программы на Ассемблере
Прежде, чем написать нашу первую полную программу на Ассемблере, нам необходимо научиться выполнять операции ввода/вывода, без которых ни одна сколько-нибудь серьёзная программа обойтись не может. В самом языке машины, в отличие от языка нашей учебной машины УМ-3, нет команда ввода/вывода,[13] чтобы, например, ввести целое число, необходима достаточно большая программа на машинном языке.
Для организации ввода/вывода мы в наших примерах будем использовать макрокоманды из учебника [5]. Вместо каждой макрокоманды Ассемблер будет подставлять соответствующий этой макрокоманде набор команд и констант (этот набор, как мы узнаем позже, называется макрорасширением для макрокоманды).
Нам понадобятся следующие макрокоманды ввода/вывода.
· Макрокоманда вывода символа на экран
outch op1
где операнд op1 может быть в формате i8, r8 или m8. Значение операнда трактуется как код символа, этот символ выводится в текущую позицию экрана. Для задания кода символа удобно использовать символьную константу языка Ассемблер, например, ′A′. Такая константа преобразуется программой Ассемблера именно в код этого символа. Например, outch ′*′ выведет символ звёздочки на место курсора.
· Макрокоманда ввода символа с клавиатуры
inch op1
где операнд op1 может быть в формате r8 или m8. Код введённого символа записывается в место памяти, определяемое операндом.
· Макрокоманды вывода на экран целого значения
outint op1[,op2]
outword op1[,op2]
Здесь, как всегда, квадратные скобки говорят о том, что второй операнд может быть опущен. В качестве первого операнда op1 можно использовать i16, r16 или m16, а второго – i8, r8 или m8. Действие макрокоманды outint op1,op2 полностью эквивалентно процедуре вывода языка Паскаль write(op1:op2), а действие макрокоманды с именем outword отличается только тем, что первый операнд трактуется как беззнаковое (неотрицательное) число.
· Макрокоманда ввода целого числа
inint op1
где операнд op1 может иметь формат r16 или m16, производит ввод с клавиатуры на место первого операнда целого значения из диапазона –215..+216. Особо отметим, что операнды форматов r8 и m8 недопустимы.
· Макрокоманда без параметров
Дата добавления: 2015-10-05; просмотров: 901;