Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/30: Рейтинг темы: голосов - 30, средняя оценка - 4.93
14 / 14 / 0
Регистрация: 25.01.2013
Сообщений: 35

А.В. Максимов Проектирование ассемблерных программ вычислительных алгоритмов

25.01.2013, 23:52. Показов 6285. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Предлагаю обсудить книгу
А.В. Максимов Проектирование ассемблерных программ вычислительных алгоритмов
Учебное пособие для студентов направления "Информатика и вычислительная техника"
Издательство МГТУ им. Н.Э. Баумана 2012г, 192 стр.
Видил в продаже в Москве на новом Арбате в МДК
Знаю две ошибки: стр 21, стр 48
Содержание
ПРЕДИСЛОВИЕ
1. МАСШТАБИРОВАНИЕ ДАННЫХ В ЦВМ
1.1. ФОРМЫ ЗАПИСИ ЧИСЕЛ
1.2. ОПРЕДЕЛЕНИЕ МАСШТАБА
1.3. МЕТОДЫ РЕШЕНИЯ ЗАДАЧИ МАСШТАБИРОВАНИЯ
1.3.1 МЕТОД ФИКСИРОВАННОГО ФОРМАТА
МАШИННОЙ ПЕРЕМЕННОЙ
1.3.2 МЕТОД ФИКСИРОВАННОГО МАСШТАБА
1.4. ПРИМЕРЫ ПРЕДСТАВЛЕНИЯ ДАННЫХ В ЦВМ
1.5. ОСОБЫЕ СЛУЧАИ МАСШТАБИРОВАНИЯ ДАННЫХ
1.5.1. ПРЕДСТАВЛЕНИЕ ОТРИЦАТЕЛЬНЫХ ЧИСЕЛ
1.5.2. НАИБОЛЬШЕЕ ЗНАЧЕНИЕ ПЕРЕМЕННОЙ
РАВНО ЦЕЛОЙ СТЕПЕНИ ДВОЙКИ
1.5.3. ПОГРЕШНОСТЬ ОЦИФРОВКИ
1.5.4. ПРЕДСТАВЛЕНИЕ ДРОБЕЙ
1.5.5. ПРЕДСТАВЛЕНИЕ ЧИСЛА РАЗНЫМИ МАСШТАБАМИ
1.6. РЕШЕНИЕ ЗАДАЧИ МАСШТАБИРОВАНИЯ
С ПОМОЩЬЮ ЦЕН
ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ
2. МАСШТАБИРОВАНИЕ ПРОСТЕЙШИХ
АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ
2.1. МАСШТАБИРОВАНИЕ ОПЕРАЦИЙ СЛОЖЕНИЯ И
ВЫЧИТАНИЯ
2.1.1. ВЫВОД ОСНОВНЫХ МАСШТАБНЫХ
СООТНОШЕНИЙ
2.1.2. РЕАЛИЗАЦИЯ ОПЕРАЦИИ СЛОЖЕНИЯ/ВЫЧИТАНИЯ
В МИКРОПРОЦЕССОРАХ x86 ФИРМЫ Intel
2.2. ОСОБЫЕ СЛУЧАИ ПРОГРАММИРОВАНИЯ
ОПЕРАЦИЙ СЛОЖЕНИЯ И ВЫЧИТАНИЯ
2.2.1. ПРОГРАММИРОВАНИЕ ОПЕРАЦИИ СЛОЖЕНИЯ
ПЕРЕМЕННОЙ С КОНСТАНТОЙ
2.2.2 МАСШТАБИРОВАНИЕ ОПЕРАЦИИ СЛОЖЕНИЯ
ПЕРЕМЕННЫХ С ОДИНАКОВЫМИ МАСШТАБАМИ
2.2.3. ПРОГРАММИРОВАНИЕ ОПЕРАЦИИ СЛОЖЕНИЯ
ПЕРЕМЕННЫХ С СУЩЕСТВЕННО РАЗЛИЧНЫМИ
МАСШТАБАМИ
2.3. МАСШТАБИРОВАНИЕ ОПЕРАЦИИ УМНОЖЕНИЯ
2.3.1. ВЫВОД ОСНОВНЫХ МАСШТАБНЫХ
СООТНОШЕНИЙ
2.3.2. УЧЕТ ОСОБЕННОСТЕЙ РАБОТЫ КОНКРЕТНОЙ ЦВМ
2.3.3. РЕАЛИЗАЦИЯ ОПЕРАЦИИ УМНОЖЕНИЯ
В МИКРОПРОЦЕССОРАХ x86 ФИРМЫ Intel
2.4. ПОВЫШЕНИЕ ТОЧНОСТИ ОПЕРАЦИИ
УМНОЖЕНИЯ
2.5. МАСШТАБИРОВАНИЕ ОСОБЫХ СЛУЧАЕВ
ОПЕРАЦИИ УМНОЖЕНИЯ
2.5.1. МАСШТАБИРОВАНИЕ УМНОЖЕНИЯ ПЕРЕМЕННОЙ
НА ПОСТОЯННУЮ ОБЩЕГО ВИДА
2.5.2. МАСШТАБИРОВАНИЕ УМНОЖЕНИЯ ПЕРЕМЕННОЙ
НА КОСТАНТУ В ВИДЕ ЦЕЛОЙ СТЕПЕНИ ДВОЙКИ
2.5.3. ЗАМЕНА ОПЕРАЦИИ УМНОЖЕНИЯ ОПЕРАЦИЯМИ
СДВИГША И СЛОЖЕНИЯ
2.6. МАСШТАБИРОВАНИЕ ОПЕРАЦИИ ДЕЛЕНИЯ
2.6.1. ВЫВОД ОСНОВНЫХ МАСШТАБНЫХ
СООТНОШЕНИЙ
2.6.2. РЕАЛИЗАЦИЯ ОПЕРАЦИИ ДЕЛЕНИЯ В
МИКРОПРОЦЕССОРАХ x86 ФИРМЫ Intel
2.7. ОСОБЫЕ СЛУЧАИ МАСШТАБИРОВАНИЯ
ОПЕРАЦИИ ДЕЛЕНИЯ
2.7.1. МАСШТАБИРОВАНИЕ ОПЕРАЦИИ ДЕЛЕНИЯ ПРИ
ИЗВЕСТНОМ МИНИМАЛЬНОМ ДЕЛИТЕЛЕ
2.7.2. МАСШТАБИРОВАНИЕ ОПЕРАЦИИ ДЕЛЕНИЯ
НА ПОСТОЯННУЮ
ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ
3. МАСШТАБИРОВАНИЕ ВЫЧИСЛИТЕЛЬНЫХ
ПРОЦЕССОВ
3.1. МЕТОДИКА ПРОЕКТИРОВАНИЯ АССЕМБЛЕРНОЙ
ПРОГРАММЫ ВЫЧИСЛИТЕЛЬНОГО ПРОЦЕССА
3.2. ВЫЧИСЛЕНИЕ ПОЛИНОМА
3.3. ВЛИЯНИЕ ЗНАЧЕНИЯ ШАГА АРГУМЕНТА НА
ТОЧНОСТЬ ВЫЧИСЛЕНИЯ ПОЛИНОМА
3.4. ВЫЧИСЛЕНИЕ ФУНКЦИИ синус,
ПРЕДСТАВЛЕННОЙ РАЗЛОЖЕНИЕМ В РЯД
МАКЛОРЕНА
3.5. РЕШЕНИЕ ЛИНЕЙНОГО ДИФФЕРЕНЦИАЛЬНОГО
УРАВНЕНИЯ ВТОРОГО ПОРЯДКА
ЗАКЛЮЧЕНИЕ
ЛИТЕРАТУРА
ПРИЛОЖЕНИЯ
........
В. ПРЕДСТАВЛЕНИЕ НЕКОТОРЫХ ДРОБЕЙ В
ДВОИЧНОЙ СИСТЕМЕ СЧИСЛЕНИЯ
Г. ОСНОВНЫЕ ФОРМУЛЫ ТЕОРИИ МАСШТАБИРОВАНИЯ
ДАННЫХ В ЦВМ
Д. ТЕКСТЫ ПРОГРАММ ВЫЧИСЛЕНИЯ ПОЛИНОМА
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.01.2013, 23:52
Ответы с готовыми решениями:

