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

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

?? asm.asm

?? 與AVR開發相關的一百個實例,源碼用ASM語言編寫
?? ASM
?? 第 1 頁 / 共 5 頁
字號:
定點運算和定點數制轉換   
        ;范例1
LSDAA:  ADC     R16,R16      ;十進制數(在R16中)左移調整子程序
ADDAA:  IN      R6,SREG      ;bcd碼相加調整子程序,先保存相加后的
        LDI     R17,$66      ;狀態the old status
        ADD     R16,R17      ;再將和預加立即數$66
        IN      R17,SREG     ;輸入相加后新狀態(the new status)
        OR      R6,R17       ;新舊狀態相或
        SBRS    R6,0         ;相或后進位置位則跳行
        SUBI    R16,$60      ;否則減去$60(十位bcd不滿足調整條件)
        SBRS    R6,5         ;半進位置位則跳行
        SUBI    R16,6        ;否則減去$06(個位bcd不滿足調整條件)
        ROR     R6           ;向高位字節BCD返還進位位!
        RET
       ;范例2
       
SUDAA:  BRCC    SBD1         ;bcd碼減法調整子程序,差在R16中
        BRHC    SBD3         
        SUBI    R16,$66      ;進位半進位都置位,將差減去立即數$66
        SEC                  ;并恢復借位C
        RET                  ;ret. with seC
SBD1:   BRHC    SBD2         ;進位半進位都清位,返回
        SUBI    R16,6        ;進位清除而半進位置位,將差減去6
SBD2:   RET                  ;ret. with clC
SBD3:   SUBI    R16,$60      ;進位置位而半進位清除,將差減去$60
        SEC                  ;并恢復借位C
        RET                  ;ret. with seC

       ;范例3
RSDAA:  SBRC    R16,7        ;bcd碼(在R16中)右移調整子程序
        SUBI    R16,$30      ;十位BCD最高位為1(代表8),將其變為5(否則跳行)
        SBRC    R16,3         
        SUBI    R16,3        ;個位BCD最高位為1(代表8),將其變為5(否則跳行)
        RET
        
       ;范例4
ADBCD4: MOV     R16,R15      ;4字節壓縮bcd碼相加子程序
        ADD     R16,R11      ;R12,R13,R14,R15內為被加數,R8,R9,R10,R11內為加數
        RCALL   ADDAA        ;相加后調整
        MOV     R15,R16      ;并返還調整后結果
        MOV     R16,R14
        ADC     R16,R10
        RCALL   ADDAA
        MOV     R14,R16
        MOV     R16,R13
        ADC     R16,R9
        RCALL   ADDAA
        MOV     R13,R16
        MOV     R16,R12
        ADC     R16,R8        
        RCALL   ADDAA
        MOV     R12,R16
        RET
        
       ;范例5
ADBCD:  LDI     R16,4        ;多字節壓縮bcd碼相加子程序
        MOV     R7,R16       ;(r7):字節數
        CLC
ADLOP:  LD      R16,-X       ;X-1指向被加數;  
        LD      R6,-Y        ;Y-1指向加數
        ADC     R16,R6
        RCALL   ADDAA        ;相加后調整
        ST      X,R16        ;返還調整后結果
        DEC     R7          
        BRNE    ADLOP
        RET
        
       ;范例6
SUBCD4: MOV     R16,R15       ;4字節壓縮bcd碼減法子程序
        SUB     R16,R11       ;R12,R13,R14,R15內為被減數,R8,R9,R10,R11內為減數
        RCALL   SUDAA         ;相減后調整
        MOV     R15,R16       ;并返還調整后結果
        MOV     R16,R14
        SBC     R16,R10
        RCALL   SUDAA
        MOV     R14,r16
        MOV     R16,R13
        SBC     R16,R9
        RCALL   SUDAA
        MOV     R13,R16
        MOV     R16,R12
        SBC     R16,R8
        RCALL   SUDAA
        MOV     R12,R16
        RET
        
       ;范例7
SUBCD:  LDI     R16,4        ;多字節壓縮bcd碼相減子程序
        MOV     R7,R16       ;(r7):壓縮bcd碼字節數
        CLC
