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

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

?? convert.asm

?? convert.asm: 1.From ASCII resp. BCD to binary 2.From binary to ASCII resp. BCD 3.From binary to H
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
; ********************************************************
; * Number conversion routines, Version 0.1 January 2002 *
; * (C)2002 by info@avr-asm-tutorial.net                 *
; ********************************************************
;
; The following rules apply for all conversion routines:
; - Errors during conversion set the T-bit in the status
;   register.
; - Z points to either SRAM (Z>=$0060) or to registers
;   ($0001 .. $001D, exclude R0, R16 and R30/31).
; - ASCII- and BCD-coded numbers with multiple digits are
;   placed with higher significant digits at lower adres-
;   ses. Z should always point to the most significant
;   digit.
; - 16-bit-binary values are generally located in the
;   registers rBin1H:rBin1L. These must be defined within
;   the calling program.
; - Register rmp (range: R16..R29) is used within the
;   routines, its content is changed.
; - Register pair Z is used within the routines, its
;   content is set depending on the result.
; - Some routines use register R0 temporarily, its content
;   is restored.
; - Due to the use of the Z-Register pair the header file
;   for the target processor (xxxxdef.inc) must be inclu-
;   ded in the calling program or ZH (R31) and ZL (R30)
;   must be defined manually. Otherwise an error message
;   results, or you will get crazy things going on, when
;   you run the program.
; - Because subroutines and push/pop-operations are used
;   within these routines you must set the stack pointer
;   (SPH:SPL, resp. SPL for devices with equal or less
;   than 256 Byte internal SRAM).
;
; ***************** Routines Overview ********************
; Routines   Input        Conditions           Out, Errors
; --------------------------------------------------------
; AscToBin2  Z points on  stops at first non-  16-bit-bin
;            first ASCII  non-decimal digit,   rBin1H:L,
;            char         ignores leading      Overflow
;                         blanks and zeros
; Asc5ToBin2 Z points on  requires exact 5     16-bit-bin
;            first ASCII  valid digits,        rBin1H:L,
;            char         ignores leading      Overflow
;                         blanks and zeros     and non-dec
; Bcd5ToBin2 5-digit-BCD  requires exact 5     16-bit-bin
;            Z points to  valid digits         rBin1H:L
;            first digit                       Overflow
;                                              and non-BCD
; Bin2ToBcd5 16-bit-bin   Z points to first    5-digit-BCD
;            in rBin1H:L  BCD digit            Z on first,
;                                              no errors
; Bin2ToHex4 16-bit-bin   Z points to first    4-digit-hex
;            in rBin1H:L  Hex ASCII digit,     Z on first
;                         hex digits A..F      no errors
; Hex4ToBin2 4-digit-hex  Z points to first    16-bit-bin
;            Z points to  hex ASCII digit,     rBin1H:L,
;            first char   requires 4 digits,   invalid hex
;                         A..F or a..f ok      digit
; ******************* Conversion code ********************
;
; Package I: From ASCII resp. BCD to binary
;
; AscToBin2
; =========
; converts an ASCII coded number to a 2-Byte bi-
; nary
; In: Z points to first digit, conversion stops at first
;   digit detected or if overflow of the result occurs,
;   end of number must be terminated by a non-decimal
;   ASCII-digit!
; Out: Z points to first non-valid digit or to the digit
;   where the overflow occurred, if number is valid the
;   T-Flag is clear and the number is in registers
;   rBin1H:rBin1L
; Used registers: rBin1H:L (result), rBin2H:L (restored
;   after use), rmp
; Called subroutines: Bin1Mul10
;
AscToBin2:
	clr rBin1H ; Clear the result
	clr rBin1L
	clt ; Clear error flag bit
AscToBin2a:
	ld rmp,Z+ ; ignore leading blanks and zeros
	cpi rmp,' ' ; blank?
	breq AscToBin2a
	cpi rmp,'0' ; zero?
	breq AscToBin2a
AscToBin2b:
	subi rmp,'0' ; subtract ASCII zero
	brcs AscToBin2d ; End of the number
	cpi rmp,10 ; check invalid digit
	brcc AscToBin2d ; No-decimal char
	rcall Bin1Mul10 ; Multiply binary number by 10
	brts AscToBin2c ; overflow, return with T-Flag set
	add rBin1L,rmp ; add the digit to the binary
	ld rmp,Z+ ; read next char
	brcc AscToBin2b ; no overflow to binary MSB
	inc rBin1H ; Overflow to binary MSB
	brne AscToBin2b ; no overflow of binary MSB
	set ; Set overflow flag
AscToBin2c:
	sbiw ZL,1 ; Back one char, last char end/invalid
AscToBin2d:
	ret
;
; Asc5ToBin2
; ==========
; converts a 5-digit ASCII to a 16-bit-binary
; In: Z points to first decimal ASCII-digit, leading
;   blanks and zeros are ok. Requires exact 5 digits.
; Result: T-Flag reports result:
;   T=0: result in rBin1H:rBin1L, valid, Z points to
;     first digit of the hex-ASCII-number
;   T=1: error, Z points to the first illegal character
;     or to the digit, where the overflow occurred
; Used registers: rBin1H:L (result), R0 (restored after
;   use), rBin2H:L (restored after use), rmp
; Called subroutines: Bin1Mul10
;
Asc5ToBin2:
	push R0 ; R0 is used as counter, save it first
	ldi rmp,6 ; five chars, one too much
	mov R0,rmp
	clr rBin1H ; Clear result
	clr rBin1L
	clt ; Clear T-Bit
Asc5ToBin2a:
	dec R0 ; all chars read?
	breq Asc5ToBin2d ; last char
	ld rmp,Z+ ; read a char
	cpi rmp,' ' ; ignore blanks
	breq Asc5ToBin2a ; next char
	cpi rmp,'0' ; ignore leading zeros
	breq Asc5ToBin2a ; next char
Asc5ToBin2b:
	subi rmp,'0' ; treat digit
	brcs Asc5ToBin2e ; Last char was invalid
	cpi rmp,10 ; digit > 9
	brcc Asc5ToBin2e ; Last char invalid
	rcall Bin1Mul10 ; Multiply result by 10
	brts Asc5ToBin2e ; Overflow occurred
	add rBin1L,rmp ; add the digit
	ld rmp,z+
	brcc Asc5ToBin2c ; no overflow to MSB
	inc rBin1H ; Overflow to MSB
	breq Asc5ToBin2e ; Overflow of MSB
Asc5ToBin2c:
	dec R0 ; downcount number of digits
	brne Asc5ToBin2b ; convert more chars
Asc5ToBin2d: ; End of ASCII number reached ok
	sbiw ZL,5 ; Restore start position of ASCII number
	pop R0 ; Restore register R0
	ret
Asc5ToBin2e: ; Last char was invalid
	sbiw ZL,1 ; Point to invalid char
	pop R0 ; Restore register R0
	set ; Set T-Flag for error
	ret ; and return with error condition set
;
; Bcd5ToBin2
; ==========
; converts a 5-bit-BCD to a 16-bit-binary
; In: Z points to the most signifant digit of the BCD
; Out: T-flag shows general result:
;   T=0: Binary in rBin1H:L is valid, Z points to the
;     first digit of the BCD converted
;   T=1: Error during conversion. Either the BCD was too
;     big (must be 0..65535, Z points to BCD where the
;     overflow occurred) or an illegal BCD was detected
;     (Z points to the first non-BCD digit).
; Used registers: rBin1H:L (result), R0 (restored after
;   use), rBin2H:L (restored after use), rmp
; Called subroutines: Bin1Mul10
;
Bcd5ToBin2:
	push R0 ; Save register
	clr rBin1H ; Empty result
	clr rBin1L
	ldi rmp,5 ; Set counter to 5
	mov R0,rmp
	clt ; Clear error flag
Bcd5ToBin2a:
	ld rmp,Z+ ; Read BCD digit
	cpi rmp,10 ; is it valid?
	brcc Bcd5ToBin2c ; invalid BCD
	rcall Bin1Mul10 ; Multiply result by 10
	brts Bcd5ToBin2c ; Overflow occurred
	add rBin1L,rmp ; add digit
	brcc Bcd5ToBin2b ; No overflow to MSB
	inc rBin1H ; Overflow to MSB
	breq Bcd5ToBin2c ; Overflow of MSB
