Читайте также: |
|
Адрес состоит из двух частей: первая содержит буквенное обозначение сегментного регистра или адрес сегмента из четырех цифр, а вторая содержит значение смещения. Адрес сегмента или сегментный регистр можно пропустить. По умолчанию для команд 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) см. по ссылке «».
Дата добавления: 2015-08-17; просмотров: 38 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Примеры | | | Примечания |