Пакетът MASM има вградени средства, визуално приближаващи написаната програма до програмите на езиците от високо ниво. Тези директиви за формиране на конструкции са аналогични на условните и циклическите оператори на езиците от високо ниво: .IF, .ELSE, .ELSEIF, .ENDIF, .REPEAT, .UNTIL, .WHILE, .ENDW, .BREAK, .CONTINUE. Всички директиви са предшествани от символа точка. Използването на дадените конструкции може да се препоръчва с цел повишаване надежността на кода. Програмистът на асемблер така повишава логическото ниво на контролируемите синтактични конструкции, намалява вероятността от логически грешки, като ускорява процеса на разработката.
Писането на асемблер на обемни програми е слабата страна на езика. Разбира се, това не винаги е необходимо. Ако програмата не е предназначена за решаване на някакви системни задачи, изискващи максимално ефективно използване ресурсите на компютъра, ако към нея няма специални изисквания за размера и времето за изпълнение, тогава е уместно да се избере един от езиците на високо ниво. Съществува и трети вариант: да се комбинират програмите на високо ниво с код на асемблер. Последното обикновено се използва в случай, че във вашата програма има фрагменти, които или не е възможно да бъдат реализирани без асемблер или асемблер може значително да подобри ефективността на програмата.
Повечето компилатори отчитат възможността за комбиниране на кода с асемблер. Механизмите им за връзка с асемблер обикновено са идентични. Единствено условие за изпълнение е уточняването в документацията на езика необходимите параметри за връзка и особеностите, свързани с организацията на връзката с кода на асемблер. Не съществуват универсални препоръки по този въпрос.
Съществуват два варианта за комбиниране на програми на езици от високо ниво и асемблер:
• Използване на оператори от тип inline и модул на асемблер за вграждане. Този вариант в значителна степен зависи от синтаксиса на езика от високо ниво и от конкретния компилатор. Тук се предполага, че асемблерните кодове са във вид на команди на асемблер или директно машинни команди и се вграждат в текста на програмата, написана на език от високо ниво. Компилаторът на езика разпознава командите (машинния код), като такива на асемблер и без изменения ги включва във формирания от него обектен код. Този вариант е удобен, когато се налага вмъкване на неголям фрагмент.
• Използване на външни процедури и функции. Този вариант е по-универсален за комбиниране. Той притежава следните предимства:
o Писането и дебъгването на програмите може да става независимо;
o Написаните подпрограми могат да се използват в други проекти;
o Облекчава се модифицирането и съпровождането на програмите в течение на жизнения цикъл на проекта.
Тема 12. Преобразуване на числата
Компютърът възприема само тези типове данни, които се поддържат от неговата система от команди. На практика често възниква необходимост от преобразуване на данните от едно представяне в друго.
Данните, въвеждани от конзолата и извеждани към нея, се кодират от операционната система в съответствие с текущата таблица за кодиране. В ASCII таблицата всеки символ се кодира с един байт. Команди за аритметична обработка на числа в символен вид няма. Вижда се, че е необходимо преобразуване на символната информация във формат, поддържан от машинните команди. След такова преобразование се изпълняват необходимите изчисления и пак се преобразува резултата обратно в символен вид, за да може да се изобрази информацията на монитора.
По-рано разгледахме задача за преобразуване на шестнайсетично число (двуцифрено), въведено от конзолата в двоичен вид (в AL). След изпълнението на тази процедура полученото число може да се използва като операнд в двоични аритметични операции.
При въвеждане на десетично цяло число от клавиатурата, например: ___1207
This entry was posted
at 11:50
and is filed under
Компютърни системи и технологии
. You can follow any responses to this entry through the
.