Презентация Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие онлайн
На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие абсолютно бесплатно. Урок-презентация на эту тему содержит всего 33 слайда. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Устройства и комплектующие » Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие
Оцените!
Оцените презентацию от 1 до 5 баллов!
- Тип файла:ppt / pptx (powerpoint)
- Всего слайдов:33 слайда
- Для класса:1,2,3,4,5,6,7,8,9,10,11
- Размер файла:124.30 kB
- Просмотров:71
- Скачиваний:0
- Автор:неизвестен
Слайды и текст к этой презентации:
№8 слайд
![Прямой код Плюсы Интуитивно](/documents_6/64b6d7fe4fb95d1712037f46c84b8634/img7.jpg)
Содержание слайда: Прямой код
Плюсы:
«Интуитивно понятен для человека»
Удобен при программировании на ассемблере
Используется в стандарте IEEE 754 – т.е. для представления чисел с плавающей точкой
Минусы:
Два способа записи для числа 0 (+0 и -0)
Сложная схемотехника для арифметических операций с числами разного знака
Позиция знакового бита зависит от количества разрядов (т.е. от типа переменной).
Но можно сделать знаковым нулевой бит!
№10 слайд
![Сложение в ограниченной](/documents_6/64b6d7fe4fb95d1712037f46c84b8634/img9.jpg)
Содержание слайда: Сложение в ограниченной разрядной сетке
Допустим, что у нас есть 4 двоичных разряда. В них можно представить только 16 разных чисел.
А что будет, если мы возьмем число 15 и прибавим к нему 1?
Должно получится 16, но для этого нужен пятый разряд. А его нет. Поэтому бит просто «потеряется».
Это называется переполнение (сверху) – integer overflow.
№11 слайд
![Сложение в ограниченной](/documents_6/64b6d7fe4fb95d1712037f46c84b8634/img10.jpg)
Содержание слайда: Сложение в ограниченной разрядной сетке.
Получилось, что в сетке из четырех разрядов 15 + 1 = 0.
Почему бы не отобрать двоичное представление числа 15 и не сказать, что так мы теперь кодируем -1?
А как представить -2? Так, чтобы -2+1 было равно -1.
По индукции, получаем следующее
№12 слайд
![это - это - это - это - ...](/documents_6/64b6d7fe4fb95d1712037f46c84b8634/img11.jpg)
Содержание слайда: 11112 + 1 = 0 это -1 + 1
11112 + 1 = 0 это -1 + 1
11102 + 1 = 1111 2 это -2 + 1
11012 + 1 = 1110 2 это -3 + 1
...
но нужно ведь когда-то остановится!
Удобно, если количество отрицательных и неотрицательных чисел одинаковое.
Тогда наименьшее отрицательное число будет
10002 – равное -8
Оставшиеся числа отдадим под неотрицательные.
№14 слайд
![Дополнительный код На](/documents_6/64b6d7fe4fb95d1712037f46c84b8634/img13.jpg)
Содержание слайда: Дополнительный код
На английском – «two’s complement» – «дополнение до двух».
Плюсы:
Удобная арифметика – вычитание через сложение!
Единственная запись числа 0
Простая смена знака схемотехникой (инвертировать все биты и прибавить 1)
Единица в старшем бите означает, что число отрицательное
Минусы:
Не очень-то удобно для человека
Отрицательных чисел на 1 больше чем положительных
Запись одинаковых чисел зависит от разрядной сетки!
№17 слайд
![Арифметика в ассемблере](/documents_6/64b6d7fe4fb95d1712037f46c84b8634/img16.jpg)
Содержание слайда: Арифметика в ассемблере
Целочисленная (в Cortex M3 «родная»)
С плавающей точкой (в Cortex M3 организована программно)
Векторная (в Cortex M3 отсутствует)
SIMD (single instruction multiple data) (в Cortex M3 отсутствует)
Дальше речь только о целочисленной арифметике, для которой есть специализированные инструкции
№18 слайд
![Арифметика в ассемблере](/documents_6/64b6d7fe4fb95d1712037f46c84b8634/img17.jpg)
Содержание слайда: Арифметика в ассемблере
Сложение
ADD r0, r1, r2 – сложение с переполнением (overflow) (короткая и длинная версии)
ADDW – длинная версия, поддерживает 12-битовый непосредственный операнд (wide)
ADDS – сложение с обновлением регистра состояния (Status); вообще S – это постфикс
ADC – сложение с учетом флага Carry (переноса)
ADCS - ?
ADDWS и ADDWC - ... отсутствуют.
№19 слайд
![Арифметика в ассемблере Что](/documents_6/64b6d7fe4fb95d1712037f46c84b8634/img18.jpg)
Содержание слайда: Арифметика в ассемблере
Что еще за флаг Carry?
Пусть мы складываем два десятичных числа из 3 цифр. Сколько цифр нам понадобиться (в худшем случае), чтобы записать результат?
4.
Почему?
Потому что в худшем случае: 999 + 999 = 1998
Это работает и в двоичном коде, ведь 1+1 = 10.
№20 слайд
![Арифметика в ассемблере Что](/documents_6/64b6d7fe4fb95d1712037f46c84b8634/img19.jpg)
Содержание слайда: Арифметика в ассемблере
Что еще за флаг Carry?
Флаг Carry (он же бит переноса) и есть этот дополнительный двоичный разряд при сложении.
Флаг Carry находится в регистре состояний.
Префикс S у команды означает, что «команда влияет на регистр статуса» – в том числе, может установить флаг Carry
Т.е. ADDS r0, r1,r2 – складывает содержимое двух регистров и может установить флаг переноса. Происходит точное сложение, без выхода за разрядную сетку!
№21 слайд
![Арифметика в ассемблере Что](/documents_6/64b6d7fe4fb95d1712037f46c84b8634/img20.jpg)
Содержание слайда: Арифметика в ассемблере
Что еще за флаг Carry?
ADC – сложение с учетом бита переноса (он просто прибавляется к слагаемым).
И зачем это нужно?
Чтобы складывать 64-битные (или еще более длинные) числа!
Сначала складываются младшие 32 бита (с выставлением бита переноса), потом складываются старшие 32 бита с учетом переноса!
№26 слайд
![Арифметика в ассемблере](/documents_6/64b6d7fe4fb95d1712037f46c84b8634/img25.jpg)
Содержание слайда: Арифметика в ассемблере
Вычитание
SUB r0, r1, r2 – вычитание, короткая и длинная версии (r0 = r1-r2) c переполнением снизу (underflow)
SUBW – длинная версия с 12-битовым непосредственным операндом
SUBS – вычитание с обновлением регистра состояния
SBC – вычитанием с учетом Carry (если carry = 0 – вычесть еще 1)
RSB r0,r1,r2 –> r0 = r2-r1 (вычитание наоборот).
SBCS, RSBS – понятно
RSBC, RSBW, SUBWS.. - отсутствуют
№27 слайд
![Арифметика в ассемблере](/documents_6/64b6d7fe4fb95d1712037f46c84b8634/img26.jpg)
Содержание слайда: Арифметика в ассемблере
Сложение и вычитание
А где в сложении и вычитании учитывался знак?
А нигде. Но почему?
Потому что целые отрицательные числа в архитектуре ARMv7 хранятся в дополнительном коде!
А числа в дополнительном коде можно складывать и вычитать, не обращая внимания на знак.
№30 слайд
![Арифметика в ассемблере](/documents_6/64b6d7fe4fb95d1712037f46c84b8634/img29.jpg)
Содержание слайда: Арифметика в ассемблере
Деление
Делить в дополнительном коде, не обращая внимания на знак, к сожалению, нельзя.
На ноль тоже делить нельзя...?
Но при делении можно не беспокоится, что результат не влезет в разрядную сетку.. правда?
К сожалению, нельзя:
int16_t a = -32768;
int16_t b = -1;
a = a/b; // ???
№31 слайд
![Арифметика в ассемблере](/documents_6/64b6d7fe4fb95d1712037f46c84b8634/img30.jpg)
Содержание слайда: Арифметика в ассемблере
Деление
UDIV r0, r1, r2 r0 = r1/r2 (беззнаковое деление)
SDIV r0,r1,r2 r0 = r1/r2 (знаковое деление)
На ноль делить нельзя.
Деление целочисленное, поэтому 1/2 = 0.
А как же сделать операцию % ?
a % b эквивалентно temp = a/b; result = a - temp*b; (так вот зачем нужен MLS!)
№33 слайд
![Сравнения в ассемблере CMP r](/documents_6/64b6d7fe4fb95d1712037f46c84b8634/img32.jpg)
Содержание слайда: Сравнения в ассемблере
CMP r0, r1 temp = r0 – r1, обновить регистр состояний, отбросить temp (аналогично SUBS temp, r0,r1)
CMN r0,r1 temp = r0 + r1, обновить регистр состояний, отбросить temp (аналогично ADDS temp, r0,r1)
TEQ r0,r1 (test equality), аналог ==, компилятором используется редко
Скачать все slide презентации Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие одним архивом:
Похожие презентации
-
Программирование на языке С. Модуль 2. Операции
-
Операции над числами
-
Программирование на языке высокого уровня. Битовые операции
-
Алгоритмические языки и программирование. Операции в языке Си
-
Операции в языке С (продолжение)
-
Знакомство со структурой программы на языке Паскаль
-
Операции над целыми числами div и mod
-
Программирование на языке Java. Примитивные типы данных. Операции, комментарии. (Лекция 2. 1)
-
Технология трехмерного твердотельного моделирования в программе КОМПАС -3D LT с применением команды кинематическая операция
-
Программирование на языке С. Лекция 6. Операции и операторы