Програма перекладу десяткового числа в; двійкову і шістнадцяткову системи; числення

Загальні відомості про мову ASSEMBLER

Засоби, що забезпечують функціонування обчислювальної техніки поділяються на 2 частини: апаратну і програмну.

До складу апаратної частини входять такі пристрої як:

Всі перераховані вище пристрої побудовані на інтегральних схемах (ІС).

Інтегральна схема це мікроелектронний виріб, що виконує певні функції перетворення, що має високу щільність упаковки електрично з'єднаних між собою елементів і компонентів і що представляє єдине ціле з точки зору вимог до випробувань приймання та експлуатації.

Прикладом ІС є схеми цифрових пристроїв: регістри, суматори, полусумматора, лічильники, шифратори, дешифратори і т.д.

До програмної частини належать: сукупність програм і правил з усією відповідною документацією, що дозволяє використовувати обчислювальну машину для розв'язання різноманітних задач.

Програма - закінчена послідовність машинних команд або операторів мови програмування, що визначає послідовність дій для вирішення деякої задачі.

Загальні зведений ія про я зике асемблера

Символічна мова асемблера дозволяє в значній мірі усунути недоліки програмування на машинній мові.

Головною його перевагою є те, що на мові асемблера всі елементи програми представлені у символічній формі. Перетворення символічних імен команд в їх двійкові коди покладаються на спеціальну програму - асемблер, яка звільняє програміста від трудомісткої роботи і виключає неминучі при цьому помилки.

Символічні імена, що вводяться при програмуванні на мові асемблера, як правило відображають семантику програми, а абревіатура команд - їх основну функцію. Наприклад: PARAM - параметр, TABLE - таблиця, MASK - маска, ADD - додавання, SUB - віднімання і т.д. п. Такі імена легко запам'ятовуються програмістом.

Для програмування на мові асемблера необхідно мати складні інструментальні засоби, ніж при програмуванні на машинному мовою: потрібні обчислювальні комплекси на базі мікро - ЕОМ або ПЕОМ з комплектом периферійних пристроїв (алфавітно-цифрова клавіатура, символьний дисплей, НГМД і друкарка). а також резидентні або крос-системи програмування для необхідних типів мікропроцесорів. Мова асемблера дозволяє ефективно писати і налагоджувати значно складніші програми, ніж машинний мову (до 1 - 4 Кбайт).

Мови асемблера є машинно-орієнтованими, т. Е. Залежними від машинного мови і структури відповідного мікропроцесора, так як в них кожній команді мікропроцесора присвоюється певне символічне ім'я.

Мови асемблера забезпечують істотне підвищення продуктивності праці програмістів в порівнянні з машинними мовами і в той же час зберігають можливість використовувати всі програмно-доступні апаратні ресурси мікропроцесора. Це дає можливість кваліфікованим програмістам складати програми, які виконуються за більш короткий час і що займають менший об'єм пам'яті в порівнянні з програмами, які створюються на мові високого рівня.

У зв'язку з цим практично всі програми управління пристроями введення / виводу (драйвери) пишуться на мові асемблера не дивлячись на наявність досить великої номенклатури мов високого рівня.

За допомогою мови асемблера програміст може задати наступні параметри:

мнемоніку (символічне ім'я) кожної команди машинної мови мікропроцесора;

стандартний формат для рядків програми, описуваної на асемблері;

формат для вказівки символьних констант і констант цілочисельного типу в різних системах числення;

псевдокоманди, що керують процесом ассемблирования (трансляції) програми.

На мові асемблера програма записується порядково, т. Е. Для кожної команди відводиться один рядок.

Для мікро - ЕОМ, побудованих на базі найбільш поширених типів мікропроцесорів, може існувати кілька варіантів мови асемблера, проте практичне поширення зазвичай має один - це так званий стандартний мову асемблера. Надалі ми будемо розглядати саме стандартні мови асемблера.

Кожен рядок написаної мовою асемблера програми містить чотири поля:

В поле мітки кожна мітка повинна бути визначена тільки один раз, але посилань до неї можна використовувати стільки разів, скільки це необхідно. В іншому випадку асемблер видасть діагностичне повідомлення про багаторазово певної мітці.

Поле КОД містить символічне ім'я виконуваної команди або псевдокоманди. Мнемоніка більшості команд є абревіатурою речень англійською мовою, що характеризують їх основну функцію.

MOV (MOVE) -передати, переслати

ADD (ADDITION) -сложеніе

SUB (SUBSTRACT) - віднімання

LDA (LOAD DIRECT

ACCUMULATOR) - безпосереднє завантаження

INR (INSCREMENT акумулятора

REGISTER) - інкремент регістра

REGISTER) декремент регістра

Мнемоніки команд є ключовими словами асемблера, і якщо вони не входять в безліч допустимих мнемонік, то асемблер видає повідомлення про недійсною команді.

