Макросы в ассемблере - Assembler (223795)
Формулировка задачи:
Как в ассемблере написать макросы с аргументами HIWORD(x) и LOWORD(x)?
HIWORD(x) должен возвращать старшее слово из x.
LOWORD(x) должен возвращать младшее слово из x.
Решение задачи: «Макросы в ассемблере»
textual
Листинг программы
.586P .MODEL FLAT, STDCALL HIWORD macro x,y mov x, WORD PTR [ y + 2 ] endm .DATA number DWORD 11223344h .CODE START: HIWORD ax,number RET END START
Объяснение кода листинга программы
- .586P - Это директива компилятора, которая указывает на то, что код написан для процессора с тактовой частотой 586 МГц или более поздней версии.
- .MODEL FLAT, STDCALL - Это директива компилятора, которая указывает на модель памяти и метод вызова функций. В данном случае используется модель
FLAT
, что означает плоскую модель памяти, и метод вызова функцийSTDCALL
. - HIWORD macro x,y - Это определение макроса с именем
HIWORD
, который принимает два аргумента:x
иy
. - mov x, WORD PTR [ y + 2 ] - Это инструкция, которая перемещает значение из слова, на которое указывает
y
(включая смещение), вx
. - .DATA - Это сегмент данных.
- number DWORD 11223344h - Это определение переменной
number
типаDWORD
(4 байта) со значением 11223344 в шестнадцатеричной системе счисления. - START: - Это метка начала выполнения программы.
- HIWORD ax,number - Это вызов макроса
HIWORD
, гдеax
- это регистр, в который будет сохранено значение высокого слова, аnumber
- это переменная, содержащая значение для вызова макроса. - RET - Это инструкция, которая возвращает управление в вызывающую программу или подпрограмму.
- END START - Это метка конца программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д