SUBLP:  LD      R16,-X       ;X-1指向被減數
        LD      R6,-Y        ;Y-1指向減數
        SBC     R16,R6
        RCALL   SUDAA        ;相減后調整
        ST      X,R16        ;返還調整后結果
        DEC     R7
        BRNE    SUBLP
        RET
       ;范例8                ;16位被乘數*16位乘數-->32位積
MUL16:  LDI     R16,17       ;(r10r11)*(r14r15)-->r12r13r14r15
        ClR     R12
        ClR     R13          ;積的高位字預清除
        CLC                  ;第1次只右移,不相加
MLOOP:  BRCC    MUL1         ;
        ADD     R13,R11      ;乘數右移移出位為1,將被乘數加入部分積
        ADC     R12,R10
MUL1:   ROR     R12
        ROR     R13
        ROR     R14
        ROR     R15          ;部分積連同乘數整體右移1位
        DEC     R16
        BRNE    MLOOP        ;17次右移后結束 
        RET
        
       ;范例9                ;16位整數被乘數*16位小數乘數-->16位整數積,精確到0.5
MUL165: RCALL   MUL16        ;先得到32位積
        SBRS    R14,7        ;積小數部分最高位為1,將整數部分加1
        RET                  ;否則返回
        LDI     R17,255
        SUB     R13,R17
        SBC     R12,R17      ;以減去-1($FFFF)替代加1
        RET
        
       ;范例10               ;32位被除數/16位除數-->16位商,精確到1
DIV16:  LDI     R16,16       ;(r12r13r14r15)/(r10r11)-->r14r15
DLOOP:  LSL     R15          
        ROL     R14
        ROL     R13
        ROL     R12          ;被除數左移1位
        BRCS    DI1
        SUB     R13,R11
        SBC     R12,R10      ;移出位為0,被除數高位字減去除數試商
        BRCC    DI2          ;夠減,本位商為1
        ADD     R13,R11
        ADC     R12,R10      ;否則恢復被除數
        RJMP    DI3          ;本位商0
DI1:    SUB     R13,R11
        SBC     R12,R10      ;移出位為1,被除數高位字減去除數
DI2:    INC     R15          ;本位商1
DI3:    DEC     R16
        BRNE    DLOOP
        RET
        
       ;范例11               ;32位被除數/16位除數-->16位商,精確到0.5 
                             ;可能產生溢出!例$7FFFC000/$8000=$FFFF.8->$10000!
DIV165: RCALL   DIV16        ;(r12r13r14r15)/(r10r11)-->r14r15
        LSL     R13          
        ROL     R12          ;余數乘2
        BRCS    D165         ;有進位,轉5入
        SUB     R13,R11
        SBC     R12,R10      ;否則,余數乘2減去除數
        BRCS    D164         ;不夠減,轉4舍
D165:   CLR     R13          ;否則將商增1
        SEC                  
        ADC     R15,R13
        ADC     R14,R13
        ADC     R13,R13      ;若有溢出,溢出位在R13中
        RET
D164:   CLR     R13
        RET
       ;范例12               ;32位整數/16位整數->16整數+16位小數->4字節浮點數
                             ;(r12r13r14r15)/(r10r11)-->r12r13r14r15
DIV16F: RCALL   DIV16        ;先做整數除法
        MOV     R9,r15       
        MOV     R8,r14       ;保存整數部分
        CLR     R15
        CLR     R14
        RCALL   DIV16        ;除得小數部分
        MOV     R11,R15
        MOV     R15,R14
        MOV     R13,R8
        MOV     R14,R9       ;整數部分在r13r14,小數部分在r15r11
        LDI     R17,$90      ;預設階碼$90(整數為16位)
        MOV     R12,R17
        LDI     R17,32       ;設32次右移
DIV16L: SBRC    R13,7      
        RJMP    NMLDN        ;最高位為1,已完成規格化
        LSL     R11          ;否則繼續右移R13,R14,R15,R11
        ROL     R15
        ROL     R14
        ROL     R13          
        DEC     R12          ;階碼減1
        DEC     R17
        BRNE    DIV16L       
        CLR     R12          ;右移達32次,浮點數為零,置零階
        RET
NMLDN:  SBRS    R11,7        
        RJMP    DIVRT        ;欲舍去部分(R11)最高位為0,轉4舍 
        RCALL   INC3         ;否則尾數部分增1
        BRNE    DIVRT
        INC     R12          ;尾數增1后變為0,改為0.5,并將階碼增1