Bcd5ToBin2b:
	dec R0 ; another digit?
	brne Bcd5ToBin2a ; Yes
	pop R0 ; Restore register
	sbiw ZL,5 ; Set to first BCD digit
	ret ; Return
Bcd5ToBin2c:
	sbiw ZL,1 ; back one digit
	pop R0 ; Restore register
	set ; Set T-flag, error
	ret ; and return
;
; Bin1Mul10
; =========
; multiplies a 16-bit-binary by 10
; Sub used by: AscToBin2, Asc5ToBin2, Bcd5ToBin2
; In: 16-bit-binary in rBin1H:L
; Out: T-flag shows general result:
;   T=0: Valid result, 16-bit-binary in rBin1H:L ok
;   T=1: Overflow occurred, number too big
;
Bin1Mul10:
	push rBin2H ; Save the register of 16-bit-binary 2
	push rBin2L
	mov rBin2H,rBin1H ; Copy the number
	mov rBin2L,rBin1L
	add rBin1L,rBin1L ; Multiply by 2
	adc rBin1H,rBin1H
	brcs Bin1Mul10b ; overflow, get out of here
Bin1Mul10a:
	add rBin1L,rbin1L ; again multiply by 2 (4*number reached)
	adc rBin1H,rBin1H
	brcs Bin1Mul10b ; overflow, get out of here
	add rBin1L,rBin2L ; add the copied number (5*number reached)
	adc rBin1H,rBin2H
	brcs Bin1Mul10b ;overflow, get out of here
	add rBin1L,rBin1L ; again multiply by 2 (10*number reached)
	adc rBin1H,rBin1H
	brcc Bin1Mul10c ; no overflow occurred, don't set T-flag
Bin1Mul10b:
	set ; an overflow occurred during multplication
Bin1Mul10c:
	pop rBin2L ; Restore the registers of 16-bit-binary 2
	pop rBin2H
	ret