Проектирование алгоритмов и программ с использованием цикла с предусловием
Значения функций {f}_{1}(x)=2.5+sin4x и {f}_{2}=2cos(\frac{x}{3}) определены в точках x={x}_{0}({h}_{x}){x}_{n} . Найти среднее значение...

Блок-схемы ассемблерных программ
Как их делают и на что они похожи? Нету примерчика?

Оптимизация ассемблерных программ арифметических операций
Здесь будет приведено краткое изложение книги А.В. Максимова «Проектирование ассемблерных программ вычислительных алгоритмов». Книга вышла...

10
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16372 / 7684 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
26.01.2013, 05:20
K_1212,
Смысл обсуждать оглавление? Отсканируй и выложи в треде или еще где нибудь - чтобы было ЧТО обсуждать или выкладывай сомнительные с твоей точки зрения главы и причину сомнений А две ошибки (стр 21, стр 48) могут быть банальными опечатками...
0
14 / 14 / 0
Регистрация: 25.01.2013
Сообщений: 35
26.01.2013, 20:54  [ТС]
Mikl___ !
А Вы смогли бы назвать еще одну с подобным содержанием? В моей библиотеке хоть как-то наподобии приведенной - 1985 года издания!. Вы многим поясняете на форумах здесь и WASM.RU как правильно разделить числа, как правильно умножить числа со знаками и без. А это учебное пособие как раз предназначено для студентов, изучающих ассемблер. Вы можете указать, где посмотреть как решить дифференциальное уравнение на ассемблере в числах с фиксированной запятой? В этом смысле содержание - первое что мы смотрим в новой книге. Поэтому я его и привел. А ошибки - это действительно опечатки, технические оплошности.
В моем представлении материал книги поможет по новому взглянуть на программирование вычислительных процессов на 64 разрядных машинах.
0
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
27.01.2013, 00:37
K_1212, ну есть книжки Юрова (учебник и практикум), так там довольно таки хорошо объяснено деление умножение сложение и т.д. коррекция при сложении\вычитании, да и к тому же в практикуме очень хорошие примеры кода. так что хвастаться "индивидуальностью" я думаю не стоит... а в этой книге есть что-то про матрицы, массивы, поиск в массивах, сортировки и т.д.? такие темы мало освещены... но их то я и не наблюдаю в содержании.

