Главная » Просмотр файлов » Д. Кнут - Искусство программирования том 1

Д. Кнут - Искусство программирования том 1 (1119450), страница 35

Файл №1119450 Д. Кнут - Искусство программирования том 1 (Д. Кнут - Искусство программирования том 1) 35 страницаД. Кнут - Искусство программирования том 1 (1119450) страница 352019-05-09СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 35)

Команда Последующее содержимое гА 10А 2000 1.0А 2000(1:Б) !.ОА 2000(3:Б) !.РА 2000(0:3) (.ОА 2000(4:4) ЫА 2000(0:О) 1,РА 2000(1:1) (В последнем примере значение частично не определено, так как размер байта переменный.) ° !.ОХ (1оаг( Х вЂ загрузи Х). С = 15; г = поле. Эта команда идентична 1,ОА, за исключением того, что вместо гА загружается гХ. в !.Ог (1оаг( г — загрузить г). С = 8+ г; г = поле. Эта команда идентична ООА, только вместо гА загружается г1г. Индексный регистр содержит только два байта (а не пять) и знак; байты 1, 2, 3 всегда считаются нулевыми.

Поэтому, если установить для байтов 1, 2 или 3 любые значения. не равные нулю, то команда 1.Ог станет неопределенной. В описаниях всех команд "г" обозначает целое число, 1 < г < 6. Таким образом. 1.Ог обозначает шесть различных команд: !.01, 1.02, ..., 1.06. ° 1.ОАИ (1оаг( А пе8аг(ге — загрузить в А с обратным знаком). С = 16; г = поле.

° 1.ОХИ ()оас1 Х пе8атгге — загрузить в Х с обратным знаком). С = 23; г = поле. ° ООгИ (!оад г пебабхе — загрузить в г' с обратным знаком). С = 16+ г; г = поле. Эти восемь команд идентичны командам ЕОА, ЕОХ и !.Ог соответственно. но только величины загружаются с обрапгнмм знаком. Команды записи в память ° БТА (э1оге А — записать А). С = 24; г = поле. Часть содержимою гА заменяет поле СОИТЕИТБ(М), которое указано в Г Другие части СОИТЕИТБ(М) остаются неизменными. Для операции записи в память поле г имеет противоположный смысл по сравнению с операцией загрузки. Нужное количество байтов в поле, взятом из правой части регистра, в случае необходимости сдвигаегся влево, а затем помещается в соответствующее поле СОИТЕИТБ(М).

Знак меняется только тогда, когда он является частью поля. Содержимое регистра также остается без изменений. Примеры. Предположим, в ячейке 2000 содержится а в регистре А Тогда получаем следующее. Команда Содержимое ячейки 2000 после выполнения команды ЯТА 2000 ЯТА 2000(1гб) ЯТА 2000(6:6) БТА 2000(2:2) ЯТА 2000(2:3) ЯТА 2000(0:1) ° ЯТХ (эгоге Х вЂ записа Х) С = 31: г = поле. Идентична команде ЯТА,но только сохраняется содержимое гХ, а не гА.

° ЯТ1 (этосе 1 — записать 1). С = 24+1; Е = поле. Идентична команде ЯТА, за исключением того, что сохраняется содержимое гБ, а не гА. Байты 1, 2 и 3 индексного регистра являются нулевыми, поэтому, если в г11 содержится значит, в нем находится ° ЯТЗ (э1оге 3 †сохрани Л). С = 32; Е = поле. Идентична команде ЯТг, но только сохраняется гЗ н знаком всегда является "ч-". Для команды ЯТэ стандартной спецификацией поля для г является (О:2), а не. (О: 5).

И это естественно, так как ЯТЛ почти всегда выполняет запись в адресное поле команды. ° ЯТ2 (этосе вего — записать нуль). С = 33; Г = поле. Идентична команде ЯТА, но только сохраняется нуль со знаком "+". Другими словами, заданное поле СОИТЕИТЯ(М) обнуляется. Арифметические комаиды. При выполнении операций сложения, вычитания, умножения и деления допускается спецификация поля.

Спецификацию поля "(О:6)" можно использовать для указания операции с плавающей точкой (см. раздел 4.2). Но лишь в некоторых программах для И1Х мы будем пользоваться этой возможностью, так как, в первую очередь, нас будут интересовать целочисленные алгоритмы. Стандартной спецификацией поля, как обычно, является (О: 5). Остальные поля имеют такой же смысл, как при выполнении команды 10А. Буквой "1г' будем обозначать заданное поле СОИТЕИТЯ(М).

Таким образом, У вЂ” это значение, которое должно быть загружено в регистр А, если кодом операции является ЫА. ° АОР (сложение), С = 1; Е = поле. У добавляется к гА. Если абсолютное значение результата слишком велико для того, чтобы поместиться в регистре А, то для триггера переполнения устанавливается значение 1, а в гА остается значение, которое выглядит так, как будто "Г перенесено в другой регистр слева от гА. (В противном случае значение для триггера переполнения не меняется.) Если результат равен нулю, то знак регистра гА остается неизменным. Пример.

Последовательность команд, приведенных ниже, служит для вычисления суммы значений, находящихся в пяти байтах регистра А. ЯТА 2000 10А 2000(6:5) АРО 2000(4:4) АРР 2000(3:3) АОО 2000(2:2) АОР 2000(1:1) Иногда эту операцию называют сложевнем наискосок. В одних компьютерах ИХХ переполнение происходит, а в других †н, что связано с разницей в размерах байта. Мы не говорили, что переполнение обязательно произойдет, если результат превысит число 1 073 741 623; переполнение случается, когда абсолютное значение результата не помещается в пяти байтах (в зависимости от размера байта). Тем не менее можно написать программы, которые правильно работают и дают одинаковь1е окончательные результаты независимо от размера байта. гА до операции Ячейка 1000 гА после операции АР0 1000 гА до операции Ячейка 1000 гА после операции ЯЧВ 1000 гА до операции Ячейка 1000 гА после операции гХ после операции И01.

1000 ° йрй (вычитание). С = 2; Е = поле. Ч вычитается из гА. (Эквивалентна команде А00, только вместо Ч берется -Ч.) ° ЖП. (умножение). С = 3; Е = поле. Занимающее 10 байт произведение Ч и значения из гА заменяет содержимое регистров А и Х. В качестве знаков гА и гХ устанавливается алгебраический знак произведения (а именно — "+", если знаки Ч и гА были одинаковы, и "— ", если они были различны). ° 01У (деление).

С = 4; Г = поле. Значение из гА и гХ, рассматриваемое как 10-байтовое число гАХ со знаком гА, делится на значение Ч. Если Ч = 0 или если абсолютная величина частного не помещается в пяти байтах (это эквивалентно условию )гА! > ~Ч!), то регистры А и Х заполняются неопределенной информацией и для триггера переполнения устанавливается значение 1. В противном случае частное ~~~гАХ/Ч(( помещается в гА. а остаток ~((гАХ(шог1)Ч() — в гХ. После выполнения операции знаком гА становится алгебраический знак частного (а именно — "+", если знаки Ч и гА были одинаковы, и "— ", если они были различны). Знаком гХ после выполнения операции будет тот знак, который был у гА до ее выполнения. Примеры арифметических команд.

В большинстве случаев арифметические действия выполняются только со словами И1Х, которые являются одинарными пятибайтовыми числами. не упакованными в нескольких полях. Тем не менее можно выполнять арифметические операции и над упакованными словами И1Х, если принять некоторые меры предосторожности.

Для этого следует внимательно изучить приведенные ниже примеры. (Как и раньше, т обозначает неопределенное значение.) гА до операции Ячейка 1000 гА после операции гХ после операции И01 1000(1:1) гА до операции Ячейка 1000 гА после операции гХ после операции И01 1000 гА до операции гХ до операции Ячейка 1000 гА после операции гХ после операции 01Ч 1000 гА до операции гХ до операции Ячейка 1000 гА после операции гХ после операции ИЧ 1000 (Эти примеры были подготовлены с учетом той точки зрения, что лучше дать трудное, но полное описание, чем простое, но неполное.) Команды операций с адресами. В следующих операциях "адрес" М (возможно, индексированный) используется как число со знаком, а не как адрес ячейки памяти.

в ЕМТА (епгег А). С = 48; Р = 2. Величина М загружается в гА. Это действие эквивалентно команде кйраи для загрузки из памяти слова, содержащего число М со знаком. Если М = О, то загружается знак команды. Примеры. "ЕМТА 0" обнуляетгА и устанавливаетдля него знак "+". «ЕМТА 0,1" заносит в гА текущее содержимое индексного регистра 1, только -0 меняется на +О.

Действие команды "ЕМТА -0,1" аналогично, только +О меняется на -О. ° ЕМТХ (епФег Х вЂ” ввести Х). С = 55; Р = 2. ° ЕМТг' (еп1ег ( — ввести (). С = 48+ г'; Р = 2. Эти команды аналогичны ЕМТА, но только загружается соответствующий регистр. ° ЕММА (епгег пейасгее А — ввести А с обратным знаком). С = 48; Р = 3. ° ЕММХ (епсег пейас(те Х вЂ” ввести Х с обратным знаком). С = 55; Р = 3. ° ЕИИ? (епсег пе8агьте 1 — ввести ? с обратным знаком). С = 48+1; Г = 3. Эти команды идентичны ЕМТА. ЕИТХ и ЕИТ?, но в данном случае при загрузке знак меняется на противоположный. Пример. Команда "ЕИИЗ 0,3" меняет на противоположный знак содержимого регистра г?3, хотя — О так и остается — О.

° 1ИСА (шсгеаве А — увеличить А). С = 48; Р = О. К содержимому регистра гА добавляется величина М; это эквивалент команды А00 для добавления из памяти слова, содержащего величину М. Здесь также возможно переполнение, которое обрабатывается, как и в случае команды А00. Пример. Команда "1ИСА 1" увеличивает содержимое гА на единицу. я 1ИСХ (?псгеазе Х вЂ” увеличить Х), С = 55; Р = О.

Величина М добавляется к содержимому гХ. Если происходит переполнение, то оно обрабатывается так же. как в случае команды А00, только вместо гА используется гХ. Действие этой команды никогда не затрагивает регистр А. ° 1ИС? (?псгевзе 1 — увеличиты). С = 48+ 1; Р = О. К содержимому г?1 добавляется величина М. Переполнения быть не должно; если М+ г?1 не помещается в двух байтах, то результат команды считается неопределенным. ° ОЕСА (бесгеаве А — уменьшить А). С = 48; Р = 1. ° 0ЕСХ (бесгеаве Х вЂ” уменьшить Х). С = 55; Р = 1. ° 0ЕС? (с?есгеазе 1 — уменьшить 1).

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6417
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее