Re: 請問要如何製作一個程式庫(labrary)
|
||||
---|---|---|---|---|
版主
|
可以參考 W401 workshop 教材的第七章 C call Assembly
發表於: 2007/1/22 18:15
|
|||
|
Re: 請問要如何製作一個程式庫(labrary)
|
||||
---|---|---|---|---|
高級會員
|
發表於: 2007/1/22 15:05
|
|||
|
請問要如何製作一個程式庫(library)
|
||||
---|---|---|---|---|
高級會員
|
請問各位,請問如何將一個寫好的程式改成可供呼叫的library?
如果原本是用assembly寫的程式,改成library後,是否也可以給c來呼叫使用? 還有想請問在library中的是如何分配暫存器的位址,是否是在主程式呼叫時才分配一個位址給LAB中的暫存器使用,在程式結束後就釋放LIB所控制的位址? 例如下面這個程式,要加減哪些東西,才可以成為一個可供呼叫的程式庫? TITLE "B2BCD.ASM" LIST P=18F452 #INCLUDE <P18F452.INC> GLOBAL _B2_BCD_Loop #define TRUE 1 #define FALSE 0 _INC equ 1 _NO_INC equ 0 _LOW equ 0 _HIGH equ 1 MY_RAM0 UDATA byte RES .5 R0 RES .6 ; must maintain R2, R1, R0 sequence count RES .1 count1 RES .1 count2 RES .1 t_status RES .1 #define carry .7 ORG 00H GOTO _B2_BCD_Loop CODE _B2_BCD_Loop movlb high byte movlw .8 movwf count ; set count = 16 movwf count1 movlw .3 movwf count2 _div_8 rrcf count1 decfsz count2 goto _div_8 btfsc STATUS,C incf count1 movff count1,count2 clrf R0 clrf R0+1 clrf R0+2 clrf R0+3 clrf R0+4 clrf R0+5 loop40 movlw byte movwf FSR0L MOVLW HIGH byte MOVWF FSR0H movff count2,count1 loopii rlcf t_status,carry rlcf INDF0 bcf t_status,carry btfsc STATUS,C bsf t_status,carry incf FSR0L decfsz count1 goto loopii rlcf t_status,carry rlcf R0 rlcf R0+1 rlcf R0+2 rlcf R0+3 rlcf R0+4 rlcf R0+5 dcfsnz count return ; DONE adjDEC movlw R0 ; load R2 as indirect address ptr movwf FSR0L movlw high R0 movwf FSR0H call adjBCD movff count2,count1 BCD_INC incf FSR0L, F call adjBCD decfsz count1 goto BCD_INC goto loop40 adjBCD movf INDF0,W addlw 0x03 btfsc WREG,3 ; test if result > 7 movwf INDF0 movf INDF0,W addlw 0x30 btfsc WREG,7 ; test if result > 7 movwf INDF0 ; save as MSD return goto loop40 END
發表於: 2007/1/18 14:16
|
|||
|