Очистка стека после завершения процедуры в TASM - Assembler
Формулировка задачи:
Есть пример процедуры:
test1 PROC c near uses ax arg @a:word, @d:word, @c:word local @e:word, @h:word mov @e, 4 mov @h, 5 mov ax, @a mov ax, @d mov ax, @c mov ax, @e mov ax, @h ret endp
Вопрос:
Как очистить стек от передаваемых в нее параметров? Если написать ret 6, то компилятор не генерирует код для восстановления регистра ax, очистки локальных переменных и другого.Решение задачи: «Очистка стека после завершения процедуры в TASM»
textual
Листинг программы
1 0000 model tiny,c 2 0000 .code 3 org 100h 4 0100 begin: 5 call test1,ax,bx,cx 1 6 0100 51 PUSH CX 1 7 0101 53 PUSH BX 1 8 0102 50 PUSH AX 1 9 0103 E8 0004 CALL TEST1 1 10 0106 83 C4 06 ADD SP,0006h 11 0109 C3 ret 12 010A test1 PROC near uses ax 13 arg @a:word, @d:word, @c:word 14 local @e:word, @h:word 15 1 16 010A 55 PUSH BP 1 17 010B 8B EC MOV BP,SP 1 18 010D 83 EC 04 SUB SP,0004h 1 19 0110 50 PUSH AX 2 20 0111 58 POP AX 2 21 0112 8B E5 MOV SP,BP 2 22 0114 5D POP BP 2 23 0115 C3 RET 0000h 24 0116 endp 25 end begin
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д