Перенос параметров через стек - Assembler
Формулировка задачи:
Доброго времени суток .
Даны два массива , заменить элемент массива кратный 5 на первый элемент ;
Передачу параметров через регистры я смог сделать ; вопрос в том , как сделать выполнить эту программу , используя стек ?
Правильно ли я понял , что это передача через стек , и в этой строчке возможно ли обойтись без регистра для проверки кратности ?
.586 .model flat,stdcall extern ExitProcess@4:near includelib c:\masm32\lib\user32.lib includelib C:\masm32\lib\kernel32.lib data segment X DW 1,2,3,4,5 Y DW -1,2,14,10 F DB 5 data ends text segment start: MOV AX,5 PUSH AX LEA EAX,X PUSH EAX CALL LOL MOV AX,4 PUSH AX LEA EAX,Y PUSH EAX CALL LOL push 0 call ExitProcess@4 LOL PROC PUSH CX PUSH EBX MOV DL , BYTE PTR[EBX] H1:MOV AL,BYTE PTR[EBX] MOV AH,0 IDIV F CMP AH,0 JNE G1 MOV BYTE PTR[EBX],DL G1:INC EBX LOOP H1 POP EBX POP CX RET LOL ENDP text ends end start
Хотя , нет , проверьте ,пожалуйста :
.586 .model flat,stdcall extern ExitProcess@4:near includelib c:\masm32\lib\user32.lib includelib C:\masm32\lib\kernel32.lib data segment X DW 1,2,3,4,5 Y DW -1,2,14,10 F DB 5 data ends text segment start: MOV AX,5 PUSH AX LEA EAX ,X PUSH EAX CALL LOL MOV AX, 4 PUSH AX LEA EAX,Y PUSH EAX CALL LOL push 0 call ExitProcess@4 LOL PROC PUSH EBP MOV EBP,ESP MOV CX,[EBP+12] MOV EBX,[EBP+8] MOV DX,WORD PTR[EBX] H1:MOV AX,WORD PTR[EBX] IDIV F CMP AH,0 JNE G1 MOV WORD PTR[EBX],DX G1:ADD EBX,2 LOOP H1 POP EBP RET LOL ENDP text ends end start
MOV AX,WORD PTR[EBX] IDIV F CMP AH,0
Решение задачи: «Перенос параметров через стек»
textual
Листинг программы
MOV EAX, 4 PUSH EAX LEA EAX,Y PUSH EAX CALL LOL
Объяснение кода листинга программы
MOV EAX, 4
- выполняет перенос значения 4 в регистр EAXPUSH EAX
- отправляет значение регистра EAX в стекLEA EAX,Y
- выполняет линковую команду, которая скорее всего указывает на переменную Y в памяти компьютераPUSH EAX
- отправляет значение регистра EAX в стекCALL LOL
- выполняет вызов функции с именем LOL, которая скорее всего находится в другом месте памяти компьютера Возможно, данный код выполняет перенос параметров в стек для последующего вызова функции, но без дополнительной информации сложно дать точный ответ.