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

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

?? csr_1hl.asm

?? 此文件是一個源程序代碼
?? ASM
?? 第 1 頁 / 共 4 頁
字號:
   mov X, A
   index CSR_1_Diplex_Table ; get the diplex table MSB and LSB
   mov [CSR_1_bDiplexMSB], A
   mov A, X
   inc A
   index CSR_1_Diplex_Table
   mov [CSR_1_bDiplexLSB], A
   mov A, X
   asl A
   mov X, A
   index CSR_1_Group_Table ; get first switch index
   mov [CSR_1_bEndOfArray], A
   mov [CSR_1_bCurPos], A
   mov [CSR_1_bStartIndex], A
   mov A, X
   inc A
   index CSR_1_Group_Table ; get size of group
   add [CSR_1_bEndOfArray], A ; Store for later
   mov A, X
   add A, 2
   index CSR_1_Group_Table ; get if diplexed or not and max size of centroid (data = 0 if not diplexed)
   mov [CSR_1_bDiplexInfo], A ; Store for later
   mov A, X
   add A, 3
   index CSR_1_Group_Table ; get divisions per switch fixed point multiplier
   mov [CSR_1_bDivBtwSw], A ; Store for later

; First find the starting location and size of the largest centroid
   mov [CSR_1_bBiggestCtrdStartPos], 0
   mov [CSR_1_bBiggestCtrdSize], 0
   mov [CSR_1_bCurCtrdStartPos], 0
   mov [CSR_1_bCurCtrdSize], 0

   mov A, [CSR_1_bStartIndex] 
   asl A ; multiply by two because we are using ints
   mov X, A

.LocateCtrd:
   mov A, [X+CSR_1_iaSwDiff]
   jnz .DiffIsNotZero
   mov A, [X+CSR_1_iaSwDiff+1]
   jnz .DiffIsNotZero
; The difference is zero, we either just ended a centroid or are between centroids
; First check the Current Size, if zero, we are in the middle of zeros, else, we just ended
.DifferenceIsZero:
   mov A, [CSR_1_bCurCtrdSize]
   jz .LocateCtrdNextSwitch
; A centroid just ended.  Is it the largest centroid?  
   cmp A, [CSR_1_bBiggestCtrdSize]
   jc .ClearCurCtrdSize
; It is the biggest so far, store as biggest
   mov [CSR_1_bBiggestCtrdSize], [CSR_1_bCurCtrdSize]
   mov [CSR_1_bBiggestCtrdStartPos], [CSR_1_bCurCtrdStartPos]
.ClearCurCtrdSize:
   mov [CSR_1_bCurCtrdSize], 0
   jmp .LocateCtrdNextSwitch
   
;The difference is not zero, we either just started, or are in the middle of a centroid
.DiffIsNotZero:
   mov A, [CSR_1_bCurCtrdSize]
   jnz .IncCtrdSize
; Centroid just began, store the start pos   
   mov A, [CSR_1_bCurPos]
   mov [CSR_1_bCurCtrdStartPos], A
.IncCtrdSize:   
   inc [CSR_1_bCurCtrdSize] 
; Find out the next position
.LocateCtrdNextSwitch:   
   inc X
   inc X
   inc [CSR_1_bCurPos] 
   mov A, [CSR_1_bCurPos]
   cmp A, [CSR_1_bEndOfArray] ; Check for the end of the array
   jc .LocateCtrd
; Either at end of array, or diplexed
   tst [CSR_1_bDiplexInfo], 0xff ; check if diplexed
   jz .EndOfLocateCtrd
; Diplexed, so now find out if at end
   sub A, [CSR_1_bEndOfArray] ; subtract the size of the array
   add A, [CSR_1_bStartIndex] ; for comparison
   cmp A, [CSR_1_bEndOfArray] ; Check for the end of the array
   jnc .EndOfLocateCtrd
