Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 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; просмотров: 115; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.236 (0.007 с.) |