47621 (Мова програмування Assembler), страница 6

2016-07-30СтудИзба

Описание файла

Документ из архива "Мова програмування Assembler", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "47621"

Текст 6 страницы из документа "47621"

[ім'я] Dn чисел-повторень DUP (вираження) ...

Наступні три приклади ілюструють повторення:

DW 10 DUP(?); Десять невизначених слів

DB 5 DUP(14); П'ять байт, що містять тичину.14

DB 3 DUP(4 DUP(8)); Дванадцять вісімок.

У третьому прикладі спочатку генерується чотири копії десяткової 8 (8888), і потім це значення повторюється три рази, даючи в pезультате дванадцять восмерок. Вираження може містити символьний чи рядок числову константу.

Символьні рядки

Символьний рядок використовуються для опису даних, таких як, наприклад, імена людей або заголовки сторінок. Зміст рядка відмічається одиночними лапками , наприклад, 'PC' або подвійними лапками - "PC". Асемблер переводить символьні рядки в об'єктний код у звичайному форматі ASCII. Символьний рядок визначається тільки директивою DB, в якій вказується більше двох символів у нормальній послідовності ліворуч праворуч. Отже, директива DB представляє єдиний можливий формат для визначення символьних даних. На рис. 5.1 приведений ряд прикладів.

Числові константи

Числові константи використовуються для арифметичних величин і для aдресів пам'яті. Для опису константи лапки не ставляться. Асемблер перетворить усі числові константи в шістнадцяткові і записує байти в об'єктному коді в зворотній послідовності - праворуч ліворуч. Нижче показані різні числові формати.

Десятковий формат.

Десятковий формат допускає десяткові цифри від 0 до 9 і позначається останньою буквою D, що можна не вказувати, наприклад, 125 чи 125D. Незважаючи на те, що асемблер дозволяє кодування в десятковому форматі, він перетворить ці значення в шіст. об'єктний код. Наприклад, десяткове число 125 перетвориться в тичину. 7D. Шістнадцятковий формат.

Шістнадцятковий формат допускає шістнадцяткові цифри від 0 до F і позначається останньою буквою H. Оскільки асемблер думає, що з букви починаються ідентифікатори, то першою цифрою шіст. константи повинна бути цифра від 0 до 9. Наприклад, 2EH або 0FFFH, вказують на те, що асемблер перетворить відповідно в 2E і FF0F (байти в другому прикладі записуються в об'єктний код у зворотній послідовності).

Двійковий формат.

Двійковий формат допускає двійкові цифри 0 і 1 і позначається останньою буквою B. Двійковий формат звичайно використовується для більш чіткого представлення бітових значень у логічних командах AND, OR, XOR і TEST. Десяткове 12, тичина. C і двійкове 1100B усі генерують один і той же код: тичина. 0C або двійкове 0000 1100 в залежності від того, як ви розглядаєте вміст байта.

Вісімковий формат.

Вісімковий формат допускає вісімкові цифри від 0 до 7 і позначається останньою буквою Q чи O, наприклад, 253Q. На сьогодні вісімковий формат використовується дуже рідко.

Десятковий формат із крапкою, що плаває.

Цей формат підтримується тільки асемблером МASM. При записі символьних і числових констант потрібно пам'ятати, що, наприклад, символьна константа, визначена як DB '12', представляє символи ASCII і генерує тичина. 3132, а числова константа, визначена як DB 12, вставляє двійкове число і генерує тичина. 0C. Рис. 5.1 ілюструє директиви для визначення різних символьних рядків і числових констант. Сегмент даних був асемблюваний для того, щоб показати згенерований об'єктний код (ліворуч).

ДИРЕКТИВА ВИЗНАЧЕННЯ БАЙТА (DB)

З різних директив, що визначають елементи даних, найбільш корисної є DB (визначити байт). Символьне вираження в диpективе DB може містити рядок символів будь-якої довжини, аж до кінця рядка (див. FLD2DB і FLD7DB на рис. 5.1). Зверніть увагу, що константа FLD2DB містить символьний рядок 'Personal Computer'. Об'єктний код показує символи коду ASCII для кожного байта. Тичина. 20 представляє символ пробілу. Числове вираження в директиві DB може містити одну чи більше однобайтних констант. Один байт виражається двома цифpами. Найбільше позитивне шіст. число в одному байті це 7F, усі "великі" числа від 80 до FF представляють негативні значення. У десятковому численні ці межі виражаються числами +127 і -128. У прикладі на рис. 5.1 числовими константами є FLD3DB, FLD4DB, FLD5DB і FLD8DB. Поле FLD6DB представляє суміш з числових і строкових констант, які використовуються для побудови таблиці.

ДИРЕКТИВА ВИЗНАЧЕННЯ СЛОВА (DW)

Директива DW визначає елементи, що мають довжину в одне слово (два байти). Символьне вираження в DW обмежено двома символами, що асемблер представляє в об'єктному коді так, що, наприклад, 'PC' стає 'CP'. Для визначення символьних рядків директива DW має обмежене застосування. Числове вираження в DW може містити одне або більше двобайтних констант. Два байти представляються чотирьма тичина. цифрами. Найбільше позитивне шіст. число в двох байтах це 7FFF; усі "великі" числа від 8000 до FFFF представляють негативні значення. У десятковому численні ці межі виражаються числами +32767 і -32768.

У прикладі на рис. 5.1 поля FLD1DW і FLD2DW визначають числові константи. Поле FLD3DW визначає адреса - у даному випадку зсув на адресу FLD7DB. У результаті генерується об'єктний код 0021 (R позначає перемещаемость). Перевіряючи вище по малюнку, видно, що відносна адреса поля FLD7DB дійсно 0021. Поле FLD4DW визначає таблицю з п'яти числових констант. Помітимо, що об'єктний код для кожної константи має довжину в одне слово (два байти). Для форматів директив DW, DD і DQ асемблер перетворить константи в шест. об'єктний код, але записує його в зворотній послідовності. У такий спосіб десяткове значення 12345 перетвориться в тичину.3039, але записується в об'єктному коді як 3930.

ДИРЕКТИВА ВИЗНАЧЕННЯ ПОДВІЙНОГО СЛОВА (DD)

Директива DD визначає елементи, що мають довжину в два cлова (чотири байти). Числове вираження може містити одну чи більше констант, кожна з який має максимум чотири байти (вісім шест. цифр). Найбільше позитивне шіст. число в чотирьох байтах це 7FFFFFFF; усі "великі" числа від 80000000 до FFFFFFFF представляють негативні значення. У десятковому численні ці межі виражаються числами +2147483647 і -2147483648. У прикладі на рис. 5.1 поле FLD3DD визначає числову константу. У полі FLD4DD генерується різниця між двома адресами, у даному випадку результатом є довжина поля FLD2DB. Поле FLD5DD визначає дві числові константи. Асемблер перетворить усі числові константи в директиві DD у шіст. представлення, але записує об'єктний код у зворотній послідовності. У такий спосіб десяткове значення 12345 перетвориться в тичину. 00003039, але записується в об’єктному коді як 39300000. Символьне вираження директиви DD обмежене двома символами. Асемблер перетворить символи і вирівнює їх ліворуч у чотирьохбайтному подвійному слові, як показано в полі FLD2DD в об'єктному коді.

ДИРЕКТИВА ВИЗНАЧЕННЯ УЧЕТВЕРЕННОГО СЛОВА (DQ)

Директива DQ визначає елементи, що мають довжину чотири слова (вісім байт). Числове вираження може містити одну чи більш констант, кожна з який має максимум вісім байт або 16 шіст.цифр. Найбільше позитивне тичина. число - це сімка і 15 цифр F. Для одержання представлення про величину цього числа, покажемо, що тичина. 1 і 15 нулів еквівалентний наступному десятковому числу: 1152921504606846976.

У прикладі на рис. 5.1 поля FLD2DQ і FLD3DQ ілюструють числові значення. Асемблер перетворить усі числові кін станты в директиві DQ у шест. представлення, але записує об'єктний код у зворотній послідовності, як і в директивах DD і DW. Обробка асемблером символьних рядків у директиві DQ aналогічно директивам DD і DW.

ДИРЕКТИВА ВИЗНАЧЕННЯ ДЕСЯТИ БАЙТ (DT)

Директива DT визначає елементи даних, що мають довжину в десять байт. Призначення цієї директиви зв'язане з "упакованими десятковими" числовими величинами (див. гл.13). По директиві DT генеруються різні константи, у залежності від версії асемблера; для практичного застосування ознайомтеся з посібником з вашому aссемблера. На рис. 5.1 приведені приклади директиви DT для невизначеного елемента і для двосимвольної константи. Програма на рис.5.1 містить тільки сегмент даних. Xоча асcемблер не видає повідомлень про помилки, у таблиці LINK MAP з'явиться попередження: "Warning: No STACK Segment", а компоновщик LINK видасть "There were 1 errors detected" (Виявлена 1 помилка). Незважаючи на це попередження можна використовувати відлагоджувач DEBUG для перегляду об'єктного коду, як показано на рис. 5.2. Права сторона дампа чітко показує символьні дані, як, наприклад, "Personal Computer".

БЕЗПОСЕРЕДНІ ОПЕРАНДИ

На рис. 2.1 у розділі 2 було показано використання безпосередніх операндів. Команда MOV AX,0123H пересилає безпосередню шіст. константу 0123 у регістр AX. Трьохбайтний об'єктний код для цієї команди є B82301, де B8 позначає "переслати безпосереднє значення в регістр AX", a наступні два байти містять саме значення. Багато команд мають два операнди: перший може бути регістр адреси або пам'яті, а другий - безпосередньо константа.

Використання безпосереднього операнда є ефективнішим ніж визначення числової константи в сегменті даних і організації зсилки на неї в операнді команди MOV, наприклад, cегмент даних: AMT1 DW 0123H? cегмент кодів: MOV AX,AMT1.

Довжина безпосередніх операндів.

Довжина безпосередньої константи залежить від довжини першого операнда. Наприклад, якщо випливає що безпосередній операнд є двобайтним, регістр AL має тільки один байт: MOV AL,0123H (помилка) однак, якщо безпосередній операнд коротший, ніж той що одержує операнд, як у наступному прикладі - ADD AX,25H (немає помилки) то асемблер розширює безпосередній операнд до двох байт, 0025 і записує об'єктний код у вигляді 2500.

Безпосередні формати

Безпосередня константа може бути шістнадцятковою, напpиклад, 0123H; десятковою, наприклад, 291 (яку асемблер конвертує в тичину.0123); чи двійковою, наприклад, 100100011В (яка перетвориться в тичину. 0123). Нижче приведений список команд, що допускають безпосередні операнди:

Команди пересилання і порівняння: MOV, CMP.

Арифметичні команди: ADC, ADD, SBB, SUB.

Команди зрушення: RCL, RCR, ROL, ROR, SHL, SAR, SHR.

Логічні команди: AND, OR, TEST, XOR.

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

ДИРЕКТИВА EQU

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

TIMES EQU 10

Ім'я, у даному випадку TIMES, може бути представлено будь-яким припустимим в асемблері ім'ям. Тепер, в якій-би команді чи директиві не використовувалося слово TIMES асемблер підставить значення 10. Наприклад, асемблер перетворить директиву - FIELDA DB TIMES DUP (?) у FIELDA DB 10 DUP (?).

Ім'я, зв'язане з деяким значенням за допомогою директиви EQU, може використовуватися в командах, наприклад:

COUNTR EQU 05

MOV CX,COUNTR

Асемблер заміняє ім'я COUNTR у команді MOV на значення 05, створюючи операнд із безпосереднім значенням, так, нібито він закодований.

MOV CX,05; Асемблер підставляє 05

Тут перевага директиви EQU полягає в тому, що багато команд можуть використовувати значення, визначене по імені COUNTR. Якщо це значення повинне бути змінене, то зміні підлягає лише одна директива EQU. Природньо, що використання директиви EQU розумне лише там, де підстановка має сенс для асемблера. У директиві EQU можна використо- вувати символічні імена:

1. TP EQU TOTALPAY

2. MPY EQU MUL

Перший приклад припускає, що в сегменті даної програми визначено ім'я TOTALPAY. Для будь-якої команди, що містить операнд TP, асемблер замінить його на адресу TOTALPAY. Другий приклад показує можливість використання в програмі слова MPY замість звичайного мнемокоду MUL.

Лекція 6 Транслятори мови Assembler

У Турбо Асемблері існує дуже могутній і гнучкий синтаксис командного рядка. Якщо ви запустите Турбо Асемблер, не задавши ніяких аргументів, наприклад:

TASM

то на екран виведеться довідкова інформація, (на англійській мові) яка описує безліч параметрів командного рядка і синтаксис для специфікації асемблюваних файлів. На Рис. 3.1 показано, як вона виглядає.

Turbo Assembler Version 2.0 Copyright (C) 1990

by Borland International, Inc

Usage:

TASM [параметри] исх_файл [,об'єкт_файл] [,лістинг] [,пер_посилання]

/a,/s Упорядкованість сегментів за алфавітним порядком чи порядку вихідного коду /c Генерація в лістингу перехресних посилань

/dSYM[=VAL] Визначається SYM = 0 чи SYM = VAL

/e,/r Эмулируемые чи дійсні інструкції з плавающей крапкою

/h,/? Виводиться дана довідкова інформація

/lPATH файли, що включаються, шукаються по маршруті, обумовленому PATH

/jCMD Визначає початкову директиву Асемблера (напримір, jIDEAL)

/kh#,/ks# Потужність хеш-таблицы #, потужність обсягу рядка #

/l,/la Генерація лістинга: l=звичайний лістинг, la=розширенаный

/ml,/mx,/mu Розрізнення в регістрі букв ідентифікаторів: ml=усі, mx=глобальні, mu=не розрізняються

/mv# Задає максимальну довжину ідентифікаторів

/m# Дозволяє виконання декількох проходів для зодоволення випереджальних посилань

/n Придушення в лістингах таблиці символів (ідентифікаторів)

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5193
Авторов
на СтудИзбе
434
Средний доход
с одного платного файла
Обучение Подробнее