Cтраница 2
Реализация регистра сдвига для сверточ-ного устройства чередования / восстановления. [16] |
С каждым новым кодовым символом коммутатор переключается на новый регистр, и кодовый символ подается на него до тех пор, пока наиболее старый кодовый символ в регистре не будет передан на модулятор / передатчик. После ( N - 1) - го регистра коммутатор возвращается к нулевому регистру и повторяет все снова. После приема операции повторяются в обратном порядке. И вход, и выход устройств чередования и восстановления должны быть синхронизированы. [17]
Замечание: команда ASL помещает бит 15 в бит С, что может быть проверено командой перехода. Кроме того, приведенная команда сдвига умножает целое число, содержащееся в нулевом регистре, на два. [18]
О ней мы уже неоднократно упоминали. Она посылает содержимое регистра X в регистр, номер которого ранен числу, находящемуся в нулевом регистре, так же - как и команда КПО, но в отличие от нее не меняет содержимого нулевого регистра. Ну, а номер регистра, куда будет заслана первая из наших дробей. [19]
Команда для своего размещения требует два байта памяти. Адрес 1002 команды, следующий за командой BALR, будет помещаться в регистре, и никакой передачи управления не происходит, так как адресом второго операнда является нулевой регистр. Обычно эта команда используется для загрузки базового адреса. [20]
О ней мы уже неоднократно упоминали. Она посылает содержимое регистра X в регистр, номер которого ранен числу, находящемуся в нулевом регистре, так же - как и команда КПО, но в отличие от нее не меняет содержимого нулевого регистра. Ну, а номер регистра, куда будет заслана первая из наших дробей. [21]
Действие команды ЕХ состоит в том, что из памяти по адресу D2 ( X2 B2) выбирается команда, которая модифицируется по содержимому регистра R1 и затем выполняется. ЕХ команда в памяти не меняется. Если в команде ЕХ задан нулевой регистр в качестве первого операнда, то модификация выбранной команды не производится. [22]
Данная программа имеет две точки входа: для операции чтения и записи соответственно. Перед обращением к подпрограмме необходимо занести требуемые значения в регистры, как это описана в комментариях. Следует учесть, что при выполнении подпрограммы содержимое нулевого регистра будет испорчено. [23]
Автор программы необычайно остроумно решил вопрос о накоплении результатов в регистрах. Свойство косвенной адресации позволяет это сделать без всякого сравнения величин и помещать их в нужный диапазон, то есть в нужный регистр. Кстати, обратите внимание: если содержимое регистра, ответственного за косвенную адресацию, меньше единицы, обращение происходит к нулевому регистру, хотя целая часть из этого содержимого после обращения не выделяется. [24]
Положим, что перед началом ввода по этим командам калькулятор стоит, готовый к выполнению первой из них, ПМ. Командой HN оно отсылается в N - н адресуемый регистр. Командой КП число xz отсылается в ( N-1) - й адресуемый регистр - тот самый, номер которого указан содержимым нулевого регистра. [25]
Эта подфункция осуществляет загрузку последовательных регистров цвета ЦАП из таблицы, адресуемой регистрами ES: DX. Содержимое регистра ВХ ( диапазон OOh - FFh) показывает первый регистр цвета, а регистра СХ - число загружаемых регистров. Процедура BIOS не производит контроля ошибок; если сумма значений в регистрах ВХ и СХ больше 254, происходит заворачивание к нулевому регистру цвета ЦАП. [26]
Так как утомительно каждый раз вручную выполнять подобные расчеты, то первой инструкцией отладчику необходимо задать базовый адрес, относительно которого рассматриваются все последующие адреса. Это позволяет устанавливать базовые адреса не менее чем восьми независимым программным модулям. В дальнейшем при наборе на терминале любого адреса будем ставить перед ним 0, отмечая тем самым, что он берется относительно содержимого нулевого регистра. Чтобы передать требуемый адрес отладчику, всегда нужно указывать номер используемого вами регистра, как видно из приведенных ниже примеров. [27]
Адрес DCB-это адрес блока управления данными для НД, которому приписывается данный буферный пул. Каждому блоку управления данными может быть приписан только один буферный пул. Число буферов и длина буфера, как и в макрокоманде BUILD, могут задаваться двумя способами: в виде двух десятичных чисел или как содержимое нулевого регистра. [28]
Мнемоническое представление команды загрузки регистра. [29] |
Первая команда L 2 904 ( 0 1) загружает первое число во второй регистр, который будет использован как накопитель. Как известно, адрес памяти формируется как сумма смещения, содержимого индексного регистра и содержимого базового регистра. В этой команде в поле адреса индексного регистра находится нуль. Когда нулевой регистр используется в качестве индексного или базового, или регистра адреса перехода, то подразумевается, что его содержимое равно нулю. [30]