DIVRT:  LDI     R17,$7F      ;將尾數最高位清除,表示正數(負數不要清除)
        AND     R13,R17      ;規格化浮點數在R12(階碼)R13R14R15(尾數)中
        RET
        
       ;范例13               ;(R16,R12,R13,R14,R15)/(R10,R11)-->R13,R14,R15
DIV24:  CLR     R16          ;32位整數/16位整數->24位整數,要求(R10)不為0;否則
                                                   ;要求(R12)<(R11)
DIV40:  LDI     17,24        ;40位整數/16位整數->24位整數 要求(R16,R12)
LXP:    LSL     R15          ; <(R10,R11)
        ROL     R14
        ROL     R13
        ROL     R12
        ROL     R16
        BRCC    LXP1
        SUB     R12,R11      ;右移后C=1 夠減
        SBC     R16,R10      ;被除數減去除數
        RJMP    DIV0         ;本位商為1
LXP1:   SUB     R12,R11      ;C=0
        SBC     R16,R10      ;被除數減去除數試商
        BRCC    DIV0         ;C=0 夠減,本位商1
        ADD     R12,R11
        ADC     R16,R10      ;否則恢復被除數,本位商0
        RJMP    DIV1
DIV0:   INC     R15          ;記本位商1
DIV1:   DEC     R17
        BRNE    LXP
        LSL     R12
        ROL     R16
        BRCS    GINC         ;C=1,5入
        SUB     R12,R11
        SBC     R16,R10
        BRCS    RET3         ;不夠減,舍掉
GINC:   RCALL   INC3         ;將商增1
RET3:   RET

       ;范例14               ;定點整數(最大$FFFFFFFF)開平方子程序
INTSQR: LDI     R16,17       ;SQR(R12,R13,R14,R15)-->(r15r8r9)
        CLR     R8           ;R8,R9存儲平方根
        CLR     R9           ;r10,r11,r12,r13,r14,r15
        CLR     R10          ; r8, r9(根)          r16 (counter)
        CLR     R11          ;r10,r11:被開平方數擴展字節
        LDI     R17,$40      
SQR0:   SUB     R12,R17
        SBC     R11,R9
        SBC     R10,R8
        BRCS    SQR1
        SEC                  ;試根夠減,本位根1
        RJMP    SQR2
SQR1:   ADD     R12,R17
        ADC     R11,R9
        ADC     R10,R8
        CLC                  ;否則恢復被開平方數,本位根0
SQR2:   DEC     R16
        BRNE    SQR3         ;when the No.17bit of root be getting
SQR20: ADC     R9,R15       ;R15 HAVE BEEN CLEARED!
        ADC     R8,R15
        ADC     R15,R15      ;將開出之根4舍5入,使根最大可達65536(=$10000)!
        RET                  ;for example:sqr.($ffff0001)≈$10000
SQR3:   ROL     R9
        ROL     R8           ;記本位根
        LSL     R15
        ROL     R14
        ROL     R13
        ROL     R12          
        ROL     R11
        ROL     R10          ;被開平方數連同其擴展字節左移一位
        LSL     R15
        ROL     R14
        ROL     R13
        ROL     R12
        ROL     R11
        ROL     R10          ;被開平方數連同其擴展字節再次左移一位/左移2位開出1位根
        BRCS    SQR20        ;被開平方數左移2位后,若進位置位,則僅表明第17位根
                                                   ;已被提前開出且該位根=1,將平方根增1,開平方結束。
        RJMP    SQR0         ;否則轉試下一位根	
        
       ;范例15               ;定點整數二翻十
CONV1:  LDI     R17,24       ;r12r13r14r15<--(r9r10r11)左移24次
        MOV     R7,R17       ;例:16777215<--$FFFFFF
        CLR     R12
        CLR     R13          ;68719476735<--$FFFFFFFFF
        CLR     R14          ;1099511627775<--$FFFFFFFFFF
        CLR     R15          ;十進制數存儲區予清除
CV1:    LSL     R11
        ROL     R10
        ROL     R9           ;二進制數整體左移一位
        MOV     R16,R15
        RCALL   LSDAA
        MOV     R15,R16
        MOV     R16,R14
        RCALL   LSDAA
        MOV     R14,R16
        MOV     R16,R13
        RCALL   LSDAA
        MOV     R13,R16      
        MOV     R16,R12
        RCALL   LSDAA         ;十進制數左移并調整
        MOV     R12,R16
        DEC     R7
        BRNE    CV1
        RET
        
       ;范例16               ;定點整數十翻二
CONV2:  LDI     R17,24       ;(r9r10r11)-->r13r14r15,右移24次
        CLR     R31          ;例:999999-->$0F423F
        MOV     R7,R17       ; 99999999-->$05F5E0FF
CV2:    LSR     R9
        ROR     R10
        ROR     R11          
        ROR     R13
        ROR     R14
        ROR     R15           ;十進制數連同二進制數右移一位
        LDI     R30,12        ;數據指針
CV2L:   LD      R16,-Z
        RCALL   RSDAA         ;十進制數右移調整
        ST      Z,R16
        CPI     R30,9         ;十進制數各字節調整完畢?
        BRNE    CV2L
        DEC     R7            ;右移次數(24次)完成?
        BRNE    CV2
        RET
        
       ;范例17               ;定點小數二翻十
CONV3:  LDI     R17,24       ;(r13r14r15)--->r9r10r11r12右移24次
CONV31: MOV     R7,R17
        CLR     R9           
        CLR     R10          ;例:$0.FFFFFF-->0.99999994
        CLR     R11          ;$0.FFFFFFFF-->0.999999999767
        CLR     R12          ;$0.FFFFFFFFF->0.999999999985448
        CLR     R31
CV3:    LSR     R13
        ROR     R14
        ROR     R15
        ROR     R9
        ROR     R10
        ROR     R11
        ROR     R12          ;二進制數連同十進制數右移一位
        LDI     R30,9