Добавлено через 1 минуту
Цитата Сообщение от K_1212 Посмотреть сообщение
В моем представлении материал книги поможет по новому взглянуть на программирование вычислительных процессов на 64 разрядных машинах.
каким это образом?
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16372 / 7684 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
27.01.2013, 05:06
Цитата Сообщение от K_1212 Посмотреть сообщение
А Вы смогли бы назвать еще одну с подобным содержанием?
K_1212,
я не могу судить о книге только по приведенному оглавлению, повторюсь, выкладывайте ее по главам, чтобы было полнокровное обсуждение, а не просто реклама, если модераторы сочтут стоящим, то ветку закрепят, а вас сделают модератором темы...
0
14 / 14 / 0
Регистрация: 25.01.2013
Сообщений: 35
28.01.2013, 01:31  [ТС]
Fatal Error
Так уж наверное устроен человек - каждый говорит о том, что у него болит! Пузырьки в сортировке конечно хороши, но это очень большое свое собственное направление обработки чисел (и не только чисел!). А вот с матрицами Вы попали в 10-ку. Остается ожидать, что в новом издании автор покажет как работать с ними. Но заметьте, что вычислять обратную и/или транспонированную матрицы, вычислять собственные числа матриц - надо хорошо уметь умножать и делить числа. Особенно если они задаются в формате c фиксированной запятой (db, dw, dd, dq).
Очень часто возражают: да зачем сегодня, при современной технике, нужно знать особенности умножения и деления операндов с фиксированной запятой. все просто решается на FPU, SSE! Все прекрасно. Но вот захотелось мне сделать, скажем для своего собственного удовольствия, безпилотник-квадролет. Для создания его системы управления купил у Аналога Девайс микросхемочку, у которой трехкоординатный линейный акселрометр, трехкоординатный ДУС, трехкоординатный магнитрометр. Остается найти контроллер и запрограммировать в него хотябы решение навигационной задачки, которая заключается в интегрировании, как минимум, системы из 9-ти дифференциальных уравнений. Intel даже 386 туда не поставишь, а AVR-ки
или их подобие в лучшем случае 32-х разрядные. Организовывать вычисления с плавающей запятой при 32-х разрядах значит ухудшить точность по сравнению с фиксированной запятой в 128 раз. При этом еще и быстродействие будет хуже.
Простая задача: в восьми разрядной машине (для простоты организации решения примера) вычислите значения частного от деления y=x/C,
где х = {-300, +300}, а С=3,0625 - постоянная. Вычисления должны быть с максимальной точностью. В книге, в разделе "Особые случаи операции деления" подобный пример рассматривается, объясняется его механизм.
Подобных примеров с объяснением механизмов нет ни у Юрова, ни у Голубь, ни у Пирогова, ни у Крупника, ни у Зубкова, ни у Магды, ни у Финогенова, ни у Галисеева, ни у Аблязова (Грузина), ни у Кип Р. Ирвина. Плпробуйте ее решить без примера из приведенной книги.
Mikl___
И Вас не заинтриговало в приведенном содержании методы повышения точности операции умножения!?
Если Вы это знаете, то, если не секрет, откуда? Как я после наполучали шишек от заказчика или движение собственных мыслей.
Мне показалось, что Вы сегодня дали самый простой совет Damage1979 - вычислять корень из 16-ти разрядного числа через FPU. Но он просил, я так понял, без FPU. (Я не беру в учет табличный метод). Какие Вы видите сложности при вычислении квадратного корня в 16-разрядной машине?
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16372 / 7684 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
28.01.2013, 03:52
Цитата Сообщение от K_1212 Посмотреть сообщение
не заинтриговало в приведенном содержании методы повышения точности операции умножения!?
K_1212,
  1. что ходить вокруг да около, начинайте выкладывать главы и будем их публично обсуждать, как я понял, автор собирается выпускать второе издание и мнение практиков ему не помешает, если стесняетесь, то можете общаться через "личные сообщения"
  2. Если Damage1979 требуется целочисленное вычисление квадратного корня, то ему следовало прямо об этом написать, но он об этом ни гу-гу, а у меня экстрасенсорные способности понижены