; Not the end of the diplexed array, find out offset of next position
   mov A, [CSR_1_bCurPos]
   sub A, [CSR_1_bStartIndex]
   add A, [CSR_1_bDiplexLSB]
   mov X, A
   mov A, [CSR_1_bDiplexMSB]
   adc A, 0 ; check if carry
   romx ; get the offset from the start
   add A, [CSR_1_bStartIndex]
   asl A ; because using ints
   mov X, A
   jmp .LocateCtrd
.EndOfLocateCtrd:
; Need to check if the current centroid is biggest
   mov A, [CSR_1_bCurCtrdSize]
   jz .CalculateCtrd
; There was a centroid at the end, is it biggest?
   cmp A, [CSR_1_bBiggestCtrdSize]
   jc .CalculateCtrd ; if two are the same size, last one wins
; It is the biggest so far, store as biggest
   mov [CSR_1_bBiggestCtrdSize], [CSR_1_bCurCtrdSize]
   mov [CSR_1_bBiggestCtrdStartPos], [CSR_1_bCurCtrdStartPos]

.CalculateCtrd:
   mov A, [CSR_1_bDiplexInfo] ; check if diplexed
   jz .COM_Init
   cmp [CSR_1_bBiggestCtrdSize], 2
   jc .COM_Error ; for diplexing, one or less is too small
   cmp A, [CSR_1_bBiggestCtrdSize]
   jc .COM_Error ; for diplexing, check if centroid is too large

.COM_Init:
   mov A, [CSR_1_bBiggestCtrdStartPos] ; Use for current position, may be diplexed
   mov [CSR_1_bCurPos], A
   mov [CSR_1_iDenom+1], 0 ; Clear the numerator and denominator
   mov [CSR_1_iDenom], 0
   mov [CSR_1_iNumer+2], 0
   mov [CSR_1_iNumer+1], 0
   mov [CSR_1_iNumer], 0

.COM_NextPosition:
   mov A, [CSR_1_bCurPos]
   cmp A, [CSR_1_bEndOfArray]
   jnc .COM_CheckDiplex
   asl A
   mov X, A
   jmp .COM_AddElement
; Must be diplexed, check for safe measure
.COM_CheckDiplex:
   tst [CSR_1_bDiplexInfo], 0xff ; check if diplexed
   jz .COM_Compute
; Find out offset of next position
   mov A, [CSR_1_bCurPos]
   sub A, [CSR_1_bStartIndex]
   add A, [CSR_1_bDiplexLSB]
   mov X, A
   mov A, [CSR_1_bDiplexMSB]
   adc A, 0 ; check if carry
   romx ; get the offset from the start
   add A, [CSR_1_bStartIndex]
   asl A ; because using ints
   mov X, A
.COM_AddElement:
; Store a copy of the switch difference in CSR_1_iMultTempX
   mov A, [X+CSR_1_iaSwDiff+1]
   mov [CSR_1_iMultTempX+2], A
; Add LSB to denominator
   add [CSR_1_iDenom+1], A
   mov A, [X+CSR_1_iaSwDiff]
   mov [CSR_1_iMultTempX+1], A
   mov [CSR_1_iMultTempX], 0
; Add MSB to denominator
   adc [CSR_1_iDenom], A
   mov A, [CSR_1_bCurPos]
   sub A, [CSR_1_bStartIndex] ; we need offset from beginning of group
   mov [CSR_1_bSwMaskPtr], A ; This is our multiplier (an unused temp)
   
   call .MultiplyNumeratorWhole

   inc [CSR_1_bCurPos]
   dec [CSR_1_bBiggestCtrdSize]
   jz .COM_Compute
   jmp .COM_NextPosition