CV3L:   LD      R16,Z
        RCALL   RSDAA        ;十進制數右移調整
        ST      Z+,r16
        CPI     R30,13
        BRNE    CV3L         ;十進制數各字節調整完畢?
        DEC     R7
        BRNE    CV3          ;右移次數(24次)完成?
        RET
        

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
风间由美一区二区三区在线观看 | 在线播放欧美女士性生活| 欧美一区二区日韩一区二区| 久久婷婷色综合| 亚洲成人精品一区二区| 波多野结衣在线一区| 日韩三级.com| 丝袜a∨在线一区二区三区不卡| 成人一区二区视频| 日韩一区二区三| 亚洲福利视频导航| 日本高清无吗v一区| 国产精品欧美精品| 国产乱码精品1区2区3区| 3d动漫精品啪啪一区二区竹菊| 中文字幕一区二区三区精华液| 国产麻豆一精品一av一免费| 欧美精品久久久久久久多人混战| 一区二区三区在线免费视频| 粉嫩蜜臀av国产精品网站| 精品国产乱码久久久久久免费| 日韩精品久久久久久| 欧美视频在线观看一区二区| 亚洲精品一卡二卡| 成人av网站在线观看免费| 国产日韩欧美亚洲| 国产激情偷乱视频一区二区三区| 日韩一卡二卡三卡国产欧美| 免费观看91视频大全| 91精品国产色综合久久| 男男成人高潮片免费网站| 91麻豆精品国产91久久久更新时间 | 国产欧美一区视频| 国产一区免费电影| 国产三区在线成人av| 国产69精品久久99不卡| 欧美国产综合色视频| 成人黄页毛片网站| 亚洲精品国产无天堂网2021| 91成人在线精品| 图片区小说区国产精品视频| 欧美久久高跟鞋激| 蜜臀av性久久久久蜜臀av麻豆| 日韩一区二区三区免费观看| 国产一区二区毛片| 国产精品久久久久aaaa樱花| 97成人超碰视| 亚洲小说欧美激情另类| 欧美一区二区久久久| 久久se精品一区精品二区| 国产日产欧美一区二区三区| 成人激情免费视频| 亚洲一区视频在线观看视频| 日韩一区二区不卡| 成人国产视频在线观看| 亚洲一区成人在线| 欧美成人猛片aaaaaaa| 国产91精品欧美| 亚洲综合在线第一页| 欧美电影免费观看完整版| www.综合网.com| 五月天欧美精品| 久久色视频免费观看| 色天使久久综合网天天| 免费观看久久久4p| 亚洲图片激情小说| 日韩一区二区三区免费观看| www.亚洲在线| 日韩av电影天堂| 国产精品天干天干在线综合| 欧美日韩在线播放三区| 国产iv一区二区三区| 午夜精品在线视频一区| 日本一区二区三区电影| 欧美电影在哪看比较好| www.激情成人| 麻豆精品一区二区三区| 一区二区日韩av| 欧美国产欧美综合| 日韩视频一区二区| 在线观看精品一区| 国产很黄免费观看久久| 日本中文一区二区三区| 《视频一区视频二区| 久久众筹精品私拍模特| 欧美日韩国产一级片| 成人国产精品免费网站| 麻豆免费精品视频| 五月天婷婷综合| 一区二区三区日韩欧美精品| 国产精品剧情在线亚洲| 久久亚洲免费视频| 日韩一级成人av| 欧美三级欧美一级| 99精品欧美一区二区蜜桃免费| 激情综合色综合久久| 美女视频网站久久| 五月综合激情婷婷六月色窝| 一区二区三区在线播放| 亚洲色图一区二区三区| 国产精品免费久久| 国产欧美一区二区精品性色超碰| 777xxx欧美| 欧美日韩国产精品成人| 在线一区二区三区做爰视频网站| 97久久超碰国产精品电影| 国产精华液一区二区三区| 国产一区二区成人久久免费影院| 日韩成人伦理电影在线观看| 午夜天堂影视香蕉久久| 五月天亚洲精品| 日本系列欧美系列| 日本视频在线一区| 麻豆精品在线视频| 狠狠色综合播放一区二区| 久久激情五月婷婷| 国产一区二区福利视频| 国产大片一区二区| www.亚洲色图.com| 色播五月激情综合网| 欧美亚洲综合色| 欧美日韩精品一区视频| 欧美一区二区在线视频| 在线播放一区二区三区| 欧美成人a在线| 欧美激情一区二区三区全黄| 国产精品视频一区二区三区不卡| 国产精品美女久久久久久久久久久| 国产精品久久午夜| 亚洲精品国产第一综合99久久| 亚洲成人午夜影院| 狠狠色丁香久久婷婷综合_中| 国产综合成人久久大片91| 成人午夜电影久久影院| 97久久超碰国产精品| 欧美三片在线视频观看| 日韩精品一区二区三区在线观看 | 久久99国产乱子伦精品免费| 国产麻豆视频一区二区| 99久久免费国产| 欧美挠脚心视频网站| 久久免费视频一区| 亚洲日本欧美天堂| 免费欧美在线视频| eeuss国产一区二区三区| 欧美日精品一区视频| 久久美女艺术照精彩视频福利播放| 中文一区在线播放| 天天综合网 天天综合色| 国产一区二区三区免费看| 色婷婷国产精品| 日韩欧美一级二级三级久久久| 国产午夜亚洲精品午夜鲁丝片| 一区二区三区在线视频观看58| 免费成人在线视频观看| 99久久精品国产麻豆演员表| 91麻豆精品国产91久久久使用方法| 国产视频不卡一区| 午夜精品福利一区二区蜜股av| 国产成人亚洲综合a∨婷婷 | 亚洲第一搞黄网站| 成人夜色视频网站在线观看| 欧美精品色综合| 国产精品美女久久久久高潮| 日本欧美久久久久免费播放网| 99久久婷婷国产综合精品| 欧美成人精品二区三区99精品| 亚洲欧洲综合另类在线| 国产伦精品一区二区三区视频青涩 | 亚洲精品久久久蜜桃| 精品系列免费在线观看| 欧美三级中文字幕| 中文字幕综合网| 国产一区二区福利视频| 欧美精品一级二级三级| 亚洲色图在线播放| 成人免费视频一区| 久久久久国产精品人| 美腿丝袜在线亚洲一区| 欧美在线综合视频| 亚洲婷婷在线视频| 成人精品免费视频| 久久人人97超碰com| 九九久久精品视频| 91麻豆精品国产无毒不卡在线观看| 一区二区三区四区在线| av中文字幕亚洲| 日本一区二区成人在线| 国产精品一区久久久久| 精品国产人成亚洲区| 免费av成人在线| 日韩一级完整毛片| 免费视频最近日韩| 日韩午夜精品电影| 日本欧美一区二区在线观看| 欧美老女人第四色| 日韩综合一区二区| 91精品国产综合久久福利| 免费久久99精品国产| 日韩欧美国产wwwww|