Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Сочетание частичной проверки и проверки диапазона↑ ⇐ ПредыдущаяСтр 6 из 6 Содержание книги Поиск на нашем сайте
TEQ Rc,#127 ; Частичная проверка,CMPNE Rc,#" "-1 ; проверка диапазонаMOVLS Rc,#"." ; ЕСЛИ Rc<=" " ИЛИ Rc=ASCII(127) ТО Rc:="."
Деление и остаток от деления
Как правило, подпрограммы деления для конкретных задач предоставляется в виде исходной кодов библиотек стандарта ANSI C, поставляемых вместе с набором выбранных средств разработки (ARM Cross Development Toolkit). В целях ознакомления ниже приведены лишь некоторые из подпрограмм деления. ; Делимое находится в Ra, делитель - в Rb.MOV Rcnt,#1 ; Бит, управляющий делением.Div1 CMP Rb,#0x80000000 ; Перемещать Rb до тех пор, пока он больше RaCMPCC Rb,RaMOVCC Rb,Rb,ASL#1MOVCC Rcnt,Rcnt,ASL#1BCC Div1MOV Rc,#0Div2 CMP Ra,Rb ; Проверить на возможность простого вычитания.SUBCS Ra,Ra,Rb ; Вычесть если все ОК,ADDCS Rc,Rc,Rcnt ; разместить соответствующий бит в результатMOVS Rcnt,Rcnt,LSR#1 ; бит, управляющий сдвигомMOVNE Rb,Rb,LSR#1 ; делить на 2, пока не закончено.BNE Div2 ; Результат деления размещен в Rc ; Остаток от деления - в Ra. Контроль за переполнением в ARM7TDMI
1. Переполнение при умножении чисел без знака с 32-битным результатом UMULL Rd,Rt,Rm,Rn ; От 3 до 6 (включительно) машинных тактов TEQ Rt,#0 ; +1 такт при переполнении регистра BNE overflow
2. Переполнение при умножении чисел со знаком с 32-битным результатом SMULL Rd,Rt,Rm,Rn ; От 3 до 6 (включительно) машинных тактов TEQ Rt,Rd ASR#31; +1 такт при переполнении регистра BNE overflow
3. Переполнение при умножении с накоплением чисел без знака с 32-битным результатом UMLAL Rd,Rt,Rm,Rn ; От 3 до 7 (включительно) машинных тактов TEQ Rt,#0 ; +1 такт при переполнении регистра BNE overflow
4. Переполнение при умножении с накоплением чисел со знаком с 32-битным результатом SMLAL Rd,Rt,Rm,Rn ; От 4 до 7 (включительно) машинных тактов TEQ Rt,Rd, ASR#31; +1 такт при переполнении регистра BNE overflow
5. Переполнение при умножении с накоплением чисел без знака с 64-битным результатом UMULL Rl,Rh,Rm,Rn ; От 3 до 6 (включительно) машинных тактовADDS Rl,Rl,Ra1 ; накопление для младшего словаADC Rh,Rh,Ra2 ; накопление для старшего слова BCS overflow ; +1 такт при переполнении обоих регистров
6. Переполнение при умножении с накоплением чисел со знаком с 64-битным результатом SMULL Rl,Rh,Rm,Rn ; От 3 до 6 (включительно) машинных тактовADDS Rl,Rl,Ra1 ; накопление для младшего словаADC Rh,Rh,Ra2 ; накопление для старшего слова BVS overflow ; +1 такт при переполнении обоих регистров
Примечание: контроль за переполнением не имеет смысла при умножении чисел со знаком и без знака с 64-битным результатом, т.к. операнды - 32-битные слова, и поэтому переполнение в этом случае никогда не возникает.
Генератор псевдослучайных чисел
Часто при разработке программ требуются генераторы псевдо-случайных чисел. Самые эффективные алгоритмы основаны на командах исключающее ИЛИ вместе с командами циклического побитового сдвига. К сожалению, для генерации 32-битного результата требуется более одной обратной связи, чтобы добиться максимального диапазона (т.е. 2^32-1 циклов перед повторение псевдослучайной последовательности), поэтому приведенный ниже пример использует в своей работе 33-битный регистр с "рабочими" битами 33 и 20. Формула для работы алгоритма: <новый бит>=<бит 33> EOR <бит 20>, сдвиг влево 33-битного числа и размещение <нового бита> в младшем разряде; эта операция требует обработки всех <новых битов> (т.е. 32 бита). Вся цепочка по получении одного псевдослучайного числа выполняется за 5S машинных тактов: ; Опорное случайное число в Ra (32 бита), + 1 бит в младшем бите Rb, используется Rc.TST Rb,Rb,LSR#1 ; Старший бит поместить во флаг переносаMOVS Rc,Ra,RRX ; 33-битный циклический сдвиг вправоADC Rb,Rb,Rb ; перенос разместить в младшем бите RbEOR Rc,Rc,Ra,LSL#12EOR Ra,Rc,Rc,LSR#20; Новое псевдослучайное число размещается Ra.
|
||||
Последнее изменение этой страницы: 2021-12-07; просмотров: 69; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.149.235.66 (0.008 с.) |