Макрос обнуления одного или нескольких регистров - Assembler
Формулировка задачи:
Поставили задачу на изучение макроопределений.
1)Описать в виде макроса NULL RS (RS — это <R1, R2, ..., Rk>, где Ri — имена ре-
гистров общего назначения, k ≥ 0) обнуление регистров Ri.
2)Выписать макрорасширения для макрокоманд NULL <AL, BX, SI> и NULL <>.
Если я правильно понял то вид макроса -
NULL_RS macro RS ; где RS будет принимать только значение одного из регистров cmp eax,RS je xoreax cmp ebx,RS je xorebx cmp ecx,RS je xorecx cmp edx,RS je xoredx xoreax: xor eax,eax jmp end_ xorebx: xor ebx,ebx jmp end_ xorecx: xor ecx,ecx jmp end_ xoredx: xor edx,edx jmp end_ end_: ENDM
Где при вызове макроса
NULL_RS edx ; или NULL_RS <edx> - это ведь одно и то же? ;очистится на выбор один из регистров общего назначения. [ Y/N ?] Или при вызове NULL_RS я должен просто очистить все регистры?
Среда выполнения Masm32.
И хочу спросить насчёт 2-ого задания ("Макрорасширения") , если я правильно понял - замена телом макроса - называется макрорасширением.
Т.е при ассемблирования команды NULL <AL, BX, SI> - нужно будет очистить только указанные регистры AL,BX и SI - ?
А при вызове NULL <> - очистить все регистры? Решение задачи: «Макрос обнуления одного или нескольких регистров»
textual
Листинг программы
NULL macro RS mov RS, 0 endm
Объяснение кода листинга программы
- Создается макрос обнуления регистра RS.
- В первой строке кода макроса mov RS, 0; происходит перемещение нуля в регистр RS, что приводит к его обнулению.
- Макрос завершается, и выполнение кода продолжается после строки, в которой был вызван макрос.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д