Ассемблер + С в Keil 51 v 6.14
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено treumer 24 июля 2003 г. 13:31

Привет ВСЕм!
Проблемка в вызове ассемблерной функции из С.
Ф-ия описана так:
?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