Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

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






Выборка и запиь слов ГМ





Чтобы выполнить программу на реальной ЭВМ необходимо для всех ее операторов написать макроопределения. На их сложность и объем в первую очередь влияет величина fw – формат слова ГМ. С методической точки зрения выберем fw как параметр и укажем диапазон его изменения: 8..255. Наиболее сложными операциями (макрокомандами) в такой постановке являются выборка и запись слова ГМ по заданному индексу в массиве. Алгоритмы выборки и записи поясняются ниже. Пусть в качестве исходных данных выбраны значения из некоторой области памяти. Шестнадцатеричные и двоичные коды этой области приведены на рис. 4.

 

а)

1E 33 C0 50 B8 BD 13 8E D8 1E 07 B4 06 B0 00 B7 07 BA 4F 18 B9 00 00 CD 10 B4 02 B7 00 BA 00 00 CD 10 06 1E B8 1E 12 33 24 C0 2E 50 0E B8 28 BD 04 13 26 8E 1A D8 FF 1E 46 07 20 B4 32 06 44 B0 16 00 2A B7 36 07 30 BA

б)

00011110 00110011 1100000 0 01010000 10111000 101111 01 00010011 10001110 11011 000 00011110 00000111 1011 0100 00000110 10110000 000 00000 10110111 00000111 10 111010 01001111 00011000 1 0111001 00000000 00000000 11001101 00010000 1011010 0 00000010 10110111 000000 00

Рис. 4. Пример исходных данных для списка (объектный код в начале

кодового сегмента)

 

Пусть для примера разрядность ГМ fw выбрана равной 23 бита. Тогда массив слов ГМ можно рассматривать как непрерывную последовательность бит. На рис.5б. выделены слова ГМ с индексами 0,2,4,…

Разберем алгоритм выборки слова ГМ из массива S в регистр или переменную R по заданному индексу i (команда MovSR R,S,i) (рис. 5).

 

 

S[i] – слово ГМ

S

байт байт байт байт байт байт байт байт

                     
               
  ß адрес байта S ß 00010000 maskS      
      ß rotate        
  ß адрес байтаR ß 00000001 maskR      
      ß rotate        
  R              
                                 

 

 

fw разрядов

Рис. 5. Схема копирования слова ГМ в регистр или переменную

 

Поскольку значение fw заранее неизвестно, выбираем наиболее универсальный алгоритм побитового копирование S[i] -> R. Выделение и копирование битов ведется от конца к началу с помощью двух двоичных масок maskS и maskR. Вначале maskS настраивается на последний бит S[i] (см. макроопределение InitMov). Адрес этого бита вычисляется по формуле A = fw*(i+1)-1 и представляет величину битового смещения в S, младшие 3 бита которого являются номером бита в байте, а старшие биты – смещением для этого байта. Таким образом, позиция «1» в maskS настраивается на выделение последнего бита слова ГМ в S. Аналогично позиция «1» в maskR соответствует младшему разряду R. После копирования очередного бита maskS и maskR подвергаются циклическому сдвигу влево настраиваясь на следующий бит. Когда биты очередного байта S или R скопированы, происходит уменьшение адреса этого байта. Момент уменьшения адреса определяется по единичному состоянию флага CF, в котором, как известно, дублируется выдвигаемый бит при циклическом сдвиге маски. Очевидно, что в общем случае, уменьшение адреса байта S или R может происходить асинхронно. Алгоритмы выборки и записи слова ГМ во многом совпадают, поэтому их общие части объединены в макрокоманде InitMov. В алгоритме выборки R предварительно обнуляется, поэтому если бит S в «1», то соответствующий бит R устанавливается в «1» командой OR. При записи (макрокоманда MovRS) копирование сводится к инвертированию некоторых бит S. Действительно, если соответствующие биты S и R совпадают, то копирования не нужно. Если же они имеют противоположные значения, то требуется инвертировать бит S. На рис. 6 приведены значения слов ГМ после выборки их из области памяти, показанной на рис. 4б.

 

0F19E0 142E2F 2271DB 01E07B 203580 02DC1E 749E31 390000 66885A 00ADC0

 

Рис.6. 23-разрядные слова ГМ в 16 с/c после их выборки из массива

 

Алгоритмы остальных макрокоманд несложные и достаточно подробно прокомментированы в макроопределениях, поэтому предлагается изучить их самостоятельно. Все макроопределения помещены в файл macros.inc и подключаются к головной программе директивой include. Макрокоманда InitRealComputer осуществляет настройку программы ГМ для ее выполнения на реальной ЭВМ.








Date: 2015-10-21; view: 338; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию