Д. Кнут - Искусство программирования том 1 (1119450), страница 38
Текст из файла (страница 38)
В табл. 1 приведены операции для параметра С. После имени каждой команды в круглых скобках указано стандартное значение поля Г. Следующие упражнения помогут лучше усвоить материал данного раздела. В основном, эти упражнения очень просты, так что постарайтесь их выполнить. УПРАЖНЕНИЯ 1. [00] Если бы И1х был траичным компъютером, та сколько траичных чисел поместилось бы в байте? 2. (00] Если бы величина, которую нужно представить в машине ИХХ, могла достигать такого балъшага значения, как 99 999 999, та сколько соседних байтов было бы занято этой величиной? 3.
[09] Укажите частичные спецификации паля (Ь;Е) для (а) адресного поля, (Ь) индекснага поля,(с) поля спецификации поля и (4) поля кода операций команды ИХХ. 4. (00] Последним примерам в (5) является команда ьХОА -2000,4". НаскоЛько аяа законна ввиду таге, чта адреса памяти не должны быть отрицательными? 6. [10] Какая символическая запись, аналогичная (4), соответствует (6), если (6) рассматривать как команду И1Х? 6. [10] Предположим> чта в ячейке ЗООО содержится Каким будет результат выполнения следующих команд? (Установите, являются ли какие-либо из них неопределенными или только частично определенными ) (а) ьваи 3000; (Ь) 102К 3000(З:4); (с) 101 3000(1:3); (б) ьвб 3000: (е) ЬРХИ 3000(0:0).
Т. (М!0] С помощью алгебраических операций Х ша41' и [Х/1'] дайте точное определение результатов выполнения команды ЫЧ лля всех случаев, когда не происходит переполнение. 8. (15] В последнем примере команды 01Ч на с, 165 содержимым гХ до операции является (:(::]Ш 1236 0 3 1 . Если бы содержимыгя регистра было — 1234 0 3 1, в то время как все остальные усЪовия примера остались бы прежними, то что содержалось бы в регистрах А и Х после выполнения команды ОХЧ? 9.
[15] перечислите вге команды и1х, которые могут изменить значение флага переполнения. (Исключите из рассмотрения операции с плавающей точкой.) 10. (15] Перечислите все команды И1Х, которые могут изменить значение флага сравнения ь 11. [13] Перечислите все команды И1Х, которые могут изменить содержимое гП. 12. [10] Найдите едшгственную команду, действие которо]1 эквивалентно умножению текущего содержимого г13 на два и сохранению результата в г13. ь 13. [10] Предположим, в ячейке 1000 содержится команда ЬХОЧ 1001" Эта команда переключает флаг переполнения в положение О, если он находится в положении 1 (и в любом случае следующая команда выбирается из ячейки 1001). Изменится ли что-нибудь, если заменить эту команду командой чОИОЧ 1001"? Что будет, если заменить ее командой "ЗОЧ 1ООО' нлн "ЗИОЧ 100О"? 14.
(ЕО] Для каждой команды ИТХ выясните, существует ли способ определения части жАА, 1 и г таким образом, чтобы она была эквивалентна ИОР (за исключениел~ того„что время выполнения может увеличиться). Предположим, о содержимом регистров либо ячеек памяти ничего не известно В тех случаях, когда возможно осуществить ИОР, объясните, как зто сделать. Примеры. 1ИСА эквивалентна ИОР, когда адресное н индексное поля равны нулю. ХИР никогда не будет эквивалентна ИОР, так как она изменяет содержимое гЛ. 15.
(10] Сколько буквенно-цифровых символов содержится в блоке данных терминала или устройства вывода на перфоленту; устройства чтения перфокарт или перфоратора; АППУ? 16. (20] Напишите программу, которая обнуляет все ячейки памяти 0000-0099 и является (а) настолько короткой, насколько это возможно; (Ь) настолько быстрой, насколъко это возможно. [Указание. Воспользуйтесь командой ИОЧЕ.] 17. [Яб] Пусть выполнены условия предыдущего упражнения, только нужно обнулить ячейки с 0000 по?Ч включительно, где )Ч вЂ” текущее содержимое г12.
Ваши программы должны удовлетворять условиям (а) и (Ь) из предыдущего упражнения, работать для любого значения 0 (?Ч < 2999 и начинаться с ячейки 3000. ь 18. [ЯЯ] После того как будет выполнена следующая программа "номер один", какие изменения произойдут с регистрами, флагом переполнения, флагом сравнения и оперативной памятьют (Например, каким будет окончательное значение в регистре гП или гХ? Каким будет значение флага переполнения и флага сравнения?) ЗТХ 1 ЕИИХ 1 ЗТХ 1(0:1) ЗЛАХ 1 ЕИИЯ 1 1ИСХ 1 ЕИТ1 1 БИС 1 АОО 1 ОЕС1 -1 БТХ 1 СИРА 1 ИОЧЕ -1,1(1) ИИИ 1 СНАИ 1 И1Т 1 3 ь 19. [Ц] Каким будет время выполнения программы из предыдущего примера без учета команды И1.Т? 20.
[ЕО] Напишите программу, которая заносит во все 4 000 нчеек памяти команду ИСТ, а затем останавливается. ь 21. [24] (а) Может ли нуль вообще содержаться в регистре 1? (Ь) Напишите программу, которая помещает в регистр Л значение Аг, 0 < Х ( 3000, при условии, что Аг содержится в г14. Программа должна начинатьсв с адреса 3000.
После выполнения программы содержимое всех ячеек памяти должно остаться неизменным. ь 22. [ЕЕ] В ячейке 2000 содержится целое число Х. Напишите две программы, которые вычисляют Х и останавливаются после занесения результата в регистр А. Одна программа ~з должна занимать минимальное количество ячеек памяти И1Х, а другая — выполняться за минимальное время. При этом предполагается, что Л 'з умещается в одном слове. 23. [27] В ячейке 0200 содержится слово Напишите две программы, которые получают "отраженное" слово и останавливаются после занесения этого результата в регистр А. В одной из программ не должна использоваться способность И1Х загружать и сохранять частичные поля слов.
Обе программы должны занимать минимальное количество нчеек памяти, которое возможно при данных условиях (включая ячейки, занимаемые самой программой, а также ячейки, используемые для временного хранения промежуточных результатов). 24. [ЕТ] Пусть в регистрах А и Х содержатся соответственно. Напишите две программы, которые меняют содержимое этих регистров на соответственно и удовлетворяют двум условиям: (а) занимают минимальный объем памяти; (Ь) выполняются за минимальное время. ь 2$. [Я0] Предположим, фирма — производитель компьютераи1Х планирует выпуститьболее мощный компьютер ("М(хгпазсег"?) и ей нужно убедить как можно больше владельцев компьютера И1Х потратиться на более дорогой компьютер Причем фирма собирается разработать аппаратное обеспечение нового компьютера таким образом, чтобы он был расширенным варианшом И1Х.
Это означает, что все правильно написанные программы для ИХХ будут работать на новом компьютере и в них не нужно будет вносить каких-либо изменений. Внесите свои предложения по поводу того, что можно было бы воплотить в новом компьютере. (Например, можете ли вы извлечь ббльшую пользу, применив поле 1 команды? ) ь 26. [уй] Эта задача состоит в написании программы загрузки перфокарт.
На каждом компьютере процесс начальной загрузки, т. е. получения первоначальной информации н корректного начала работы, выполняется по-разному. В случае использования компьютера И11 содержимое перфокарты можно считать только в символьном коде, и перфокарты, содержащие саму загружающую программу, тоже должны удовлетворять этапу ограничению Поэтому с перфокарты можно считать не все возможные значения в байтах; кроме того, каждое слава, считываемое с перфокарт, является положительным. У компьютера И11 есть одна функция, о которой не говорилось в тексте раздела. Речь идет о "кнопке СО", которая используется для начального запуска компьютера, когда в его памяти содержится произвольная информация.
Когда оператор нажимает эту кнопку, выполняются следующие действия. 1) Одна карта считывается в ячейки 0000-0015; по сути, это эквивалентно команде "1И 0(16)". 2) Когда карта полностью прочитана и устройство чтения перфокарт больше не занято, осуществляется переход (1ИР) в ячейку 0000. Кроме того, обнуляется содержимое регистра 3. 3) Компьютер начинает выполнять программу, которую он считал с перфокарты. Замечание. У компьютеров И11, нг имеющих устройств чтения перфокарт, кнопка СО находится на другом устройстве ввода Но в данной задаче предполагается наличие устройства чтения перфокарт пад номерам 16. Программу загрузки нужно написать так, чтобы она удовлетворяла следующим условиям. 1) Вводимая колода должна начинаться с программы загрузки, за которой следуют перфокарты входных данных, содержащие загружаемые числа.
Затеи идет "переходная карта", которая закрывает програчму загрузки и переходит к началу программы. Программа загрузки должпз поместиться на двух перфокартах И) Перфокарты входных данных должны иметь следующий формат. Колонки 1-5; программой загрузки игнорируются Колонка 6: число последовательных слов, загружаемых с этой перфокарты (лежит в промежутке от 1 до 7 включительно). Колонки 7-10: адрес ячейки, в которую загружается снова 1. Этот адрес всегда больше 100, чтобы не было перекрытия с программой загрузки. Колонки 11-20: слово 1. Колонки 21-30: слово 2 (если содержимое колонки 6 ) 2).
Колонки 71-80: слово 7 (если в колонке 6 содержится число 7). Содержимое слов 1, 2,, перфарируется и представляется в числовом виде па аналогии с десятичными числами. Если слово отрицательно, то знак "-" ("позиция 1Г) перфорируешся поверх наименьшей значащей цифры, т. е в колонке 20. Предполагается, чта по этой причине символьный код вводится в колонки 10, 11, 12,, 19, а не в 30, 31, 32,, 39. Например, если на перфокарте в колонках 1-40 выбито АВСО831000012345676900000000010000000100, то белет загружены следующие данные. 1000. +0123456789, 1001. ч-0000000001; 1002: -0000000100. ш) На переходной карте в колонках 1-10 должна содержаться информапия в формате ТИАИ80пппп, где пппп — адрес ячейки, с которой начинается выполнение программы.
ге) Про. рампа зш'рузки должна работать независимо ат размера байта, чтобы в содержащие ее перфокарты не нужно было вносить никаких изменений. На картах не должны содержаты.я символы, соответствующие байтам 20, 21, 48, 49, 50, .. (т. е. символы Р, П, =, О, <, ... ), так как их не сможет прочитать нн одно устройство чтения перфокарт. В частности, нельзя использовать команды ЕНТ, 1ИС и СИР, поскольку их невозможно перфорировать не карте.
1.3.2. Язык ассемблера компьютера М1Х Символический язык компьютера МТХ используется для того, чтобы облегчить чтение и написание программ, а также избавить программиста от беспокойства по поводу утомительных мелких деталей, которые часто становятся причиной дополнительных ошибок, Этот язык под названием М1ХАЬ (М1Х АввешЫу Ьапйпайев) является расширенным вариантом системы обозначений, которая использовалась для команд в предыдущем разделе.