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

Для лучшего понимания, что такое связанный список, приведем пример, рассмотренный на picbasic.ru. Предположим, у нас есть контроллер для последовательной передачи данных, который получает информацию от другой ЭВМ.

Этот контроллер будет собирать информацию, пока не получит символ возврата каретки. Затем он передаст эту информацию на обработку другому программному модулю. Подпрограмма, обслуживающая контроллер, работает под управлением прерываний. Она работает в фоновой области и прозрачна для пользователя. Запрограммировать это на языке ассемблера очень просто. Однако проблема возникает в случае, когда контроллер получает информацию быстрее, чем программа может ее обработать. Если сообщения поступают слишком быстро, то они могут быть потеряны, если только не будет придуман какой-нибудь метод их сохранения.

Один из методов сохранения этой информации — использование двойных областей памяти. Подпрограмма, обслуживающая контроллер последовательной передачи данных, просто записывает всю свою информацию в первую область данных, а затем передает ее программе, обрабатывающей информацию. Затем она переключается на вторую область и заполняет ее так же, как первую. Однако если обрабатывающая программа перегружена или ЭВМ занята обслуживанием других программ, то может случиться так, что записывать информацию будет некуда.

При использовании метода связанных списков, подпрограмма, обслуживающая прерывания, получает для записи сообщения некоторую фиксированную область памяти. При поступлении символа подпрограмма помещает его в эту область. После завершения передачи сообщения подпрограмма передает всю область сообщения следующему программному модулю. Одновременно эта область ОЗУ сцепляется или связывается с предыдущими сообщениями данного списка. Затем подпрограмма, обслуживающая прерывания, запрашивает другую область памяти и помещает в нее следующее сообщение. Этот процесс может повторяться любое число раз.

Связанный список обычно используется для упорядочения данных по принципу FIFO — первый на входе, первый на выходе. Таким образом, список информации от контроллера передачи последовательных данных организуется по принципу FIFO. Модуль, обрабатывающий информацию, будет удалять элементы из вершины или начала очереди, в то время как контроллер будет помещать новую информацию в конец очереди. Это гарантирует, что информация будет обрабатываться в порядке поступления.

Связанные списки обычно используются для обработки информации от контроллеров последовательной передачи данных или других источников по принципу FIFO. Кроме того, они очень часто используются в диспетчерах реального времени.

Социальные сети
Обсуждаемый ремонт
Самое читаемое