Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

ПРАКТИЧЕСКИЕ ЗАНЯТИЯ ПО КОМАНДАМ ОПЕРАЦИОННОЙ СИСТЕМЫ UNIX

Читайте также:
  1. CAD/CAM-системы в ТПП
  2. CALS-технологий и единая интегрированной системы управления вуза
  3. I. Общие симптомы заболеваний пищеварительной системы.
  4. II. Исследование В-системы иммунитета.
  5. II. Поработать с лекционным материалом по теме занятия, выучить глоссарий.
  6. III Рекомендации к написанию курсовой работы по дисциплине «Коррекционно-педагогические системы воспитания и обучения детей дошкольного возраста».
  7. IV. Анатомия органов сердечно-сосудистой системы
  8. IV. Закрепление полученного материала и завершение занятия
  9. PDM-системы
  10. Quot;Развитие системы торговли на 10%- вдохновение, и на 90%- пот” Sunny Harris

Задание на разработку.

Имеется электронное табло длиной 10 знакомест. В памяти записана фраза, которую требуется вывести. Фраза записана в массив 8-и разрядных данных, начинающийся с ячейки 2210h, длиной 100 байт. Незанятые байты массива содержат нули. Составить программу вывода бегущей строки в электронное табло. При этом по адресу F3h задается позиция знакоместа на табло (отсчет начинается с 0), а по адресу F4h задается выводимый символ.

Программа будет состоять из нескольких вспомогательных функций.

Функция pause – определяет задержку сдвига выводимого текста.

Функция fill_tablo – заполняет табло значениями из массива со сдвигом, указанным в регистре B.

Функция char_out – выводит один символ, расположенный по адресу HL в позицию табло, заданную в регистре C.

Сначала рисуем блок-схему основного цикла программы и вспомогательных функций.

 

 

Основной цикл Функция вывода на табло Функция паузы Вывод символа

 

Паузу в 1 секунду формируем за счет выполнения операции вычитания, занимающей 5 машинных тактов. Учитывая, что производительность процессора составляет 300 тыс. операций (тактов) в секунду, требуется 60 тыс. циклов вычитания.

Затем, составляется программа на языке ассемблера.

  LXI H, 2210h ; Устанавливаем указатель на начало массива
  MVI B, 00h ; Устанавливаем позицию первого выводимого символа
Out_1: Call Fill_Tablo ; Записываем 10 символов фразы на табло
  Call Pause ; Выдерживаем паузу в 1 секунду
  INC B ; Сдвигаем указатель начала выводимой фразы
  PUSH H ; Сохраняем указатель на начало массива
  MOV A, B  
  ADD L ; Прибавляем к HL значение аккумулятора
  MOV A, M ; M – Memory. Загружаем в регистр А значение, расположенное по адресу, указанному в HL
  JNZ NotZero ; Если не достигнут последний символ, выводим очередной
  MOV B, 00h ; Если достигнут 0 – выводим фразу с начала
NotZero: POP H ; Восстанавливаем начало массива
  JMP Out_1 ; Повторяем цикл вывода фразы бесконечно
       
; Fill_Tablo – вывод 10-и символов фразы на экран
       
Fill_Tablo: PUSH H ; Сохраняем указатель на начало массива
  MOV A, B ; Сохраняем в аккумулятор рабочее значение сдвига вывода фразы
  MVI C, 0Ah ; Будем выводить 10 символов из массива
  ADD L ; Прибавляем к HL значение аккумулятора
NextChar: MOV A, M ; M – Memory. Загружаем в регистр А значение, расположенное по адресу, указанному в HL
  JNZ NotZero1 ; Если не достигнут последний символ, выводим очередной
  LXI H, 2210h ; Устанавливаем указатель на начало массива
NotZero1: Call Char_Out ; Выводим символ
  INX H ; Подготавливаем следующий символ для вывода
  DCR C ; Подготавливаем следующее знакоместо
  JNZ NextChar ; Делаем 10 циклов
  POP H ; Восстанавливаем значение начала массива
  RET   ; Возвращаемся в основную программу
       
; Функция вывода символа на экран. Адрес символа – в HL, номер знакоместа в C
       
Char_Out: MOV A, C ; Загружаем номер знакоместа
  OUT F3h ; Устанавливаем во внешнем устройстве вывода номер знакоместа
  MOV A, M ; Загружаем символ, находящийся по адресу HL
  OUT F4h ; Выводим на табло загруженный в регистр А символ
  RET   ; Возвращаемся в функцию Fill_Tablo
       
; Функция установки паузы продолжительностью 1 секунду
       
Pause: PUSH B ; Регистр BC временно нужен для другой цели, поэтому сохраняем его в стеке
Label1: LXI B, EA60h ; 60000 циклов по 5 тактов обеспечат секундную паузу
  DCX B ; Вычитаем до тех пор…
  JNZ Label1 ; … пока значение не станет равно 0
  POP B ; Восстанавливаем значение регистра BC
  RET   ; Возвращаемся в основную программу

 

ПРАКТИЧЕСКИЕ ЗАНЯТИЯ ПО КОМАНДАМ ОПЕРАЦИОННОЙ СИСТЕМЫ UNIX

(для группы ТО-21 от 30.05.2012 г.)

 

Содержание практических занятий

1. Методические указания по основным командам UNIX

2. Команды по работе с файловой системой

3. Команды по работе с текстом

4. Резюме




Дата добавления: 2014-12-19; просмотров: 31 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав