Передать параметры через стек - PullRequest
0 голосов
/ 25 мая 2018

Я пишу программу с emu8086

.data
address   dd 82C028D1h, 81C0276Ah 
mask      dd FFFC0000h
reference dd 82C0B685h

.code
proc filter
    push bp
    mov bp, sp
    ; stack              

    ; bp+0  ==> old bp

    ; bp+2  ==> return address 
    ; bp+4  ==> return value
    ; bp+6  ==> offset mask
    ; bp+8  ==> offset address
    ; bp+10 ==> low reference
    ; bp+12 ==> high reference
    ....
    pop bp
    ret
    endp

В моем "основном" коде у меня есть

; intel is LITTLE ENDIAN
push WORD PTR [reference+2]    ; high
push WORD PTR [reference]  ; low 

push offset address
push offset mask  

sub sp, 2    ; space for return value
call filter
pop ax       ; return value

add sp, 8    ; clean parameters

Похоже, мои предположения о том, где параметры находятся в стекенеправильно, как я могу получить доступ к своим параметрам?

РЕДАКТИРОВАТЬ

Полный код на pastebin .

У меня есть массив«адрес», маска и ссылка.Мне нужно проверить для каждого элемента адреса, соответствует ли он ссылке в соответствии с маской (1 или 0).Если я нахожу определенный бит, который мне нужно проверить (1 в маске), который не совпадает, мой элемент недействителен.

Я должен вернуть количество действительных адресов.

Пример :

ссылка : 10000010.11000000.10110110.10000101

маска : 11111111.11111100.00000000.00000000

address1: 10000010.11000000.00101000.11010001 (действительный)

address2 : 10000001.11000000.00100111.01101010 (недействительный)

...