;
; *************************************************

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
正在播放亚洲一区| 精品国产123| 欧美一区二区女人| 国产精品激情偷乱一区二区∴| 亚洲综合免费观看高清完整版| 久久国产免费看| 在线观看中文字幕不卡| 久久精品亚洲精品国产欧美kt∨| 亚洲国产日产av| 成人免费毛片嘿嘿连载视频| 日韩一区二区三区四区五区六区 | 精品国产免费人成电影在线观看四季| 国产精品国产自产拍高清av| 久久精品久久久精品美女| 99re66热这里只有精品3直播 | 亚洲一区精品在线| gogogo免费视频观看亚洲一| 久久综合九色综合欧美就去吻| 亚洲第一成人在线| 色激情天天射综合网| 国产精品午夜电影| 成人天堂资源www在线| 日韩视频国产视频| 日韩黄色免费网站| 欧美羞羞免费网站| 一区二区在线观看av| 本田岬高潮一区二区三区| 国产性天天综合网| 国产不卡免费视频| 久久精品欧美一区二区三区不卡| 久久激情五月激情| 日韩欧美的一区二区| 秋霞影院一区二区| 日韩女优av电影| 狠狠色丁香婷综合久久| 欧美不卡一区二区三区| 久久se精品一区二区| 2024国产精品| 国产99久久久久久免费看农村| 久久久高清一区二区三区| 国产美女一区二区三区| 久久精品人人做人人爽97| 成人综合日日夜夜| 中文字幕一区日韩精品欧美| 99精品在线观看视频| 亚洲欧洲美洲综合色网| 91香蕉国产在线观看软件| 亚洲人一二三区| 欧美曰成人黄网| 丝袜美腿亚洲一区| 欧美精品一区二区在线观看| 国内精品国产三级国产a久久| 国产亚洲婷婷免费| 91色视频在线| 日韩不卡手机在线v区| 欧美mv和日韩mv国产网站| 国产不卡一区视频| 亚洲日本丝袜连裤袜办公室| 欧美日韩在线播放一区| 日韩国产精品久久久久久亚洲| 精品日本一线二线三线不卡| 懂色一区二区三区免费观看| 亚洲日本一区二区| 亚洲人一二三区| 欧美精品aⅴ在线视频| 久久99久久99小草精品免视看| 中文字幕精品一区二区精品绿巨人| 91亚洲午夜精品久久久久久| 亚洲国产一区二区三区 | 91极品美女在线| 日韩av不卡一区二区| 国产人久久人人人人爽| 91激情五月电影| 国产在线不卡一区| 一个色妞综合视频在线观看| 欧美xxxxx裸体时装秀| 91蝌蚪porny| 裸体一区二区三区| 亚洲欧美精品午睡沙发| 欧美成人欧美edvon| 色天天综合色天天久久| 国产麻豆午夜三级精品| 夜夜夜精品看看| 国产欧美精品一区二区色综合| 91福利小视频| 成人开心网精品视频| 日韩激情一区二区| 亚洲最新在线观看| 中文字幕高清不卡| 精品国产免费视频| 欧美浪妇xxxx高跟鞋交| 色综合网色综合| 成人综合在线观看| 国产精品一区在线| 蜜臀av一区二区| 午夜国产精品一区| 亚洲黄色录像片| 国产精品女人毛片| 国产亚洲综合性久久久影院| 69p69国产精品| 欧美日韩综合在线| 一本色道久久综合亚洲aⅴ蜜桃| 国产大片一区二区| 精品亚洲免费视频| 蜜臀国产一区二区三区在线播放| 一二三区精品福利视频| 亚洲精选在线视频| 亚洲人成精品久久久久久| 国产色产综合产在线视频| 日韩三级av在线播放| 日韩午夜激情视频| 精品国产凹凸成av人网站| 欧美一区二区日韩| 7777精品伊人久久久大香线蕉的| 在线精品亚洲一区二区不卡| 在线精品视频小说1| 在线观看三级视频欧美| 在线视频欧美精品| 欧美视频日韩视频在线观看| 色哟哟一区二区在线观看| 91在线观看污| 日本道在线观看一区二区| 一本到三区不卡视频| 日本黄色一区二区| 欧美日韩国产一级| 91精品国产欧美一区二区18| 欧美一区二区日韩一区二区| 日韩三级av在线播放| 精品国产一区a| 国产欧美一二三区| 中文字幕日韩av资源站| 亚洲精品国产无套在线观| 亚洲资源中文字幕| 日韩国产欧美三级| 激情另类小说区图片区视频区| 韩国精品免费视频| 不卡一区二区在线| 欧美综合在线视频| 日韩精品一区二区三区中文不卡| 精品成人a区在线观看| 国产精品视频你懂的| 一个色综合av| 久久精品国产99久久6| 风间由美性色一区二区三区| 91在线高清观看| 日韩一二在线观看| 亚洲国产精品v| 亚洲成人av免费| 国产精品一级片在线观看| av在线播放一区二区三区| 欧美日韩国产色站一区二区三区| 精品奇米国产一区二区三区| 中文字幕在线观看一区二区| 亚洲 欧美综合在线网络| 国产一区二区三区不卡在线观看| av中文一区二区三区| 日韩一区二区三区四区五区六区| 欧美韩日一区二区三区四区| 亚洲一区二区黄色| 国产精品一区二区男女羞羞无遮挡| 91亚洲永久精品| 精品国产青草久久久久福利| 亚洲乱码国产乱码精品精小说 | 狠狠色综合色综合网络| 色悠悠久久综合| 26uuu亚洲综合色| 国产精品综合视频| 欧美日韩亚州综合| 国产精品欧美一区二区三区| 日韩av中文在线观看| www.久久精品| 久久婷婷成人综合色| 午夜成人在线视频| 99精品视频一区二区| 精品国产髙清在线看国产毛片| 一区二区成人在线视频| 国产在线视频不卡二| 欧美久久婷婷综合色| 亚洲激情校园春色| 成人国产电影网| 久久综合色婷婷| 免播放器亚洲一区| 欧美日韩综合一区| 亚洲黄色尤物视频| voyeur盗摄精品| 国产日韩av一区二区| 激情小说欧美图片| 777久久久精品| 性欧美疯狂xxxxbbbb| 欧美色精品在线视频| 一区二区三区在线高清| 不卡视频一二三| 欧美国产一区在线| 国产成人午夜精品影院观看视频 | 人妖欧美一区二区| 欧美日韩卡一卡二| 午夜精品久久久久影视| 欧美日韩国产精选| 午夜精品视频一区| 7777精品伊人久久久大香线蕉超级流畅|