.COM_Compute:
   mov A, [CSR_1_iNumer+2] ; Move numerator to temp
   mov [CSR_1_iMultTempX+2], A
   mov [CSR_1_iMultTempY+2], A
   mov A, [CSR_1_iNumer+1]
   mov [CSR_1_iMultTempX+1], A
   mov [CSR_1_iMultTempY+1], A
   mov A, [CSR_1_iNumer]
   mov [CSR_1_iMultTempX], A
   mov [CSR_1_iMultTempY], A
   mov [CSR_1_iNumer+2], 0 ; Clear numerator
   mov [CSR_1_iNumer+1], 0 ; Clear numerator
   mov [CSR_1_iNumer], 0
   
   mov A, [CSR_1_bDivBtwSw]
   and F, ~0x04
   rrc A
   asr A
   asr A
   asr A
   mov [CSR_1_bSwMaskPtr], A ; Multiplier for numerator
   call .MultiplyNumeratorWhole ; Multiplies by whole part
   mov [CSR_1_bSwMaskPtr], [CSR_1_bDivBtwSw]
   call .MultiplyNumeratorFraction ; Multiplies by fractional part

; Now do the division of the numerator and denominator
; Round up the temp by half of the denominator (0.5 gets 1)
   mov A, [CSR_1_iDenom]
   mov [CSR_1_iMultTempX+1], A
   mov A, [CSR_1_iDenom+1]
   mov [CSR_1_iMultTempX+2], A
   and F, ~0x04 ; Clear carry bit if set
   rrc [CSR_1_iMultTempX+1] ; divide denominator by 2
   rrc [CSR_1_iMultTempX+2]
   mov A, [CSR_1_iMultTempX+2]
   add [CSR_1_iNumer+2], A ; add 1/2 denominator 
   mov A, [CSR_1_iMultTempX+1]
   adc [CSR_1_iNumer+1], A
   adc [CSR_1_iNumer], 0

; Compute the division of numerator/denominator
   mov [CSR_1_bCtrdPos], 0 ; Now will contain current position
.COM_Divide:
   mov A, [CSR_1_iDenom+1]
   sub [CSR_1_iNumer+2], A
   mov A, [CSR_1_iDenom]
   sbb [CSR_1_iNumer+1], A
   sbb [CSR_1_iNumer], 0
   jc .Finished_Ctrd_Position
   inc [CSR_1_bCtrdPos]
   jmp .COM_Divide

; We are finished, position is in [CSR_1_bCtrdPos]
.COM_Error:
   mov A, 0xff
   jmp .End_Ctrd_Function
.Finished_Ctrd_Position:
   mov A, [CSR_1_bCtrdPos]
.End_Ctrd_Function:
   RAM_RESTORE_NATIVE_PAGING
   RAM_EPILOGUE RAM_USE_CLASS_4
   ret

; Multiplication algorithm (for whole numbers)
.MultiplyNumeratorWhole:
   tst [CSR_1_bSwMaskPtr], 0x01 ; See if one needs added
   jz .OneFinished
   mov A, [CSR_1_iMultTempX+2]
   add [CSR_1_iNumer+2], A
   mov A, [CSR_1_iMultTempX+1]
   adc [CSR_1_iNumer+1], A
   mov A, [CSR_1_iMultTempX]
   adc [CSR_1_iNumer], A
.OneFinished:
   asl [CSR_1_iMultTempX+2] 
   rlc [CSR_1_iMultTempX+1] 
   rlc [CSR_1_iMultTempX] 
   tst [CSR_1_bSwMaskPtr], 0x02 ; See if two needs added
   jz .TwoFinished
   mov A, [CSR_1_iMultTempX+2]
   add [CSR_1_iNumer+2], A
   mov A, [CSR_1_iMultTempX+1]
   adc [CSR_1_iNumer+1], A
   mov A, [CSR_1_iMultTempX]
   adc [CSR_1_iNumer], A
.TwoFinished:
   asl [CSR_1_iMultTempX+2] 
   rlc [CSR_1_iMultTempX+1] 
   rlc [CSR_1_iMultTempX] 
   tst [CSR_1_bSwMaskPtr], 0x04 ; See if four needs added
   jz .FourFinished
   mov A, [CSR_1_iMultTempX+2]
   add [CSR_1_iNumer+2], A
   mov A, [CSR_1_iMultTempX+1]
   adc [CSR_1_iNumer+1], A
   mov A, [CSR_1_iMultTempX]
   adc [CSR_1_iNumer], A
