Я пишу программу с 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 (недействительный)