Рабочие задания. Схема для определения принадлежности выводных концов к одной фазе представлена на рисунке 1.
Схема для определения принадлежности выводных концов к одной фазе представлена на рисунке 1.
Рисунок 1 Схема для определения одноименных выводов фазных обмоток представлена на рисунке 2. рисунок 2
Результаты исследования и расчеты приведены в таблицах 1 и 2. Таблица 1. Соединение звездой
Таблица 2
Соединение треугольником
Расчетные формулы:
P2=0.105M*n f2=f1*s Графики зависимостей смотри на рисунках ниже.
Соединение звездой.
Соединение треугольником.
Соединение звездой.
Соединение треугольником. Введение В данной лабораторной работе будет рассмотрена работа с байтами, подсчет единиц и нулей в заданных байтах. Все подробно описано и изложено в ходе работы.
Программное обеспечение MacBook Air середина 2011 OS X Yosemite 10.10.5 Microsoft Office 2016 Mac beta version. Консольные пакеты sudo(права root) nasm(свободное ПО) bash(эмулятор терминала) nano(редактирование) screenme(c ключем -all)
Цели работы Изучить организацию работы с отдельными битами, изучить общие свойства цепочечных команд, команд двоично-десятичной арифметики Рабочие задания 1. Напишите программу, подсчитывающую количество единиц в заданном байте или слове:
2. Измените программу для подсчета нулей. 3. Задан массив байтов А из чисел со знаками. Напишите программу, подсчитывающую количество отрицательных элементов массива. Ваш любой вариант принимается. А теперь напишите с использованием команды TEST. 4. Измените программу для подсчета положительных элементов массива. 5. Напишите программу преобразования двух неупакованных BCD-чисел в слове памяти в упакованное BCD-число в регистре AL. 6. Напишите программу пересылки символов из одной строки в другую
7. Напишите программу посимвольного (поэлементного) сравнения двух строк. 8. Напишите программу поиска заданного символа в заданной строке, осуществите замену этого символа на другой, введенный с клавиатуры или заранее определенный в памяти. 9. Напишите программу, которая сравнивает две строки и первый несовпавший элемент помещает в регистр AL. 10. Написать программу вычисления по формуле: y= (a+b)3 /(c-d)2.
Выполнение работы: Для начала нужно написать программу количество единиц и нулей в байте. Перед началом работы проверим запущена ли нужная среда NASM. Для этого в консоли можно ввести nsm –v, тем самым попросив nasm показать свою версию. Если программа откликнется, значет процесс уже запущен в системе. Данное действие показано на рисунке №1 Рисунок №1 После того как проверили работоспособность nasm присутпим к написанию кода. Ислодовать байт будем через массив, я думаю это допустимо по причине явного указания на исследование любого байта. Также не было указано какого именно байта, и от куда его вытаскивать. Поэтому задача является корректной. Исходники представлены на рисунках №2 и №3 соответственно. Рисунок №2 Рисунок №3 Результат ассемблирования и транслирование исходного кода показано на рисунке №4. А имеено выполнение прогаммного кода по подсчету едениц в байте.
Рисунок №4 Далее по той же аналогии считаем количество 0 в байтовай строке. Это продимонстрировано на рисунке №5 Рисунок №5 Так как не понятно что считает программа каждыую выходную переменную мы допишем. Итоговая программа показана на рисунке №6. Ошибка показанная на рисунке ниже “типичная” ошибка при обращении в память именно этой версии nasm. На оффициальном сайте develop.apple.com при возникновении данной и подобных ошибок установить вместо стандартной предложенную версию nasm. Данная проблема исправляется перезапуском программы. Рисунок №6 По такой же аналогии ищем положительные и отрицательные числа массиве. Но откорректировав программу согласно данному заданию. Измененная часть показана на рисунке №7 Рисунок №7 Не дублируя один раз код, создадим 3 одинаковых массива и сделаем следующее: подсчитаем сумму элементов, Результат ассемблирования и выполнения кода показан на рисунке №8 Рисунок №8 Метод реализации программного кода, а имеено та часть где испоьзуется искомая команда, то есть команда TEST, показан на рисунке № 9 Рисунок №9 Далее напишем небольшую программу для сравнивания строк между собой. Основная часть программы(кусок кода) показано на рисунке №10, работоспособность Unix-исполняемого файла продемонстрировано на риунке №12 соответственно. Рисунок №11 Блок с кодом в котором присутствеют сами строки для сравнения показан на рисунке №12 Рисунок №12 Результат сравнения показан на рисунке №13. Значение 0 показывает что при посимвольном сравнивании строк они идентичны. Для расширения программы возможно сделать явное указание на измененные символы. Рисунок №13 Модифицировав программу вместо результата 0 будем делать поиск символа 1 строки из 2 строки. Результат показан на рисунке №14 Рисунок №14 Для повышения регистра в поиске символа мы будем использовать модуль vesa. А именно встраиваемый блог работы с символами и регистром. Также можем поместить в данном случае символ «С» в регистр AL. Далее в заключение составим небольшую программу вычисления по формуле искомых значений. Так как неизвестных переменных 4 это: a, b, c, d. Так как вариация значений может быть очень обширная то мы будем использовать массивы и метод подбора, а именно значения от 0 до 1. Часть исходного кода, конкретнее сама функция показана на рисунке № 15 Рисунок №15 Звездочки указывают на ошибку подпрограммы показанную на рисунке №15. Ошибка в данной уравнении указывает на то что программа не могла разделить на 0. Реализовано очень просто. Созданный масив изначально весь имел вид * * * * *. Данные просто перезаписываются и кладутся в определенные ячейки перезаписывая данные с * на нужное значение. Итоговая(конечная) программа после ассемблирования и транс-лирования показана на рисунке №16. Рисунок №16
Контрольные вопросы 1. Какие флаги изменяются при выполнении арифметических, логических команд? 2. Где находятся сомножители и результат при выполнении команды умножения? 3. Где находятся делимое, делитель и результат при выполнении команды деления? 4. В каком регистре хранится длина строки в цепочечных командах? 5. Как адресуются строковые операнды?
Ответы на вопросы Заключение В данной лабораторной работе я работал с массивами данных, строками, и сравниванием вышеперечисленного. Также рассмотрел простые арифмитические действия, а именно работа с математическими функциями.
Список литературы 1. wikiTaxi // Assembler NASM 2. wikiTaxi // Основные команды NASM 3. wikiTaxi // Ядро Darwin 4. wikiTaxi // Компиляция пакетов
|