Поле Операнд визначається звичайно в залежності від поля коду команди. Воно може містити або один, або кілька операндів, розділених комами, або не містити жодного операнда для тих команд, які оперують внутрішніми робочими регістрами.

Операнд являє собою вираз, що містить мнемонічне позначення, константи і оператори.

Найпростіші операнди містять одне мнемонічне позначення або одну константу.

Як мнемонічне позначення можуть використовуватися ідентифікатори внутрішніх робочих регістрів, мітки і поточне значення програмного лічильника.

Константи можуть бути представлені в різних системах числення.

У цій роботі ми розглянемо один із способів перекладу числа з десяткової системи числення в двійкову і шістнадцяткову за допомогою мови Асемблера. Перш ніж створювати програму, детально розглянемо, які кроки для цього треба зробити, тобто іншими словами напишемо алгоритм рішення нашої задачі. Для того щоб комп'ютер міг обробляти дані, ці дані йому треба ввести. а значить першим кроком у вирішенні нашого завдання буде введення числа. Другим кроком у роботі буде висновок повідомлення про введення числі. Після цього ми переводимо десяткове число в двійкову систему і виводимо наше число в двійковому еквіваленті на екран. Наступним кроком буде переклад числа в шістнадцятковий еквівалент і останній крок це цикл який дозволяє продовжити введення нового десяткового числа. Тепер зберемо всі пункти разом:

1. Введення числа з клавіатури.

2. Висновок повідомлення про введення числі.

3. Переклад числа в двійковий еквівалент.

4. Висновок на екран двійкового числа.

5. Переклад числа в шістнадцяткову систему.

6. Висновок на екран шістнадцятирічного числа.

7. Цикл (продовжимо?) Якщо ТАК то пункт 1, інакше пункт 8

8. Вихід з програми. Це і є алгоритм програми природною мовою.

етапи розробки ассемблерних програм

1. Постановка завдання. Включає в себе змістовний опис задачі і розробку алгоритму.

2. Розробка тексту програм.

4. Компіляція або ассемблирование. Здійснюється перетворення текстового файлу з розширенням *. ASM в об'єктний Файл, що містить програму в машинному коді з розширенням *. OBJ. Так само на цьому етапі може бути створено лістинг програми. Файл з розширенням *. LST. в якому міститься основна інформація про програму, а так само Файл перехресних посилань з розширенням *. CRF. На цьому етапі відбувається проварка тексту програм на наявність помилок. Ассемблирование здійснюється за допомогою програми транслятора TASM. EXE (ASM. EXE - в асемблері, MASM. EXE - в макроассемблере). TASM [опції] *. ASM [. ] - команда для виконання трансляції. Якщо в команді вказана одна кома, то Файл лістингу Ф орміруется. У TASM є дві опції: / ZI і / N. Вони викликаються: ТАSМ.

5. Компонування. На цьому етапі створюється переміщувана програма здатна завантажуватися а будь-яку область пам'яті. Зберігається в файл з розширенням *. ЕХЕ або * СОМ. Для цього використовується TLINK. exe (для макроассемблера LINK. EXE). Є опції: / Т і / X.

6. Виконання та налагодження (DEBUG).

7. Занесення машинного коду програми в ПЗУ (може бути відсутнім) Тепер ми подивимося блок-схему нашої програми, тобто впорядковані дії.

Нижче пріведіни команди використовувалися в програмі:

sub - двійкове віднімання. Віднімається з першого операнда вміст другого операнда

Мнемоніка: sub<операнд 1>,<операнд 2>

Мнемоніка: call<имя процедуры>

ret - повернення до процедури

shr - зрушити логічно вправо

xor - який виключає АБО

Мнемоніка: xor<операнд 1>,<операнд 2>

lea - завантажити ЕА

push - включити в stack

Мнемоніка: push<операнд>

pop - витягти з stack

Мнемоніка: pop<операнд>

Мнемоніка: mov<приемник>,<источник>

inc - збільшення на 1

Мнемоніка: inc<операнд>

dec - зменшення на 1

Мнемоніка: dec<операнд>

stosb - пересилає з'єднання регістра al або ax на який вказує регістр di

loop - команда організації циклу з лічильником, також короткі переходи (127б) команда зменшує значення лічильника cx. без зміни будь-яких прапорів, якщо з'єднання cx> 0, то здійснюється перехід на задану мітку, в іншому випадку цикл завершується.

.CODE - відкриває сегмент коду

.DATA - відкриває сегмент даних

.STACKN - визначає сегмент stack (а); деректіви закриття сегментів в цьому випадку не використовуються; N - показує розмір stack (a) в байтах

Примітка: при використанні таких директив регістр ds ініціалізуєтьсянаступним чином: movax, @ data

assume в цьому випадку не використовується

Схожі статті