|
Привет ВСЕм!
Проблемка в вызове ассемблерной функции из С.
Ф-ия описана так:
?PR?DES Segment Code
RSEG ?PR?DES
PUBLIC DES_CryptBlock
DES_CALCAREA EQU 052H
scr_DATA EQU 05AH
DES_SAVEAREA EQU 062H
DES_BITMAP EQU 024H
CCB EQU 02FH
...
DES_CryptBlock:
MOV R0, #DES_BITMAP
MOV R1, #DES_SAVEAREA
MOV R2, #DES_BlockSize
CopyLoop2:
MOV A, @R0
MOV @R1, A
INC R0
INC R1
DJNZ R2, CopyLoop2
ANL CCB, #11110101b
compute_key_address:
PUSH DPH
PUSH DPL
MOV R1, #08H
JB DES_round2, DEA_with_R1_set
MOV R1, #00H
JNB LongDeS3, DEA_with_R1_set
MOV C, DES_round3
ANL C, /Encrypt
JC DEA_with_R1_set
MOV C, Encrypt
ANL C, /DES_round3
JC DEA_with_R1_set
MOV R1, #10H
DEA_with_R1_set:
...
Так я и не смог понять, как передаются в нее данные..
Попытался описать прототип в С:
extern void DES_CryptBlock(unsigned char *key, unsigned char *dat_buf, unsigned char flags);
Но при линковке получаю сообщения об ошибке:
REFERENCE MADE TO UNRESOLVED EXTERNAL
_DES_CRYPTBLOCK
и еще одно:
REFERENCE MADE TO UNRESOLVED EXTERNAL
?_DES_CRYPTBLOCK?BYTE
Как бы это победить ?
E-mail: info@telesys.ru