Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МЗЯП. Указатели на страницы ответов.rtf
Скачиваний:
24
Добавлен:
30.11.2021
Размер:
7.65 Mб
Скачать

14. Формат программ на языке Ассемблера.

[1] слайды 240-259.

[2] стр. 313-316.

1. Инструкция процессора.

[метка:] мнемоника [операнды] [; комментарий]

LBL: MOV AX, 3 ; AX = 3

2. Директивы ассемблера (для компилятора).

.MODEL, .DATA, .CODE, .STACK

ASSUME CS: CODESG, DS: DATASG, SS: STACKSG

EQU

Компиляция — трансляция программы, составленной на исходном языке. На этапе трансляции решается несколько задач:

— перевод команд ассемблера в соответствующие машинные команды;

— построение таблицы символов;

— расширение макросов;

— формирование файла листинга и объектного модуля.

Компоновка — преобразование кода и данных объектных файлов в их перемещаемое выполняемое отображение. После этого операционная система может загрузить такой файл в память и выполнить его.

15. Команды условных и безусловных переходов.

[1] слайды 86-99.

[2] стр. 183-199.

Команды безусловной передачи управления:

JMP — Безусловная передача управления;

CALL — Вызов процедуры;

RET — Возврат из процедуры.

Команды условной передачи управления:

cmp X1, X2

Беззнаковые данные (ZF, CF, AF):

JE/JZ — равно.

JNE/JNZ — не равно.

JA/JNBE — больше.

JAE/JNB — больше или равно.

JB/JNAE — меньше.

JBE/JNA — меньше или равно.

Знаковые данные (ZF, SF, OF):

JE/JZ — равно.

JNE/JNZ — не равно.

JG/JNLE — больше.

JGE/JNL — больше или равно.

JL/JNGE — меньше.

JLE/JNG — меньше или равно.

Специальные проверки:

JS — если есть знак.

JC — если есть перенос.

JO — если есть переполнение.

JP — если есть четное число.

JCXZ — если CX равен нулю.

16. Связь asm с Си и Pascal.

[1] слайды 114-129.

PASCAL

Параметры в стек передаются слева направо. Первым в стек помещается ПЕРВЫЙ параметр, последним — ПОСЛЕДНИЙ.

По окончании работы ВЫЗЫВАЕМАЯ процедура должна очистить стек.

Процедура ASM.

PUSH BP

MOV BP, SP

MOV AX, [BP + 8]

ADD AX, [BP + 6]

ADD AX, [BP + 4]

POP BP

RET 6 ; отбрасывание 6-ти байтов параметра

Аналогичный вариант.

ARG i:WORD, j:WORD, k:WORD=argLen RETURNS x: WORD

MOV AX, i

ADD AX, j

ADD AX, k

MOV X, AX

POP BP

RET argLen

Стек:

0 – BP

2 – IP

4 – K

6 – J

8 – I

C/C++

Параметры в стек передаются справа налево. Первым в стек помещается ПОСЛЕДНИЙ параметр, последним — ПЕРВЫЙ.

По окончании работы очистить стек должна ВЫЗЫВАЮЩАЯ процедура.

Процедура ASM.

PUSH BP

MOV BP, SP

I EQU [BP + 6]

J EQU [BP + 8]

K EQU [BP + 10]

; DOING SMTH

POP BP

RET

Стек (FAR-вызов):

0 – BP

2 – CS

4 – IP

6 – I

8 – J

10 – K