Да проверял я. Вроде все правильно. Маленький пример (правда) не очень реальный.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Bill 07 июня 2004 г. 13:59
В ответ на: Криминалу на первый взгляд нет, да и компактней не придумаешь. Думаю, хорошо... отправлено =mse= 07 июня 2004 г. 13:47


#include "stack.inc"

RSEG CODE
;
; Standard run-time CLIB function
;
; char *strpy(char *dst, char *src)
;
; It's expected that parameters are evaluated FROM RIGHT TO LEFT and placed on stack
;
; Parameter offset definitions:
;
SRC$ = -2 ; Source string pointer
DST$ = 0 ; Destination string pointer

PUBLIC strcpy
strcpy:
STK$ALC 0 ; Initiate stack space
STK$PUSH ; Save X-register
STK$GET SRC$, ; set src pointer
STK$GET DST$, ; char *cp = dst;

?1: ld R16, X+ ; while (*cp++ == *src++);
st Z+, R16 ;
tst R16 ;
brne ?1 ;

STK$POP ; Restore X-register
STK$GET DST$, ; return dst;
STK$RLS ; Release stack space
ret
end


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru