Debug: a (assemble)

Создание двоичного кода процессоров 8086/8087/8088 непосредственно в памяти. Выполненная без параметров команда a начинает работу с точки последнего останова.

Синтаксис

a [адрес]

Параметры

адрес
Задает адрес, по которому записаны инструкции на языке ассемблер. Параметр адрес принимает шестнадцатеричные значения без знака h.
?
Вывод списка команд debug.

Примечания

  • Задание правильных записей адреса

    Адрес состоит из двух частей: первая содержит буквенное обозначение сегментного регистра или адрес сегмента из четырех цифр, а вторая содержит значение смещения. Адрес сегмента или сегментный регистр можно пропустить. По умолчанию для команд debug a, g, l, t, u и w адрес сегмента содержится в регистре CS. Для других подкоманд по умолчанию используется сегмент DS. Все числовые значения при этом представлены в шестнадцатеричном формате. Между именем сегмента и значением смещения следует вставлять двоеточие. Примеры правильных адресов:

    CS:0100

    04BA:0100

  • Задание мнемоник префикса

    Задайте мнемонику префикса инструкции перед кодом операции (т. е. opcode), к которой она относится. Команда a создает исполняемый машинный код из инструкций на языке ассемблера. Все числовые значения должны быть представлены в шестнадцатеричном формате и записаны как набор от 1 до 4 символов.

  • Использование мнемоник

    Мнемоники cs:, ds:, es: и ss:. Мнемоникой, вызывающей возврат управления в другой сегмент кода (far return), является retf. Мнемоники для работы со строками должны точно определять размер элементов строк. Например, для перемещения строк из слов (16 бит) следует использовать movsw, а для перемещения строк из байтов (8 бит) следует использовать movsb.

  • Задание переходов и вызовы функций

    Ассемблер автоматически обрабатывает переходы и вызовы (т. е. префиксы short, near или far ) в зависимости от смещения байтов. Имеется возможность переопределить переходы или вызовы с помощью префиксов near или far. Например:

    -a0100:0500
    0100:0500 jmp 502 ; короткий (short) переход на 2 байта
    0100:0502 jmp near 505 ; ближний (near) переход на 3 байта
    0100:0505 jmp far 50a ; длинный (far) переход на 5 байтов

    Вместо префикса near можно использовать сокращение ne.

  • Задание адреса слова или байта в памяти

    Если операнды ссылаются на адреса слов или байтов в памяти, тип данных должен быть задан с использованием префикса word ptr или byte ptr, которые можно сократить до wo для word ptr и до by для byte ptr. Например:

    dec wo [si]
    neg byte ptr [128]

  • Задание операндов

    В программе Debug.exe используется общее соглашение о том, что операнды, указывающие на адрес в памяти, заключаются в квадратные скобки ([ ]). Это единственный способ, который позволяет различать непосредственные операнды и ссылки на области в памяти в Debug.exe. Например:

    mov ax,21 ; загрузить число 21h в регистр AX
    mov ax,[21] ; загрузить содержимое
    ; памяти по адресу 21h
    ; в регистр AX

  • Псевдоинструкции

    С командой a часто используются две псевдоинструкции: операция db, которая размещает байты непосредственно в памяти, и операция dw, которая размещает в памяти слова. Например:

    db 1,2,3,4,"ЭТО ПРИМЕР"
    db 'ЭТО КАВЫЧКА: "'
    db "ЭТО КАВЫЧКА: '"
    dw 1000,2000,3000,"BACH"

  • Ввод данных в определенные байты

    Дополнительные сведения о вводе данных в определенные байты с помощью команды e (enter) см. по ссылке «».

  • Деассемблирование байт

    Дополнительные сведения о деассемблировании байт с помощью команды u (unassemble) см. по ссылке «».

Примеры

Команда a допускает различное использование ссылок на регистры. Например:

add bx,34[bp+2].[si-1]
pop [bp+di]
push [si] )

Кроме того, команда a поддерживает использование синонимов дополнительных кодов операций: Например:

loopz 100
loope 100
ja 200
jnbe 200

Для дополнительных кодов операций процессора 8087 необходимо задать префиксы wait или fwait. Например:

fwait fadd st,st(3) ; эта строка вставляет
; в код префикса fwait

 
Доставка в
 
Тернопіль тернополь бровары черкассах котовск глухов токмак запорожье крым бердичев винница боярка Бабанка Байбузы Балаклея Белозорье Будище Бужанка Бузуков Валява Васильков Ватутино Вербовец Вергуны Верхнячка Вильховец Вознесенское Гельмязов Геронимовка Городище Дзензеловка Драбов Дубиевка Ерки Жашков Звенигородка Золотоноша Иваньки Ирдынь Ирклиев Каменка Канев -- Александровка Бабинцы Багрин Барышевка Безпятное Белая Церковь Белогородка Березань Беспечная Блиставица Богдановка Богуслав Борисполь Боровая Бородянка Бортничи Боярка Бровары Бузовая Буча Васильков Вишневое Володарка Ворзель Вороньков Вышгород Гатное Глеваха Гнидын Гоголев Гореничи Горенка Гостомель Гребенки Григорьевка Гуровщина Дениховка Диброва Дмитровка Довгалевское Дослидницкое Дымер Жовтневое Зазимье Згуровка Иванков Ирпень Йосиповка Кагарлык Калиновка Капитановка Кашперовка Княжичи Кодра Козин Коцюбинское Красиловка Красное Крюковщина Ксаверовка Летки Липовка Лука Лукьяновка Макаров Мархаловка Мироновка Мотыжин Музычи Немешаево Новоселки Новые безрадичи Новые петровцы Обухов Озирне Паляничинцы Переяслав-Хмельницкий Песковка Петровское Петропавловская Борщаговка Пилиповка Пилипча Плесецкое Подгорцы Полесское Процев Пустоваровка Пуховка Ракитное Ржищев Рогозов Рожны Росава Рославичи Саливонки Самгородок Сеньковка Ситняки Сквира Софиевская Борщаговка Стайки Тарасовка Тараща Терезино Тетиев Требухов Узин Украинка Устимовка Фастов Фесюри Фурсы Ходосовка Хотов Чабаны Червоная слобода Чернобыль Черногородка Чубинское Шамраевка Шибене Шкаровка Щасливое Юрковка Юровка Яготин Ясногородка Киев

Статистика  
 

Онлайн всего: 1
Гостей: 1
Пользователей: 0