Проектування програмних засобів на мові Assembler та в інтерпретаторі Shell
Ознайомлення з графічним інтерфейсом користувача Linux. Характеристика особливостей системного програмування в shell–інтерпритаторі. Дослідження та аналіз процесу створення модулів. Визначення основних переваг та недоліків робочих столів користувача.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | украинский |
Дата добавления | 15.05.2015 |
Размер файла | 29,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
«Київський національний університет технологій та дизайну»
Кафедра Інформаційних технологій проектування
КОНТРОЛЬНА РОБОТА
З дисципліни: “Системне програмування та операційні системи”
На тему: “Проектування програмних засобів на мові Assembler та в інтерпретаторі Shell”
Виконав:
студент гр. БІТ-3-09
Шпурик К. О.
Перевірив:
доц. Голубєв Л. П.
Київ 2012
Операційна система Linux (Ubuntu ). Системне програмування в shell - інтерпритаторі.
Графічний інтерфейс користувача Linux
Система X Window версії 11 (далі X Window або Х11) - це бібліотека графічних програм, що використовується для створення графічного інтерфейсу користувача в операційній системі Linux.
В основу X Window покладена мережна архітектура типу “клієнт-сервер”, проте її реалізація відрізняється від загальноприйнятих уявлень. В функції Х-клієнта, який може знаходитись на будь-якій машині комп'ютерної мережі, входить обробка даних, тобто виконання будь-якої конкретної задачі. Х-сервер приймає запити від користувача, відсилає їх Х-клієнту, а потім відображає на дисплей користувача отримані відповіді від Х-клієнта. Саме тому Х-сервер повинен працювати на локальному комп'ютері, відображаючи інформацію користувачеві, в той час як Х-клієнт може знаходитись на будь-якій машині, підключеній до мережі. До одного Х-клієнта можуть надходити запити від різних користувачів, тобто Х-клієнт стає спільно використовуваним ресурсом. Така клієнт-серверна архітектура дозволяє взаємодіяти програмам, які працюють під керуванням різних операційних систем і на різних апаратних платформах.
X Window орієнтована не тільки на мережі, в багатьох випадках Х-сервер і Х-клієнт знаходяться на одному комп'ютері. Наприклад, якщо запустити на виконання програму xcalc, тоді головна програма системи X Window, що знаходиться в каталозі /usr/X11R6/bin/X, виконує роль Х-сервера, а програма xcalc - роль Х-клієнта. Є велика кількість різноманітних Х-клієнтів, найважливішими з яких є такі:
- менеджери дисплея;
- менеджери вікон;
- робочі столи;
- стандартні програми (калькулятор, годинник і т.д.)
В Linux, як і в Unix, на одному комп'ютері є 7 умовних консолей (консоль - це сукупність “клавіатура + дисплей”). Після завантаження Linux користувач попадає в одну з консолей, а потім він може перемикатися між різними консолями і працювати в будь-якій з них. В перших шести консолях реалізований текстовий режим роботи, а в сьомій консолі працює Х-сервер. Для переходів із текстової консолі в будь-яку іншу консоль необхідно натиснути комбінацію клавіш <Alt> + <Fz> (де z=1,2,…,7), а для переходу з графічної консолі потрібно натиснути комбінацію клавіш <Ctrl> + <Alt> + <Fz>, де z=1,2,…,6.
Менеджери вікон
Менеджер вікон (інша назва - диспетчер вікон, адміністратор вікон) - це Х-клієнт, який дає можливість керувати вікнами прикладних і системних програм: змінювати їх розміри, переміщати по екрану, згортати вікна в піктограму і виконувати багато інших функцій. На основі менеджерів вікон реалізовані найбільш складні програмні продукти графічного інтерфейсу Linux - робочі столи GNOME та KDE. Проте, менеджери вікон можуть працювати і самостійно, забезпечуючи мінімальний набір послуг з керування вікнами.
Розглянемо можливості менеджерів вікон на прикладі менеджера twm (tab window manager). Завдяки малому розміру і зручності в використанні twm до цих пір широко використовується. За його допомогою легко вивчати основні функції менеджерів вікон: переміщення вікон програм, зміна розмірів вікон, згортання вікна в піктограму, виконання команд миші і клавіатури, запуск на виконання Х-клієнтів. Головне меню менеджера twm має такий вигляд:
Twm
Iconify
Resize
Move
Raise
Lower
Focus
Unfocus
ShowIconmgr
HideIconmgr
Xterm
Kill
Delete
Restart
Exit
Наприклад, за допомогою пункту меню Xterm можна вивести на екран дисплея вікно текстового терміналу, в якому за допомогою команд операційної системи можна далі викликати будь-якого іншого Х-клієнта, чи виконати ще яку-небудь дію. За допомогою пункту меню Kill можна зняти з виконання Х-клієнта.
Важливою перевагою twm є можливість зміни системних функцій і додавання нових функцій у відповідності з потребами користувачів.
До найбільш відомих менеджерів вікон в Linux можна також віднести: fvwm, fvwm2, fvwm95, kwin, Enlightenment, sawfish, mvm.
Для робочого стола KDE основним менеджером вікон є kwin. Для робочого стола GNOME раніше базовим адміністратором вікон був Enlightenment (або просто Е), а тепер його замінив sawfish.
Робочі столи користувача
1.Загальні відомості про робочі столи користувача в Linux
Робочий стіл - це графічний інтерфейс користувача з операційною системою. Робочий стіл дозволяє:
переглядати в графічному режимі файлову систему і виконувати всі операції над файлами (копіювання, перейменування, вилучення тощо);
розміщувати ярлики файлів і каталогів (папок) для швидкого доступу до них;
розміщувати ярлики змінних дисків для їх монтування та доступу до їх вмісту;
розміщувати ярлики принтерів для прискорення початку друку;
зіставляти програми з файлами певного типу для їх автоматичного запуску.
Як правило, робочий стіл містить панель задач, на якій розташовуються кнопки ярликів, меню, програм і аплетів. Аплет - це невеличка вбудована програма для роботи і контролю за станом системи (наприклад: годинник, калькулятор і т.д.). Зазвичай панель задач реалізована у вигляді рядка в нижній частині екрана, хоча в більшості випадків передбачена можливість її переміщення до будь-якої сторони екрана.
Характерною особливістю робочих столів в Linux, яка відсутня у Windows, є можливість працювати з багатьма віртуальними робочими столами. На кожному із них може розташовуватись свій набір ярликів та відкритих вікон працюючих програм. Кожен віртуальний робочий стіл може мати свою гаму кольорів і рисунків, тобто ці столи функціонують незалежно один від одного.
З точки зору ОС робочий стіл - це набір Х-клієнтів та бібліотек для створення графічного інтерфейсу користувача із системою. Серед Х-клієнтів найважливішими є менеджери дисплеїв та менеджери вікон. Кожний робочий стіл має свій конкретний менеджер дисплея та конкретний менеджер вікна, тобто вони орієнтовані тільки на свій робочий стіл.
2.Робочий стіл KDE
Найбільш відомим робочим столом є KDE (K Desktop Environment - робочий стіл К). Авторські права на цей робочий стіл належать фірмі Trolltech.
Головна перевага KDE - забезпечення єдиного стандарту для всіх його складових частин і програм на основі об'єктно-орієнтованого підходу. В KDE всі елементи трактуються як об'єкти, до яких можна отримати доступ і виконати з ними певні дії.
KDE пропонує користувачеві весь спектр можливостей для керування зовнішнім видом і функціональними можливостями системи. Можна коректувати дуже багато речей - загальний фон робочого стола, вигляд кнопок та ярликів, вміст панелі або меню запуску програм та багато іншого. Для операцій настроювання робочого стола є спеціальний Центр Керування (Control Center), який дуже нагадує Панель керування у Microsoft Windows.
Завдяки використанню об'єктної графічної бібліотеки Qt, дотримується єдиний стиль при створенні кнопок, меню, перемикачів та інших атрибутів вікон. Наприклад, у всіх програмах KDE в правій частині меню розташована опція виклику довідки. Вся довідкова система витримана в єдиному форматі та стилі. У всіх програмах, кнопки, що виконують однакові функції, позначаються однаковими піктограмами. На перший погляд, це може здатись дрібницями. Але така однотипність сприяє швидкому засвоєнню нових програм, адже не завжди є можливість детального опису призначення кожного елементу. інтерфейс linux програмування
Важливою перевагою KDE є повна підтримка всіма його програмами національних стандартів. Засоби багатомовної підтримки вбудовані безпосередньо в KDE, разом із документацією і файлами довідки.
На сьогоднішній день існує велика кількість програмних пакетів, спеціально створених для KDE. Бібліотеки KDE і Qt, які використовують мову С++, стають основою для розробки нових сучасних програм.
Найважливіше є те, що наявність однієї фірми-розробника означає високу ступінь відповідальності за свій програмний продукт, тобто високу надійність роботи KDE.
KDE - це великий проект, до складу якого в стандартному дистрибутиві входить більше сотні програм. Варто запам'ятати лише декілька із них, які є немов би “візитною карткою” KDE: менеджер дисплея kdm, менеджер вікна kwin, файловий менеджер Konqueror. Необхідно відзначити, що в кожній новій версії Linux розширюються функції Konqueror, поступово перетворюючи його із простого файлового менеджера в потужну графічну оболонку.
3. Робочий стіл GNOME
Робочий стіл GNOME був розроблений дещо пізніше, як альтернатива KDE. Основною причиною появи GNOME було побоювання, що фірма Trolltech має право заборонити вільне розповсюдження свого KDE. І хоча цього поки що не сталось, все ж був створений міжнародний проект для розробки графічного інтерфейсу, який повністю підпадає під дію загальної ліцензії GPL (тобто для вільного розповсюдження). Про це свідчить і сама назва нового робочого столу: GNOME - GNU Network Obect Model Environment (GNU - GNU's Not Unix). Цей комплекс програм став по суті результатом співпраці багатьох програмістів-ентузіастів та фірм зі всього світу. З 2000 року координує всі роботи організація GNOME Foundation.
В GNOME основний наголос було зроблено на гнучкість, швидке оновлення компонентів, неповторність. Хоча цей робочий стіл більш динамічний, його компоненти, створені різними авторами, не завжди детально протестовані на предмет спільного користування. З однієї сторони, це полегшує налагодження GNOME, а з іншої - ускладнює сумісність різноманітних компонентів системи.
GNOME менш інтегрований порівняно з KDE, більше орієнтований на стандарт Open Source.
Якщо стиль KDE витримано в традиціях Microsoft Windows, то GNOME пропонує інтерфейс користувача, який основано на використанні менеджера вікон Enlightenment, (тепер його замінив sawfish). Для GNOME базовим менеджером дисплея є gdm, а графічною оболонкою, яка включає файловий менеджер - Nautilus.
З розвитком KDE і GNOME стало ясно, що вони будуть між собою конкурувати. Проте, і розробники KDE, і розробники GNOME прямують до того, щоб всі вказані розбіжності були непомітними для користувача і перехід від одного робочого столу до іншого не викликав великих проблем.
Як і KDE, робочий стіл GNOME пропонує такі основні функції:
- наявність головного меню для доступу до всіх програм та настроювання робочого столу;
- наявність панелі задач із кнопками для швидкого виклику необхідних програм або виконання налагоджувальних операцій;
- наявність піктограм і ярликів файлів та пристроїв;
- підтримка технології drag-and-drop для копіювання, створення посилань, переміщення або вилучення файлів і пристроїв;
- наявність пейджера для перемикання між різними віртуальними робочими столами.
Якщо на комп'ютері було інстальовано обидва розглянутих робочих столи, тоді для переходу від одного робочого стола до іншого необхідно спочатку ввести команду switchdesk, потім вказати ім'я нового робочого столу і виконати перезавантаження X Window. Під час нового завантаження операційної системи завжди завантажується той робочий стіл, назва якого вказана в файлі “/etc/sysconfig/desktop”. Змінити вміст цього файла може тільки адміністратор.
Практична частина
Завдання 1
Написати shell сценарій, який би, використовуючи графічні можливості shell, виконував висновок інформації про користувача (ПІБ, група), введення рядка символів і обробку рядка:
Заданий текст, що складається з слів, розділених не менше ніж одним пропуском. Знайти слова, що містять найменшу кількість приголосних букв.Алгоритм вирішення завдання:
1. Зчитуємо рядок символів.
1.1. В gdialog вводимо рядок символів.
1.2. Записуємо їх в файл ptext.txt.
1.3. Перевіряємо чи не введений пустий рядок.
1.4. Зчитуємо рядок з файлу ptext.txt в змінну ptext.
1.5. Виводимо введений рядок на екран.
2. Отримуємо число - кількість приголосних букв.
2.1. Зчитуємо рядок по слову.
2.2. Знаходимо довжину слова.
2.3. Порівнюємо кожен символ слова з приголосною буквою.
2.4. Якщо співпадають, то до $m додаємо 1.
3. Отримуємо слово з мінімальною кількістю приголосних букв.
3.1. Порівнюємо слово з мінімальною к-стю приголосних букв з даним. Якщо в даному менше приголосних букв, то зберігаємо дане слово в змінній l.
4. Виводимо слово з мінімальною к-стю приголосних букв.
4.1. Виводимо на екран l.
4.2. Записуємо слово l в файл text1.txt.
4.3. Виводимо слово l на екран, через gdialog
Код програми:
#!/bin/bash
gdialog --inputbox "Введите текст" 10 60 2> ptext.txt #вводим текст через gdialog
# и записуємо його в ptext.txt
z=1000000#макс. число приголосних букв
if [ $? -ne 1 ];#перевірка умови
then
ptext=$(cat ptext.txt)#записуємо текст в змінну
echo $ptext;#виводимо його на екран
for i in $ptext;#читаємо текст по слову
do
m=0
n=${#i};#довжина слова
k=0
while [ $k -lt $n ]# читає кожне слово по букві
do
let=${i:$k:1}#порівнюємо кожен символ з #приголосною буквою
case $let in
q|w|r|t|p|s|d|f|g|h|j|k|l|z|x|c|v|b|n|m) m=$(( $m+1 ));;
*) ;;
esac
k=$(($k+1))#лічильник циклу while
done
if [ $m -lt $z ]#порівнюємо знайдену к-сть букв з мін.
then z=$m
l=$i
fi
done
fi
echo 'Slovo s naibolshem kolichestvom glasnuh: ' $l
echo $l>text1.txt#записуємо в файл
gdialog --title 'Слово с наименьшим количеством согласных букв:'\
--textbox ./text1.txt 10 60 2# виводимо на екран, через gdialog
exit 0
Операційна система Windows. Системне програмування в MASM.
Флаговий регістр
Цей pегістр містить 16 біт прапорів, що керуються різними командами для індикації стану операції. В усіх випадках прапори зберігають своє значення доти, поки інша команда не змінить його. Флаговий регістр містить наступні дев'ять використовуваних біт (зірочками відзначені невикористовувані біти):
Номер біта: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Прапор: * * * * O D I T S Z * A * P * C
Розглянемо ці прапори в послідовності праворуч ліворуч.
CF (Carry Flag) - прапор переносу. Містить значення "переносів" (0 чи 1) зі старшого розряду при арифметичес ких операціях і деяких операціях зрушення і циклічного зрушення.
PF (Parity Flag) - прапор парності. Перевіряє молодші вісім біт результат- тов операцій над даними. Непарне число біт приводить до установки цього прапора в 0, а парне - у 1. Не варто плутати прапор парності з бітом контро- лю на парність.
AF (Auxiliary Carry Flag) - додатковий прапор переносу. Встановлюється в 1, якщо арифметична операція приводить до переносу четвертого праворуч біта (біт номер 3) у регистро виття однобайтовой команді. Даний прапор має відношення до арифметичних операцій над символами коду ASCII і до десяткових упакованим полям.
ZF (Zero Flag) - прапор нуля. Встановлюється в якості результату aрифметичних команд і команд порівняння. Як це не дивно, ненульовий результат приводить до установки нульового значення цього прапора, а нульовий - до установки одиничного значення. Існуюча невідповідність є, однак, логічно правильною, тому що 0 позначає "ні" (т.е. результат не дорівнює нулю), а одиниця позначає "так" (т.е. результат дорівнює нулю). Команди умовного переходу JE і JZ перевіряють цей прапор. SF (SIgn Flag) - знаковий прапор. Встановлюється у відповідності зі знаком результату (старшого біта) після арифметичних опеpацій: позитивний результат установлює 0, а негативний - 1. Команди умовного переходу JG і JL перевіряють цей прапор.
TF (Trap Flag) - прапор покрокового виконання. Цей прапор вам уже прихо- дилося встановлювати, коли використовувалася до манда Т в отладчике DEBUG. Якщо цей прапор встановлений в единичное cостояние, те процесор переходить у режим покрокового виконання команд, тобто в кожен момент виконується одна команда під користувальницьким керуванням.
IF (Interrupt Flag) - прапор переривання.
DF (DIrection Flag) - прапор напрямку. Використовується в строкових операціях для визначення напрямку передачі даних. При нульовому стані команда збільшує вміст регістрів SI і DI, викликаючи передачу даних ліворуч праворуч, при нульовому - зменшує вміст цих регістрів, викликаючи передачу даних праворуч ліворуч (див. гл.11).
OF (Overflow Flag) - прапор переповнення. Фіксує арифметичне переповнення, тобто перенос в/із старшого (знакового) біта при знакових арифметичних операціях. Як приклад: команда CMP порівнює два операнда і діє на прапори AF, CF, OF, PF, SF, ZF. Однак, немає необхідності перевіряти всі ці прапори по окремості. У прикладі, що дує, перевіряється чи містить регістр BX нульове значення:
CMP BX,00 ;Порівняння BX з нулем
JZ B50; Перехід на B50 якщо нуль. (дії при ненулі)
B50: ... ;Крапка переходу при BX=0
Якщо BX містить нульове значення, команда CMP установлює прапор нуля ZF в одиничний стан, і можливо змінює (чи немає) інші прапори. Команда JZ (перехід якщо нуль) перевіряє тільки прапор ZF. При одиничному значенні ZF, що позначає нульова ознака, команда передає керування на адресу, зазначений у її операнде, тобто на мітку B50.
Команда порівняння
Команда порівняння CMP порівнює два числа, віднімаючи одне з іншого. Вона не записує результат, але прапори стану установлює відповідно до результату. Ця команда змінює тільки прапори. У програмі команда порівняння використовується так само, як і команда вирахування; однак команди порівняння з заемом не існує. Порівняння з підвищеною точністю вимагає ледве більше зусиль, чим порівняння чи байтів слів. Фактично в цих випадках багато простіше використовувати команду вирахування замість команди порівняння. На рис.П4.11 показане порівняння пари 32=бітових чисел у пам'яті з використанням регістра AX у якості області тимчасового збереження. Це порівняння визначає, яке з чисел більше. Програма в результаті свого виконання встановлює коди умови. Прапор переносу визначає, яке з чисел більше: якщо прапор дорівнює 1, число VALUE більше.
Програма перевіряє два 32=бітових числа на рівність. Програма зберігає молодший результат, а потім комбінує його зі старшим, і в такий спосіб з'ясовує еквівалентність результату нулю. Команда OR описана в наступному розділі, а тут істотно те, що вона комбінує два значення так, що остаточне значення дорівнює 0 тоді і тільки тоді, коли обоє вихідних значення рівні 0. Результат цієї підпрограми порівняння - значення прапора нуля; якщо він дорівнює 1, числа рівні.
Завдання 2
У MASM написати програму рішення задачі. Створити EXE і COM модулі.
Дано цілі числа a1, ..., an (в послідовності можуть бути повторювані члени). З'ясувати, скільки чисел входять в послідовність більш ніж по одному разу. Алгоритм вирішення завдання:
1. Зрівнюємо перший елемент з наступними.
1.1. Якщо є співпадання, то переходимо до п.2.
1.2. Перевіряємо чи не пройдені всі елементи масива.
1.3. Зрівнюємо наступний елемент.
2. Видаляємо всі наступні співпадаючі символи.
3. Додаємо до загальної к-сті одиницю.
3.1. Переходимо до п. 1.2.
4. Вивод на екран к-сті елементів, які повторюються.
EXE модуль програми:
assume CS:code, DS:Data
code segment
begin: mov ax,data
mov ds,ax
mov bx,0;обнуляємо регістри
xor cx,cx
mov SI,-1;записуємо в SI -1,щоб при першому проходженні SI в 0
l:add ch,cl;ch - загальна к-сть елементів, які повторюються
;cl - якщо є збіг елементів, то CL = 1
inc SI;додаємо до SI 1
cmp SI,len; якщо пройшли весь масив, то йдемо на вихід
je fin
mov al,mas1[SI];в al SI-й елемент
mov bx,SI;в bx індекс SI-го елемента
mov cl,0;обнуляємо cl
comp:add bx,1;переводимо bx на наступний елемент
cmp bx,len;
jg l; якщо порівняли з усіма наступними елементами, то порівн. наступний ел.
cmp al,mas1[bx]; порівнюємо SI-й елемент з наступним
jne comp; якщо елементи не рівні, то порівнюємо з наступним за bx
;якщо рівні, йдемо далі (ЗМІЩУЄМО ВСІ НАСТУПНІ ЕЛЕМЕНТИ на 1,
;щоб видалити всі, які повторюються
mov di,bx; записуємо bx в di
sdvig:cmp di,len;порівнюємо з кінцем масиву
je eqv;перехід, якщо дійшли до кінця
mov ah,mas1[1][di];
mov mas1[di],ah; присвоюємо наступний елемент попередньому
inc di
cmp di,len;порівнюємо з кінцем масиву
jb sdvig;перехід якщо <
eqv:sub len,1;якщо ми змістили всі елементи, то зменшуємо довжину масиву
dec bx
mov CL,1;в CL 1, тому що знайшли еквівалентні елементів
jmp comp;переходимо на порівняння
fin: mov y,ch;вивід на екран
mov ah,09h
mov dx,offset y
int 21h
mov ax,4c00h
int 21h
code ends
data segment
len dw 7
mas1 db 1,4,2,2,3,3,4,9
y db " $"
err db "err$"
msg db ?
data ends
stk segment stack
db 256 dup()
stk ends
end begin
COM модуль програми:
CODESG SEGMENT PARA 'Code'
ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
ORG 100H ;Начало в конце PSP
begin: jmp l1
len dw 7
mas1 db 1,4,2,2,3,3,4,9
y db " $"
err db "err$"
msg db ?
l1:mov bx,0; обнуляємо регістри
xor cx,cx
mov SI,-1;записуємо в SI -1,щоб при першому проходженні SI в 0
l:add ch,cl;ch - загальна к-сть елементів, які повторюються
;cl - якщо є збіг елементів, то CL = 1
inc SI;додаємо до SI 1
cmp SI,len;якщо пройшли всей масив, то йдем на вихід
je fin
mov al,mas1[SI];в al SI-й елемент
mov bx,SI;в bx індекс SI-го елемента
mov cl,0;обнуляємо cl
comp:add bx,1;переводимо bx на наступний елемент
cmp bx,len;
jg l;якщо порівняли з усіма наступними елементами, то порівн. наступний ел.
cmp al,mas1[bx];порівнюємо SI-й елемент з наступним
jne comp;якщо елементи не рівні,то порівнюємо з наступним за bx
;якщо рівні, йдемо далі(ЗМІЩУЄМО ВСІ НАСТУПНІ ЕЛЕМЕНТИ на 1,
;щоб видалити всі, які повторюються
mov di,bx;записуємо bx в di
sdvig:cmp di,len;порівнюємо з кінцем масиву
je eqv;перехід, якщо дійшли до кінця
mov ah,mas1[1][di];
mov mas1[di],ah;присвоюємо наступний елемент попередньому
inc di
cmp di,len;порівнюємо з кінцем масиву
jb sdvig;перехід якщо <
eqv:sub len,1;якщо ми змістили всі елементи, то зменшуєьо довжину масиву
dec bx
mov CL,1;в CL 1, томущо знайшли еквівалентні елементів
jmp comp;переходимо на порівняння
fin: mov y,ch;вивід на екран
mov ah,09h
mov dx,offset y
int 21h
mov ax,4c00h
int 21h
codesg ends
end begin
Завдання 3
1. У MASM32 написати програму рішення задачі.
2. Введення-виведення реалізувати з використанням функцій API.
Побудувати вектор D, кожен елемент якого дорівнює добутку елементів стовпців матриці X (m, k), поділеній на максимальний елемент цього ж стовпчика.
Алгоритм вирішення завдання:
1. Знаходимо добуток елементів по стовпчику.
2. Знаходимо макс. елемент в стовпчику.
3. Ділимо добуток на макс. елемент.
4. Записуємо результат в масив.
5. Переходимо до наступного стовпчика.
assume CS:code, DS:Data
code segment
begin: mov ax,data
mov ds,ax
mov bl,mas1
mov max,bl;макс елемент - перший
mov cx,col
incCol: ;цикл по стовпцях
push cx;vзберігаємо значення лічильника по рядках
mov di,cx
dec di
mov dob,1
mov cx,row
incRow:;цикл по рядках
mov si,cx;v
dec si;v
mov bx,col;v
mov ax,si;v
mul bx;v
mov bx,ax;переводимо адресу масиву з двовимірного в одновимірний
mov al,mas1[bx][di];v
;v
cmp al,max;порівнюємо макс. ел. з поточним ел.
jb less;v
mov max,al ; vякщо менше, то в макс. ел. записуємо поточний
less:mov bx,dob
mul bx
mov dob,ax
div max;vділимо добуток по стовпцю на макс. ел.
loop incRow
mov vect[di],al;vрезультат записуємо в масив
mov max,al
pop cx;vповертаємо значення лічильника по рядках
mov di,cx
mov bl,mas1[di]
mov max,bl;vзаписуємо в макс. ел.перше значення наступного рядка
loop incCol
mov DI,0;v
fin:mov al,vect[DI];v
mov y,al;v
mov ah,09h;v
mov dx,offset y;v
int 21h;v
inc DI;v
cmp DI,col;vвиводимо вихідний масив на екран
jne fin
mov ax,4c00h
int 21h
code ends
data segment
row dw 4
col dw 4
dob dw 1
max db 0
mas1 db 6,3,1,5
db 1,19,6,4
db 8,6,50,6
db 2,3,2,30
vect db 4 dup(?)
len db 3
y db " $"
err db "err$"
msg db ?
data ends
stk segment stack
db 256 dup()
stk ends
end begin
Використана література
1. Топхем Д., Чионг Х.В. Юнікс и Ксенікс. - М.: Мир, 1988. - 392 с.
2. Скловська С. Red Hat Linux 6.0 - Підручник. К.: “ДиаСофтЮП”, 1999. - 416 с.
3. Скловська С. Команди Linux: Довідник. - К.: “ДиаСофт”, 2001. - 688 с.
4. Глушаков С.В., Сурядний О.С. Linux для дома и офиса: Учебный курс. - Харьков: Фолио, 2002. - 389 с.
5. Юров В. Assembler. - Санкт-Петербург: Питер, 2001. - 622 с.
6. Пильщиков В. Н. Программирование на языке ассемблера IBM PC. - М.: Диалог-Мифи, 1999. - 286 с.
7. Ученик по основам язика Ассемблера (материалы сайта www.PowerBuilder.sbn.bz).
Размещено на Allbest.ru
...Подобные документы
Знайомство з графічним інтерфейсом користувача Linux, призначення менеджерів вікон, менеджерів дисплея, а також інших складових системи X Window. Мережна архітектура типу "клієнт-сервер". Перемикання між різними консолями і праця в будь-якій з них.
реферат [16,6 K], добавлен 15.03.2009Проектування інтерфейсу користувача. Стилі взаємодії користувача з програмними системами. Стилі представлення інформації і доцільність графічного представлення даних. Правила проектування засобів підтримки користувача, вбудованих в програмне забезпечення.
доклад [1,2 M], добавлен 08.12.2008Базовые инструменты Linux Shell и Make. Скриптовый язык Shell. Make как утилита, автоматизирующая процесс преобразования файлов из одной формы в другую. Встраиваемые системы Buildroot и OpenWrt на базе Linux. Переменные и блоки define BuildPackage.
курсовая работа [27,4 K], добавлен 19.01.2016Медична інформаційно-аналітична система "Емсімед". Аналіз програмних, апаратних засобів. Архітектурне проектування автоматизованої системи обліку медичних інструментів. Опис структурної та логічної схеми. Вибір мови програмування, керівництво користувача.
дипломная работа [2,9 M], добавлен 26.07.2013Структура мережевої підсистеми Linux. Створення мережевого інтерфейсу. Передача пакетів та аналіз поведінки інтерфейсу. Протокол транспортного рівня. Використання модулів ядра. Вплив маршрутизації на процес розробки і налагодження мережевих модулів.
курсовая работа [56,2 K], добавлен 23.05.2013Розробка програми для розв’язання квадратних рівнянь з текстовим та графічним інтерфейсами користувача без дублювання їх коду. Алгоритм розв’язання квадратного рівняння у програмах з будь-яким інтерфейсом користувача, а саме: "консольний" та "форма".
лабораторная работа [14,9 K], добавлен 14.05.2011Основні переваги програмування на мові Delphi. Використання стандартних операторів при створенні інтерфейсу користувача. Вибір складу технічних і програмних засобів, організація вхідних і вихідних даних. Розробка програми, блок-схеми та тексту програми.
реферат [316,1 K], добавлен 22.01.2013Розробка та тестування додатків, які базуються на елементах мови програмування Java, принципи програмування в її середовищі. Вивчення переваг Java-платформи, прикладний програмний інтерфейс та особливості сучасних засобів створення Java-додатків.
дипломная работа [2,8 M], добавлен 22.06.2011Порівняльний аналіз можливостей, функцій та основних елементів програм для створення та редагування музичних композицій: AbletonLive, AdobeAudition, Cubase, FlStudio, Nuendo, Reason, SoundForge, WaveLab. Типи, версії та призначення програмних засобів.
реферат [16,3 K], добавлен 19.06.2014Постановка задачі: створення списку співробітників інституту. Аналіз мов програмування та вибір мови PascalABC.Net - 32-розрядної програми, яка може працювати на сучасних версіях Windows. Опис функцій та процедур, реалізації інтерфейсу користувача.
курсовая работа [277,8 K], добавлен 25.06.2015Стан комп`ютерізації підприємства ТОВ "Люксофт-Україна". Середа розробки Eclipse. Ознайомлення з мовою програмування С++. Розробка клієнту навігаційної системи для відображення місцеперебування користувача у реальному часі з використанням онлайн мап.
курсовая работа [2,1 M], добавлен 12.09.2012Основи проектування мобільного додатку для операційної системи Android з використанням хмарної бази даних Cloud Firestore. Аналіз основних труднощів, які виникають під час розробки додатків. Визначення основних переваг та недоліків хмарних баз даних.
статья [195,3 K], добавлен 07.02.2018Розробка програми, яка б дозволяла протестувати знання з дисципліни "Програмування на мові С", виставити оцінку. Опис та обґрунтування методу організації вхідних та вихідних даних, вибору складу технічних та програмних засобів. Проведення лістингу.
курсовая работа [11,0 K], добавлен 08.08.2009Загальна характеристика алгоритму та опис програми. Керівництво системного програміста. Особливості запуску програми в Linux, FreeBSD, Windows. Аналіз результатів тестування програми, що проектується, вивчення та оцінка її практичної ефективності.
курсовая работа [91,4 K], добавлен 13.06.2014Загальна характеристика та особливості програмування сучасних систем автоматизованого проектування. Порівняльна характеристика середовищ розробки прикладних програм на мові JAVA. Ознайомлення з принципами і особливостями роботи певних класів, компонентів.
курсовая работа [2,0 M], добавлен 31.01.2014Розробка програми на мові програмування С++ в середовищі Borland C++ Builder, яка надає можливість відкривати певну програму в певний час або через певний час. Проектування блок-схеми та інтерфейсу користувача. Підключення бібліотек, опис змінних.
дипломная работа [90,0 K], добавлен 21.01.2013Эволюция развития персональных компьютеров и программного обеспечения. Переменные и подстановка их значений. Синтаксис языка shell. Подстановка результатов выполнения команд. Структура реестра Windows NT/2000. MS-DOS: ввод информации с клавиатуры.
контрольная работа [377,9 K], добавлен 22.11.2013Принципи технології створення програмних продуктів. Набір файлів, необхідних для створення програми в Delphi, варіанти роботи з ними. Програмування графічного інтерфейсу користувача. Зовнішній вигляд і лістинг програми, використані команди і компоненти.
курсовая работа [550,5 K], добавлен 03.01.2014Загальні принципи побудови заданої системи, її внутрішня структура та стандарти, основні етапи розробки та сучасні тенденції, оцінка функціональності. Магістраль крейта. Команди та програмування в системі КАМАК, оцінка її головних переваг і недоліків.
курсовая работа [33,7 K], добавлен 16.12.2015Елементарні властивості, які утворюють прийнятну для користувача якість ПЗ. Забезпечення стійкості програмних засобів за допомогою захисного програмування. Установка пакета Delphi. Розробка програми для автоматичного розрахунку значень складної функції.
контрольная работа [32,8 K], добавлен 22.09.2009