0
14 / 14 / 0
Регистрация: 25.01.2013
Сообщений: 35
30.01.2013, 23:11  [ТС]
Приведу пример решения конкретной задачи Damage1979
по методике из цитируемой книги
Задача : вычислить квадратный корень числа в формате DW, введенного с клавиатуры.
1. Уточняем условие и подыскиваем метод решения (пока аналитический)
Пусть необходимо получить таблицу квадратного корня их числа Х, где Х будет меняться от 0,0625 до 36 с шагом 0,0625 с максимальной точностью для данных типа DW, за минимальное число тактов работы процессора. (Разумеется диапазон Х и его шаг изменения взяты с потолка) Шаг кратный целой степени двойки взят с целью устранения ошибки оцифровки аргумента.
Один из распространенных алгоритмов вычисления корня имеет вид:
Y(i+1) =0,5*(Y(i) + X/(2*Y(i)) (1)
Число итераций определяется величиной начального значения корня Y(0): чем точнее его значение, тем меньше число итераций.
Проблема, возникающая при решении нашей задачи:
Каким назначить Y(0), чтобы программа была универсальной для выбранного диапазона аргумента. Для аргументов Х<1 начальное значение должно быть > Х, а
для Х>1, наоборот, Y(0) должно быть < Х. В файле корень.xls приведены результаты расчетов по формуле (1) в Excel. В этом примере можно поиграться с Y(0). Если взять начальное значение Y(0)=1, то аргументы >1 будут иметь 6-8 итераций. Это разумеется плохо. Примем Y(0)=Х/4, так как аргументов Х>1 значительно больше, чем аргументов Х<1 и начальное значении корня хоть как-то будет подстраиваться под Х.
2. Арифметический алгоритм решения задачи:
Y(0)=X/4
M1: Z1 = 2*Y(i)
Z2 = X(j) /Y (i)
Z3 = Y(i) + Z2
Y(i+1) = 0,5*Z3
If (Y(i) – Y(i+1)) равно или меньше 1h - конец счета для X(j)
I=i+1
Jmp M1.
3. Масштабирование операций арифметического алгоритма:
Деления Х на 4, Z3 на 2 и умножения Y(i) на 2 в машине выполнять не будем. Эти действия учтем в масштабах. Операцию деления будем выполнять с повышением точности, так как делитель имеет конкретное минимальное значение (не более 0,0625), которое значительно больше минимального машинного знаменателя.
Приведу результаты без подробных выкладок:
Мх=2^(-6), My=2^(-3), Mz1=2^(-4), Mz2=2^(-4), Mz3=2^(-4), запас по точности операции деления – 14.
4. Основное тело программы:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
m2:  xor ax,ax
xor  bx, bx
xor  cx, cx
xor  dx, dx
mov  k, 0   ; k - счетчик итераций
;--------------------------
mov  bp,; Х(j)  в ОЗУ
mov  bx, bp ; У(0) = X/4
ms:
mov  ax, bp
cwd
shld  dx, ax,14 ; деление Х/(Уi)
sal ax,14   ;  c повышенной точностью
idiv  bx        ;
sar bx,1    ; выравнивание масштабов перед сложением
add  bx, ax
;-----------------
; проверка на окончание вычислений
;     с данным Х(j)
sub cx,bx   
inc k
cmp cx,1h
jbe ms1
mov cx, bx
jmp ms
ms1: mov y, bx  ; У --> в память
Полный текст программы для MS DOS (для этой ОС программа меньше) см в файле SQRT.asm.
Для надежного окончания вычисления корня конкретного Х(j) пришлось ввести сравнение на отличие очередной итерации от предыдущей не более чем 1h. В случае проверки условия Y(i) –Y(i+1)=0 наблюдалось «зависание» программы из-за бесконечного цикла. Причину этого пока не выяснил.
Результаты работы программы в файле SQRT.dat. Анализ результатов – в файле квадратный корень.xls. Подавляющее число итераций для вычисления корня – 4, диапазон числа итераций 3..8. Самая большая относительная погрешность вычислений -0,04%. Приведенная относительная погрешность значительно меньше.
Задача решена - время на решение с оформлением всех материалов – 5 часов.
Попытался повысить точность в два раза путем изменения IDIV на DIV (это казалось бы можно, так как все переменные положительные), но пока не получилось. Буду разбираться.
Данный метод хорошо формализуем и можно применять для САПР.
Mikl___
Ваше решение, приведенное у Damage1979, красивое! Какова его точность?

Добавлено через 38 минут
Что-то сделал не так, не вставился архивный файл.
Попробую еще раз.
0
14 / 14 / 0
Регистрация: 25.01.2013
Сообщений: 35
30.01.2013, 23:22  [ТС]
Опять мимо. Не знаю куда девается вставляемый файл!
Вложения
Тип файла: rar Корень.rar (130.9 Кб, 62 просмотров)
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16372 / 7684 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
31.01.2013, 16:21
K_1212,
  • вычисление целой части корня, если предварительно Х умножить на 100, то корень будет вычисляться с точностью до 0,1.
  • На WASM.RU какой у вас был ник?
  • выкладывайте еще главы, мне понравилось
0
14 / 14 / 0
Регистрация: 25.01.2013
Сообщений: 35
02.02.2013, 21:46  [ТС]
Mikl___
На Wasm.ru я под тем же ником. Вы мне присылали Вашу программу решения квадратного корня.
Скорее всего открою новую тему и попробую кратко изложить суть книги.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.02.2013, 21:46
Помогаю со студенческими работами здесь

Проектирование вычислительных сетей в среде NetCracker
Проектирование вычислительных сетей в среде NetCracker. Напишите дипломку на эту тему где то 15-20 листов!!!! и скиньте эту программу пож....

Создание ассемблерных программ с использованием процедур, условных и безусловных переходов и циклов
Прошу помочь с лабораторкой. Дали задание, но ничего не объяснили, очень трудно удается делать это. Может кто-то рабочий код к похожему...

Разработка и отладка алгоритмов и программ с использованием шаблонов классов и алгоритмов библиотеки STL
1. Создать объект-контейнер и заполнить его данными. 2. Просмотреть контейнер. 3. Изменить контейнер, удалив из него одни...

Разработка алгоритмов и программ с использованием под программ
дано действительные числа a, b. Получить u=min(a,b) v=min(ab,a+b) min(u+v2,3,14)

Написание простых вычислительных программ
Изучаю программирование, нужно до завтра написать пару программ, прошу у Вас помощи. У понимающих программистов займет пару минут. Заранее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru