亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? xitoa.s

?? thenewofTiny-FatFs
?? S
字號:
;---------------------------------------------------------------------------;
; Extended itoa, puts, printf and atoi                     (C)ChaN, 2006
;
; Module size: 277/261 words (max)
;

#define USE_XPUTS
#define USE_XITOA
#define USE_XPRINTF
#define USE_XATOI



.nolist
#include <avr/io.h>	// Include device specific definitions.
.list

#ifdef SPM_PAGESIZE	// Recent devices have "lpm Rd,Z+" and "movw".
.macro	_LPMI	reg
	lpm	\reg, Z+
.endm
.macro	_MOVW	dh,dl, sh,sl
	movw	\dl, \sl
.endm
#else			// Earlier devices do not have "lpm Rd,Z+" nor "movw".
.macro	_LPMI	reg
	lpm
	mov	\reg, r0
	adiw	ZL, 1
.endm
.macro	_MOVW	dh,dl, sh,sl
	mov	\dl, \sl
	mov	\dh, \sh
.endm
#endif



;---------------------------------------------------------------------------
; Stub function to forward to user output function
;
;Prototype: void xputc (char chr	// a character to be output
;			);
;Size: 10/10 words

.section .bss

.global xfunc_out	; xfunc_out must be initialized before using this module.
xfunc_out:	.ds.w	1

.section .text


.global xputc
.func xputc
xputc:
	push	ZH
	push	ZL
	lds	ZL, xfunc_out+0	;Pointer to the registered output function.
	lds	ZH, xfunc_out+1	;/
	icall
	pop	ZL
	pop	ZH
	ret
.endfunc



;---------------------------------------------------------------------------
; Direct ROM string output
;
;Prototype: void xputs (const prog_char *str // rom string to be output
;			);
;Size: 10/7 words

#ifdef USE_XPUTS
.global xputs
.func xputs
xputs:
	_MOVW	ZH,ZL, r25,r24	; Z = pointer to rom string
1:	_LPMI	r24
	cpi	r24, 0
	breq	2f
	rcall	xputc
	rjmp	1b
2:	ret
.endfunc
#endif


;---------------------------------------------------------------------------
; Extended direct numeral string output (32bit version)
;
;Prototype: void xitoa (long value,	// value to be output
;                       char radix,	// radix
;                       char width);	// minimum width
;Size: 59/59 words
;

#ifdef USE_XITOA
.global xitoa
.func xitoa
xitoa:
				;r25:r22 = value, r20 = base, r18 = digits
	clr	r31		;r31 = stack level
	ldi	r30, ' '	;r30 = sign
	ldi	r19, ' '	;r19 = filler
	sbrs	r20, 7		;When base indicates signd format and the value
	rjmp	0f		;is minus, add a '-'.
	neg	r20		;
	sbrs	r25, 7		;
	rjmp	0f		;
	ldi	r30, '-'	;
	com	r22		;
	com	r23		;
	com	r24		;
	com	r25		;
	adc	r22, r1		;
	adc	r23, r1		;
	adc	r24, r1		;
	adc	r25, r1		;/
0:	sbrs	r18, 7		;When digits indicates zero filled,
	rjmp	1f		;filler is '0'.
	neg	r18		;
	ldi	r19, '0'	;/
				;----- string conversion loop
1:	ldi	r21, 32		;r26 = r25:r22 % r20
	clr	r26		;r25:r22 /= r20
2:	lsl	r22		;
	rol	r23		;
	rol	r24		;
	rol	r25		;
	rol	r26		;
	cp	r26, r20	;
	brcs	3f		;
	sub	r26, r20	;
	inc	r22		;
3:	dec	r21		;
	brne	2b		;/
	cpi	r26, 10		;r26 is a numeral digit '0'-'F'
	brcs	4f		;
	subi	r26, -7		;
4:	subi	r26, -'0'	;/
	push	r26		;Stack it
	inc	r31		;/
	cp	r22, r1		;Repeat until r25:r22 gets zero
	cpc	r23, r1		;
	cpc	r24, r1		;
	cpc	r25, r1		;
	brne	1b		;/

	cpi	r30, '-'	;Minus sign if needed
	brne	5f		;
	push	r30		;
	inc	r31		;/
5:	cp	r31, r18	;Filler
	brcc	6f		;
	push	r19		;
	inc	r31		;
	rjmp	5b		;/

6:	pop	r24		;Flush stacked digits and exit
	rcall	xputc		;
	dec	r31		;
	brne	6b		;/

	ret
.endfunc
#endif



;---------------------------------------------------------------------------;
; Formatted string output (16/32bit version)
;
;Prototype: void xprintf (const prog_char *format, ...);
;Size: 104/94 words
;

#ifdef USE_XPRINTF
.global xprintf
.func xprintf
xprintf:
	push	YH
	push	YL
	in	YL, _SFR_IO_ADDR(SPL)
#ifdef SPH
	in	YH, _SFR_IO_ADDR(SPH)
#else
	clr	YH
#endif
	adiw	YL, 5		;Y = pointer to arguments
	ld	ZL, Y+		;Z = pointer to format string
	ld	ZH, Y+		;/

0:	_LPMI	r24		;Get a format char
	cpi	r24, 0		;End of format string?
	breq	90f		;/
	cpi	r24, '%'	;Is format?
	breq	20f		;/
1:	rcall	xputc		;Put a normal character
	rjmp	0b		;/
90:	pop	YL
	pop	YH
	ret

20:	ldi	r18, 0		;r18: digits
	clt			;T: filler
	_LPMI	r21		;Get flags
	cpi	r21, '%'	;Is a %?
	breq	1b		;/
	cpi	r21, '0'	;Zero filled?
	brne	23f		;
	set			;/
22:	_LPMI	r21		;Get width
23:	cpi	r21, '9'+1	;
	brcc	24f		;
	subi	r21, '0'	;
	brcs	90b		;
	lsl	r18		;
	mov	r0, r18		;
	lsl	r18		;
	lsl	r18		;
	add	r18, r0		;
	add	r18, r21	;
	rjmp	22b		;/

24:	brtc	25f		;get value (low word)
	neg	r18		;
25:	ld	r24, Y+		;
	ld	r25, Y+		;/
	cpi	r21, 'c'	;Is type character?
	breq	1b		;/
	cpi	r21, 's'	;Is type RAM string?
	breq	50f		;/
	cpi	r21, 'S'	;Is type ROM string?
	breq	60f		;/
	_MOVW	r23,r22,r25,r24	;r25:r22 = value
	clr	r24		;
	clr	r25		;
	clt			;/
	cpi	r21, 'l'	;Is long int?
	brne	26f		;
	ld	r24, Y+		;get value (high word)
	ld	r25, Y+		;
	set			;
	_LPMI	r21		;/
26:	cpi	r21, 'd'	;Is type signed decimal?
	brne	27f		;/
	ldi	r20, -10	;
	brts	40f		;
	sbrs	r23, 7		;
	rjmp	40f		;
	ldi	r24, -1		;
	ldi	r25, -1		;
	rjmp	40f		;/
27:	cpi	r21, 'u'	;Is type unsigned decimal?
	ldi	r20, 10		;
	breq	40f		;/
	cpi	r21, 'X'	;Is type hexdecimal?
	ldi	r20, 16		;
	breq	40f		;/
	cpi	r21, 'b'	;Is type binary?
	ldi	r20, 2		;
	breq	40f		;/
	rjmp	90b		;abort
40:	push	ZH		;Output the value
	push	ZL		;
	rcall	xitoa		;
42:	pop	ZL		;
	pop	ZH		;
	rjmp	0b		;/

50:	push	ZH		;Put a string on the RAM
	push	ZL
	_MOVW	ZH,ZL, r25,r24
51:	ld	r24, Z+
	cpi	r24, 0
	breq	42b
	rcall	xputc
	rjmp	51b

60:	push	ZH		;Put a string on the ROM
	push	ZL
	rcall	xputs
	rjmp	42b

.endfunc
#endif



;---------------------------------------------------------------------------
; Extended numeral string input
;
;Prototype: char xatoi (char **str	// pointer to pointer to source string
;                       long *res);	// result
;Size: 94/91 words
;

#ifdef USE_XATOI
.global xatoi
.func xatoi
xatoi:
	_MOVW	r1, r0, r23, r22
	_MOVW	XH, XL, r25, r24
	ld	ZL, X+
	ld	ZH, X+
	clr	r18		;r21:r18 = 0;
	clr	r19		;
	clr	r20		;
	clr	r21		;/
	clt			;T = 0;

	ldi	r25, 10		;r25 = 10;
	rjmp	41f		;/
40:	adiw	ZL, 1		;Z++;
41:	ld	r22, Z		;r22 = *Z;
	cpi	r22, ' '	;if(r22 == ' ') continue
	breq	40b		;/
	brcs	70f		;if(r22 < ' ') error;
	cpi	r22, '-'	;if(r22 == '-') {
	brne	42f		; T = 1;
	set			; continue;
	rjmp	40b		;}
42:	cpi	r22, '9'+1	;if(r22 > '9') error;
	brcc	70f		;/
	cpi	r22, '0'	;if(r22 < '0') error;
	brcs	70f		;/
	brne	51f		;if(r22 > '0') cv_start;
	ldi	r25, 8		;r25 = 8;
	adiw	ZL, 1		;r22 = *(++Z);
	ld	r22, Z		;/
	cpi	r22, ' '+1	;if(r22 <= ' ') exit;
	brcs	80f		;/
	cpi	r22, 'b'	;if(r22 == 'b') {
	brne	43f		; r25 = 2;
	ldi	r25, 2		; cv_start;
	rjmp	50f		;}
43:	cpi	r22, 'x'	;if(r22 != 'x') error;
	brne	51f		;/
	ldi	r25, 16		;r25 = 16;

50:	adiw	ZL, 1		;Z++;
	ld	r22, Z		;r22 = *Z;
51:	cpi	r22, ' '+1	;if(r22 <= ' ') break;
	brcs	80f		;/
	cpi	r22, 'a'	;if(r22 >= 'a') r22 =- 0x20;
	brcs	52f		;
	subi	r22, 0x20	;/
52:	subi	r22, '0'	;if((r22 -= '0') < 0) error;
	brcs	70f		;/
	cpi	r22, 10		;if(r22 >= 10) {
	brcs	53f		; r22 -= 7;
	subi	r22, 7		; if(r22 < 10) 
	cpi	r22, 10		;
	brcs	70f		;}
53:	cp	r22, r25	;if(r22 >= r25) error;
	brcc	70f		;/
60:	ldi	r24, 33		;r21:r18 *= r25;
	sub	r23, r23	;
61:	brcc	62f		;
	add	r23, r25	;
62:	lsr	r23		;
	ror	r21		;
	ror	r20		;
	ror	r19		;
	ror	r18		;
	dec	r24		;
	brne	61b		;/
	add	r18, r22	;r21:r18 += r22;
	adc	r19, r24	;
	adc	r20, r24	;
	adc	r21, r24	;/
	rjmp	50b		;repeat

70:	ldi	r24, 0
	rjmp	81f
80:	ldi	r24, 1
81:	brtc	82f
	clr	r22
	com	r18
	com	r19
	com	r20
	com	r21
	adc	r18, r22
	adc	r19, r22
	adc	r20, r22
	adc	r21, r22
82:	st	-X, ZH
	st	-X, ZL
	_MOVW	XH, XL, r1, r0
	st	X+, r18
	st	X+, r19
	st	X+, r20
	st	X+, r21
	clr	r1
	ret
.endfunc
#endif


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品视频在线免费看| 不卡视频免费播放| 亚洲精选在线视频| 中文字幕av一区 二区| 久久久久久久久久电影| 久久精品男人的天堂| 国产亚洲欧美日韩俺去了| 久久久夜色精品亚洲| 欧美激情综合五月色丁香小说| 精品免费视频.| 久久综合九色综合欧美就去吻| 精品乱码亚洲一区二区不卡| 2021久久国产精品不只是精品| 日韩女优制服丝袜电影| 久久久久久久久97黄色工厂| 国产精品嫩草99a| 亚洲色欲色欲www| 午夜天堂影视香蕉久久| 免费久久99精品国产| 国产在线国偷精品免费看| 国产a级毛片一区| 色噜噜狠狠成人中文综合| 欧美日韩国产综合一区二区 | 国产精品免费av| 亚洲欧美在线另类| 亚洲成人你懂的| 久久激五月天综合精品| 成人午夜视频在线观看| 色吧成人激情小说| 欧美一级高清片| 国产精品亲子伦对白| 亚洲国产成人精品视频| 国产一区视频在线看| 91麻豆国产在线观看| 日韩无一区二区| 国产精品免费久久| 美国欧美日韩国产在线播放| 97精品国产露脸对白| 欧美一区二区三区婷婷月色| 国产精品国模大尺度视频| 亚洲成人久久影院| 成人黄色av网站在线| 91精品国产综合久久婷婷香蕉 | 亚洲午夜精品一区二区三区他趣| 日韩黄色一级片| 97久久超碰国产精品| 久久免费视频色| 亚洲图片欧美综合| 国产不卡视频在线观看| 欧美成人r级一区二区三区| 国产精品久久夜| 激情综合五月天| 欧美精选一区二区| 亚洲欧美另类在线| 成人av免费在线| 精品成人一区二区三区| 亚洲超丰满肉感bbw| www.日韩av| 国产免费久久精品| 国产剧情av麻豆香蕉精品| 欧美日本一区二区三区四区| 亚洲欧洲中文日韩久久av乱码| 国产黄人亚洲片| 久久综合九色综合97婷婷| 日本中文在线一区| 欧美日本在线播放| 亚洲综合免费观看高清完整版 | 粉嫩aⅴ一区二区三区四区五区| 91精品国产综合久久蜜臀| 亚洲综合色噜噜狠狠| 色哟哟亚洲精品| www.av亚洲| 黄页视频在线91| 欧美大片一区二区| 老汉av免费一区二区三区| 欧美美女一区二区三区| 亚洲高清免费视频| 欧美日韩一区在线观看| 亚洲国产乱码最新视频| 欧美中文字幕一区二区三区| 亚洲激情在线播放| 欧美日韩在线播放三区四区| 一区二区三区中文字幕| 色999日韩国产欧美一区二区| **性色生活片久久毛片| 成人精品国产福利| 中文字幕一区二区三区四区| 99热99精品| 亚洲福利一二三区| 555夜色666亚洲国产免| 日本中文字幕不卡| 久久久亚洲高清| 成人深夜在线观看| 亚洲精品大片www| 在线电影国产精品| 国产一区二区看久久| 日本一区二区电影| 91国产免费观看| 开心九九激情九九欧美日韩精美视频电影| 欧美精品久久久久久久多人混战| 免费在线观看不卡| 国产精品久久久久aaaa| 欧美午夜精品理论片a级按摩| 免费美女久久99| 18欧美亚洲精品| 欧美久久高跟鞋激| 成人激情av网| 日本亚洲免费观看| 国产精品欧美一区喷水| 欧美日韩午夜精品| 国产成人亚洲综合色影视| 亚洲精品亚洲人成人网在线播放| 欧美一区二区人人喊爽| 91在线云播放| 美女爽到高潮91| 亚洲人成亚洲人成在线观看图片| 欧美另类高清zo欧美| 高清不卡一区二区在线| 亚洲一区二区不卡免费| 国产亚洲欧美一级| 欧美喷潮久久久xxxxx| 高清成人在线观看| 老司机精品视频线观看86| 亚洲精品视频在线| 欧美激情一区三区| 日韩午夜在线影院| 在线免费不卡视频| 成人精品视频一区二区三区| 人人爽香蕉精品| 亚洲综合免费观看高清完整版在线 | 99精品欧美一区二区三区小说| 日韩av电影一区| 亚洲精品成人a在线观看| 国产清纯白嫩初高生在线观看91| 91精品国产乱码| 91精彩视频在线| av激情亚洲男人天堂| 国产精品一区二区在线观看网站| 免费成人美女在线观看.| 亚洲图片有声小说| 一区二区三区中文在线观看| 日韩毛片精品高清免费| 欧美国产成人精品| 亚洲国产精品精华液ab| 26uuu国产日韩综合| 欧美电影免费观看高清完整版在线 | 韩国理伦片一区二区三区在线播放| 亚洲成人先锋电影| 亚洲成人福利片| 亚洲va在线va天堂| 天天做天天摸天天爽国产一区 | 91精品国产高清一区二区三区蜜臀 | 日本高清不卡在线观看| 99久久婷婷国产| 99视频精品全部免费在线| av电影在线不卡| 99riav一区二区三区| 成人h版在线观看| 99久久精品免费看| 91在线porny国产在线看| 91视频免费播放| 91久久精品一区二区三区| 93久久精品日日躁夜夜躁欧美| 色网站国产精品| 欧美亚洲一区二区三区四区| 欧美久久久一区| 欧美刺激脚交jootjob| 久久色中文字幕| 中文字幕一区二区在线观看| 亚洲欧美日韩国产中文在线| 亚洲综合偷拍欧美一区色| 天天综合天天综合色| 狠狠色丁香婷婷综合| 国产成人av福利| 91久久线看在观草草青青| 欧美日韩第一区日日骚| 精品国产凹凸成av人导航| 中文字幕不卡在线播放| 亚洲一区免费观看| 久久99九九99精品| 成人免费视频一区二区| 欧美主播一区二区三区美女| 欧美一区二区三区在线观看视频| 2020国产精品久久精品美国| 1024国产精品| 日韩电影在线观看电影| 成人激情电影免费在线观看| 欧美猛男gaygay网站| 久久久99精品久久| 亚洲午夜激情网页| 国产成人在线视频网址| 欧美日韩在线一区二区| 久久久影院官网| 亚洲va韩国va欧美va精品| 国产激情一区二区三区| 欧美美女网站色| ...中文天堂在线一区| 国产综合久久久久久鬼色| 91国产福利在线| 国产精品国产精品国产专区不蜜|