.FourFinished:
   asl [CSR_1_iMultTempX+2] 
   rlc [CSR_1_iMultTempX+1] 
   rlc [CSR_1_iMultTempX] 
   tst [CSR_1_bSwMaskPtr], 0x08 ; See if eight needs added
   jz .EightFinished
   mov A, [CSR_1_iMultTempX+2]
   add [CSR_1_iNumer+2], A
   mov A, [CSR_1_iMultTempX+1]
   adc [CSR_1_iNumer+1], A
   mov A, [CSR_1_iMultTempX]
   adc [CSR_1_iNumer], A
.EightFinished:
   asl [CSR_1_iMultTempX+2] 
   rlc [CSR_1_iMultTempX+1] 
   rlc [CSR_1_iMultTempX] 
   tst [CSR_1_bSwMaskPtr], 0x10 ; See if sixteen needs added
   jz .SixteenFinished
   mov A, [CSR_1_iMultTempX+2]
   add [CSR_1_iNumer+2], A
   mov A, [CSR_1_iMultTempX+1]
   adc [CSR_1_iNumer+1], A
   mov A, [CSR_1_iMultTempX]
   adc [CSR_1_iNumer], A
.SixteenFinished:
   asl [CSR_1_iMultTempX+2] 
   rlc [CSR_1_iMultTempX+1] 
   rlc [CSR_1_iMultTempX] 
   tst [CSR_1_bSwMaskPtr], 0x20 ; See if thirtytwo needs added
   jz .ThirtytwoFinished
   mov A, [CSR_1_iMultTempX+2]
   add [CSR_1_iNumer+2], A
   mov A, [CSR_1_iMultTempX+1]
   adc [CSR_1_iNumer+1], A
   mov A, [CSR_1_iMultTempX]
   adc [CSR_1_iNumer], A
.ThirtytwoFinished:
   asl [CSR_1_iMultTempX+2] 
   rlc [CSR_1_iMultTempX+1] 
   rlc [CSR_1_iMultTempX] 
   tst [CSR_1_bSwMaskPtr], 0x40 ; See if sixtyfour needs added
   jz .SixtyfourFinished
   mov A, [CSR_1_iMultTempX+2]
   add [CSR_1_iNumer+2], A
   mov A, [CSR_1_iMultTempX+1]
   adc [CSR_1_iNumer+1], A
   mov A, [CSR_1_iMultTempX]
   adc [CSR_1_iNumer], A
.SixtyfourFinished:
   ret

; Multiplication algorithm (for fractional numbers)
.MultiplyNumeratorFraction:
   and F, ~0x04 ; clear carry bit if set
   rrc [CSR_1_iMultTempY] 
   rrc [CSR_1_iMultTempY+1] 
   rrc [CSR_1_iMultTempY+2] 
   tst [CSR_1_bSwMaskPtr], 0x08 ; See if half needs added
   jz .HalfFinished
   mov A, [CSR_1_iMultTempY+2]
   add [CSR_1_iNumer+2], A
   mov A, [CSR_1_iMultTempY+1]
   adc [CSR_1_iNumer+1], A
   mov A, [CSR_1_iMultTempY]
   adc [CSR_1_iNumer], A
.HalfFinished:
   asr [CSR_1_iMultTempY] 
   rrc [CSR_1_iMultTempY+1] 
   rrc [CSR_1_iMultTempY+2] 
   tst [CSR_1_bSwMaskPtr], 0x04 ; See if quarter needs added
   jz .QuarterFinished
   mov A, [CSR_1_iMultTempY+2]
   add [CSR_1_iNumer+2], A
   mov A, [CSR_1_iMultTempY+1]
   adc [CSR_1_iNumer+1], A
   mov A, [CSR_1_iMultTempY]
   adc [CSR_1_iNumer], A
.QuarterFinished:
   asr [CSR_1_iMultTempY] 
   rrc [CSR_1_iMultTempY+1] 
   rrc [CSR_1_iMultTempY+2] 
   tst [CSR_1_bSwMaskPtr], 0x02 ; See if eighth needs added
   jz .EigthFinished
   mov A, [CSR_1_iMultTempY+2]
   add [CSR_1_iNumer+2], A
   mov A, [CSR_1_iMultTempY+1]
   adc [CSR_1_iNumer+1], A
   mov A, [CSR_1_iMultTempY]
   adc [CSR_1_iNumer], A
.EigthFinished:
   asr [CSR_1_iMultTempY] 
   rrc [CSR_1_iMultTempY+1] 
   rrc [CSR_1_iMultTempY+2] 
   tst [CSR_1_bSwMaskPtr], 0x01 ; See if sixteenth needs added
   jz .SixteenthFinished
   mov A, [CSR_1_iMultTempY+2]
   add [CSR_1_iNumer+2], A
   mov A, [CSR_1_iMultTempY+1]
   adc [CSR_1_iNumer+1], A
   mov A, [CSR_1_iMultTempY]
   adc [CSR_1_iNumer], A
.SixteenthFinished:
   ret

.ENDSECTION
ENDIF

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久一区二区三区共| 国产精品久久久久四虎| 国产经典欧美精品| 亚洲国产视频在线| 国产欧美日韩视频一区二区| 欧美午夜免费电影| 成人黄色在线看| 麻豆成人免费电影| 亚洲一区二区在线观看视频| 日本一区二区免费在线观看视频| 这里只有精品99re| 91丝袜呻吟高潮美腿白嫩在线观看| 久久精品国产免费| 午夜av区久久| 樱桃视频在线观看一区| 欧美激情在线观看视频免费| 日韩精品一区二区三区中文精品| 91久久精品一区二区三| 成人av网站在线观看免费| 国产在线看一区| 天天影视网天天综合色在线播放| 亚洲女人小视频在线观看| 国产精品亲子乱子伦xxxx裸| 精品国产不卡一区二区三区| 在线不卡免费欧美| 色老汉av一区二区三区| 91网站在线播放| 99亚偷拍自图区亚洲| 成人午夜电影小说| 国产精品99久久久| 国产一区二区三区国产| 久久电影国产免费久久电影| 美女爽到高潮91| 日韩成人av影视| 亚洲一区二区三区四区五区黄| 亚洲色图在线视频| 亚洲乱码国产乱码精品精98午夜| 国产精品国产三级国产aⅴ原创 | 欧美亚洲国产一区二区三区va| 成人黄页毛片网站| 成人黄色国产精品网站大全在线免费观看| 国内精品久久久久影院一蜜桃| 免费观看在线综合| 久久精品国产**网站演员| 美女www一区二区| 国产一区欧美日韩| 国产成人免费xxxxxxxx| 成人午夜激情在线| 91香蕉视频mp4| 日本精品视频一区二区三区| 欧洲一区二区三区免费视频| 欧美日韩免费观看一区三区| 欧美久久久久久久久久| 欧美电影免费观看高清完整版在线| 国产精品美女久久久久久| 欧美日韩国产综合一区二区 | 国产成人综合在线观看| 国产成人免费网站| 成人动漫在线一区| 97se亚洲国产综合自在线不卡| 97国产一区二区| 欧美亚洲综合一区| 欧美一区二区日韩一区二区| 欧美大片国产精品| 亚洲国产精品国自产拍av| 亚洲视频狠狠干| 日韩av电影免费观看高清完整版 | 亚洲自拍与偷拍| 蜜桃91丨九色丨蝌蚪91桃色| 国产夫妻精品视频| 色哟哟国产精品免费观看| 欧美日韩国产中文| 综合在线观看色| 一区二区三国产精华液| 天天影视色香欲综合网老头| 国产在线精品免费av| 成人免费毛片a| 欧美日韩美少妇| 久久久久97国产精华液好用吗| 日韩美女久久久| 日本最新不卡在线| 成人午夜视频福利| 777午夜精品免费视频| 久久久亚洲国产美女国产盗摄 | 欧美欧美欧美欧美首页| 欧美大胆一级视频| 国产精品家庭影院| 免费观看成人av| 色综合久久中文字幕综合网| 日韩精品一区二区三区三区免费| 综合电影一区二区三区 | 色嗨嗨av一区二区三区| www.在线成人| 色婷婷国产精品| 欧美一级高清大全免费观看| 国产精品美女久久久久久久久 | 在线播放欧美女士性生活| 国产欧美一区二区精品秋霞影院| 亚洲高清视频的网址| 激情综合色综合久久| 色综合视频一区二区三区高清| 日韩欧美不卡在线观看视频| 亚洲另类中文字| 成人在线一区二区三区| 欧美不卡视频一区| 亚洲女同ⅹxx女同tv| 国产成人在线观看| 日韩欧美一级精品久久| 亚洲二区在线观看| 成人午夜电影小说| 日韩一区二区麻豆国产| 国产精品短视频| 亚洲国产你懂的| 9i看片成人免费高清| 日韩欧美不卡在线观看视频| 日韩美女久久久| 国产精品资源在线| 日韩欧美你懂的| 亚洲成人一区二区在线观看| 91麻豆精品在线观看| 中国色在线观看另类| 国产69精品久久久久毛片| 精品成a人在线观看| 久久国产剧场电影| 91麻豆精品国产| 日韩影院精彩在线| 欧美美女激情18p| 亚洲一区视频在线| 欧美视频一区二| 亚洲成人精品在线观看| 欧美在线综合视频| 亚洲色图清纯唯美| 91麻豆自制传媒国产之光| 日韩一区中文字幕| 99这里只有久久精品视频| 国产精品久久久久婷婷二区次| 成人免费高清视频在线观看| 欧美极品少妇xxxxⅹ高跟鞋| 国产成人精品1024| 国产欧美精品国产国产专区| 国产91精品免费| 最新日韩av在线| 91老师国产黑色丝袜在线| 亚洲精品视频在线观看免费| 欧亚一区二区三区| 午夜久久久影院| 日韩西西人体444www| 精品亚洲国内自在自线福利| 久久久久久9999| a4yy欧美一区二区三区| 一区二区三区高清在线| 欧美日韩亚洲另类| 日本aⅴ精品一区二区三区| 日韩一级二级三级| 国产在线视频不卡二| 国产精品福利影院| 91豆麻精品91久久久久久| 日韩和欧美一区二区| 精品国产a毛片| 成人av资源在线| 亚洲超碰精品一区二区| 精品国一区二区三区| 成人性生交大片| 亚洲电影一级片| 欧美精品一区二| 99精品偷自拍| 日韩成人dvd| 日本一区二区三区久久久久久久久不| av不卡在线观看| 图片区小说区区亚洲影院| 久久综合色鬼综合色| 色综合天天在线| 老色鬼精品视频在线观看播放| 国产日韩精品一区二区三区| 在线观看日韩毛片| 久久99热这里只有精品| 亚洲色图一区二区| 日韩精品一区国产麻豆| 99国产一区二区三精品乱码| 亚洲成av人片观看| 中文字幕免费一区| 成人一区二区三区视频 | 亚洲v日本v欧美v久久精品| 成人黄页毛片网站| 一区二区三区高清| 日韩精品一区二区三区视频播放| youjizz久久| 精品一区二区三区在线观看国产 | 欧美日韩国产一二三| 亚洲精品视频自拍| 欧美亚洲国产怡红院影院| 久久电影网站中文字幕 | 亚洲精品免费看| 久久综合久久综合久久综合| 精品视频一区 二区 三区| 成人免费视频国产在线观看| 免费精品视频在线| 亚洲国产视频网站| 久久久久久免费网| 国产成人精品影院|