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

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

?? chap4.asm

?? Motorola 6811芯片開發的接口程序。
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
; Chapter 4 6811 assembly language programs; Jonathan W. Valvano; This software accompanies the book,; Real Time Embedded Systems published by Brooks Cole;; Program 4.1. This subroutine is nonreentrant because of the read-modify-write access to a global. Second  rmb  2    Temporary global variable* Input parameters: Reg X,Y contain 2 16 bit numbers* Output parameter: Reg X is returned with the averageAVE     sty  Second  Save the second number in memory         xgdx         Reg D contains first number        addd Second  Reg D=First+Second        lsrd         (First+Second)/2        adcb #0      round up?        adca #0        xgdx        rts; Program 4.2. This subroutine is also nonreentrant because of the read-modify-write access to a global. Money rmb  2      bank balance implemented as a global* add $100 to the accountmore  ldd  Money	where Money is a global variable	addd #100	std  Money	Money=Money+100      rts; Program 4.4. This assembly subroutine is nonreentrant because of the write-read access to a global. temp  rmb  2       temporary result implemented as a global* calculate RegX=RegX+2*RegDmac	stx  temp	Save X so that it can be added	lsld        RegD=2*RegD      addd temp	RegD=RegX+2*RegD			xgdx        RegX=RegX+2*RegD      rts ; Program 4.6. This assembly subroutine is nonreentrant because of the multi-step write access to a global. Info  rmb  4       32-bit data implemented as a global* set the variable using RegX and RegYset	stx  Info	 Info is a 32 bit global variable	sty  Info+2	      rts; Program 4.8. This assembly subroutine is reentrant because it does not write to any globals. * Input parameters: Reg X,Y contain 2 16 bit numbers* Output parameter: Reg X is returned with the averageAVE     pshy         Save the second number on the stack        tsy          Reg Y points the Second number        xgdx         Reg D contains first number        addd 0,Y     Reg D=First+Second        lsrd         (First+Second)/2        adcb #0      round up?        adca #0        xgdx        puly        rts; Program 4.9. This assembly subroutine is nonreentrant because of the read-modify-write access to a global. Status   rmb  1    0 means empty, -1 means it contains somethingMessage  rmb  1    data to be communicated* Input parameter: Reg B contains an 8 bit message* Output parameter: Reg CC (C bit) is 1 for OK, 0 for busy errorSEND    tst  Status  check if mailbox is empty        bmi  Busy    full, can't store, so return with C=0        stab Message store        dec  Status  signify it is now contains a message        sec          stored OK, so return with C=1Busy    rts; Program 4.10. This assembly subroutine is reentrant because it disables interrupts during the critical section. Status   rmb  1    0 means empty, -1 means it contains somethingMessage  rmb  1    data to be communicated* Input parameter: Reg B contains an 8 bit message* Output parameter: Reg CC (C bit) is 1 for OK, 0 for busy errorSEND    clc          Initialize carry=0        tpa          save current interrupt state        psha        sei          disable interrupts during vulnerable window        tst  Status  check if mailbox is empty        bmi  Busy    full, so return with C=0        staa Message store        dec  Status  signify it is now contains a message        pula        oraa #1      OK, so return with C=1        pshaBusy    pula         restore interrupt status        tap        rts; Program 4.12. This assembly subroutine can be used as part of a binary semaphore. * Global parameter: Semi4 is the memory location to test and set* If the location is zero, it will set it (make it -1)*      and return Reg CC (Z bit) is 1 for OK* If the location is nonzero, it will return Reg CC (Z bit) = 0Semi4 fcb  0         Semaphore is initially freeTAS   tst  Semi4     check if already set      bne  Out       busy, operation failed, so return with Z=0      dec  Semi4     signify it is now busy      bita #0        operation successful, so return with Z=1Out   rts; Program 4.13. Code fragments showing the basic idea of a FIFO. GetPt  rmb 2   Pointer to oldest data, next to be removed by GETPutPt  rmb 2   Pointer to free memory, place to PUT next data* Reg A contains byte to store into the FIFOPutFifo  ldx  PutPt   Reg X points to free place     staa ,X      Store data into FIFO     inx          Update pointer     stx  PutPt        rts* Reg A returned with byte from FIFOGetFifo  ldx  GetPt  Reg X points to oldest data     ldaa ,X     Read data from FIFO     inx         Update pointer     stx  GetPt       rts; Program 4.15. Initialization of a two pointer FIFO. * Two pointer implementation of the FIFO FifoSize  equ  10    Number of 8 bit data in the Fifo, less onePutPt     rmb  2     Pointer of where to put next */GetPt     rmb  2     Pointer of where to get next* FIFO is  empty if PutPt=GetPt * FIFO is full  if PutPt+1=GetPt (with wrap)Fifo      rmb  FifoSize    The statically allocated fifo data ***********Initialize FIFO******************* No parametersInitFifo  ldx #Fifo          tpa          sei        make atomic, entering critical section          stx PutPt          stx GetPt  Empty when PutPt=GetPt           tap        end critical section, restore CCR          rts; Program 4.16. Assembly routine to put into a two pointer FIFO. ***********Put a byte into the FIFO******************* Input  RegA contains 8 bit data to put* Output RegA is -1 if successful, 0 if data not storedPutFifo   psha          tpa          tab          pula          pshb            save old CCR          sei             make atomic, entering critical section          ldx  PutPt      RegX is Temporary put pointer          staa 0,x        Try to put data into fifo           inx          cpx  #Fifo+FifoSize          bne  PutNoWrap  skip if no wrapping needed          ldx  #Fifo      Wrap PutNoWrap clra            assume it will fail          cpx  GetPt      Full if now the same          beq  PutDone          coma            RegA=-1 means OK          stx  PutPtPutDone   tab        end critical section          pula          tpa        restore CCR to previous value          tba          rts; Program 4.17. Assembly routine to get from a two pointer FIFO. ***********Get a byte from the FIFO******************* Input  RegX points to place for 8 bit data from Get* Output RegA is -1 if successful, 0 if Fifo was empty when calledGetFifo   tpa          psha            save old CCR          sei             make atomic, entering critical section          clra            assume it will fail          ldy  GetPt            cpx  PutPt      Empty if initially the same          beq  GetDone          coma            RegA=-1 means OK          ldab 0,y        Data from FIFO          stab 0,x        Return by reference           iny          cpy  #Fifo+FifoSize          bne  GetNoWrap  skip if no wrapping needed          ldy  #Fifo      Wrap GetNoWrap sty  GetPtGetDone   tab        end critical section          pula          tpa        restore CCR to previous value          tba          rts; Program 4.19. Initialization of a two pointer with counter FIFO. * Pointer,counter implementation of the FIFO FifoSize   equ  10    Number of 8 bit data in the FifoPutPt      rmb  2     Pointer of where to put next GetPt      rmb  2     Pointer of where to get nextSize       rmb  1* FIFO is empty if Size=0 * FIFO is full  if Size=FifoSize Fifo       rmb  FifoSize    The statically allocated fifo data ***********Initialize FIFO******************* No parametersInitFifo   tpa           sei         make atomic, entering critical section           ldx  #Fifo           stx  PutPt           stx  GetPt  Empty when Size == 0           clr  Size            tap         end critical section           rts; Program 4.20. Assembly routine to put into a two pointer with counter FIFO. ***********Put a byte into the FIFO******************* Input  RegA contains 8 bit data to put* Output RegA is -1 if successful, 0 if data not storedPutFifo    psha           tpa           tab           pula           pshb            save old CCR           sei             make atomic, entering critical section           ldab Size           cmpb #FifoSize  Full if Size==FifoSize           bne  PutNotFull           clra           bra  PutDonePutNotFull incb           stab Size       Size++           ldx  PutPt            staa 0,x        Put data into fifo            inx           cpx  #Fifo+FifoSize           bne  PutNoWrap  skip if no wrapping needed           ldx  #Fifo      Wrap PutNoWrap  ldaa #-1        success means OK           stx  PutPtPutDone    tab        end critical section           pula           tpa        restore CCR to previous value           tba           rts; Program 4.21. Assembly routine to get from a two pointer with counter FIFO. ***********Get a byte from the FIFO******************* Input  RegX points to place for 8 bit data from Get* Output RegA is -1 if successful, 0 if Fifo was empty when calledGetFifo tpa        psha    save old CCR        sei     make atomic, entering critical section        clra       assume it will fail        tst  Size        beq  GetDone        dec  Size        ldy  GetPt          coma          RegA=-1 means OK        ldab 0,y      Data from FIFO        stab 0,x      Return by reference         iny        cpy  #Fifo+FifoSize        bne  GetNoWrap  skip if no wrapping needed        ldy  #Fifo      Wrap GetNoWrap sty GetPtGetDone tab        end critical section        pula        tpa        restore CCR to previous value        tba        rts; Program 4.23. Initialization of a two index with counter FIFO. * Index,counter implementation of the FIFO FifoSize equ  10    Number of 8 bit data in the Fifo PutI     rmb  1     Index of where to put nextGetI     rmb  1     Index of where to get nextSize     rmb  1* FIFO is empty if Size=0 * FIFO is full  if Size=FifoSize Fifo       rmb  FifoSize    The statically allocated fifo data ***********Initialize FIFO******************* No parametersInitFifo   tpa           sei        make atomic, entering critical section           clr  PutI           clr  GetI           clr  Size  Empty when Size == 0            tap        end critical section           rts; Program 4.24. Assembly routine to put into a two index with counter FIFO. ***********Put a byte into the FIFO******************* Input  RegA contains 8 bit data to put* Output RegA is -1 if successful, 0 if data not storedPutFifo    psha

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久久电影| 欧美写真视频网站| 免费精品视频最新在线| 亚洲一区二区三区三| 中文字幕亚洲综合久久菠萝蜜| 国产日韩欧美综合一区| 中文字幕免费不卡| 国产欧美精品一区| 国产精品三级电影| 亚洲精品国产a| 亚洲制服丝袜av| 天堂一区二区在线免费观看| 亚洲v日本v欧美v久久精品| 亚洲成精国产精品女| 日本三级韩国三级欧美三级| 日本不卡视频一二三区| 国产专区欧美精品| 99久久精品国产导航| 欧美在线视频全部完| 3d动漫精品啪啪| 久久久久久久久久久电影| 一区视频在线播放| 亚洲18影院在线观看| 九一久久久久久| 国产99久久久精品| 欧美在线综合视频| 久久一区二区视频| 亚洲男人天堂av| 免费在线看成人av| 成人精品免费网站| 欧美丰满少妇xxxbbb| 国产午夜精品一区二区| 亚洲精品高清在线观看| 捆绑紧缚一区二区三区视频| 国产91富婆露脸刺激对白| 91久久精品国产91性色tv| 日韩一区二区三区精品视频| 国产精品私人影院| 日韩电影在线观看电影| av高清久久久| 精品国产亚洲一区二区三区在线观看| 国产欧美日韩在线看| 亚洲成人中文在线| youjizz久久| 精品日韩欧美一区二区| 亚洲中国最大av网站| 国产精品系列在线播放| 欧美无砖砖区免费| 国产精品色婷婷| 美女视频一区二区三区| 在线免费观看一区| 欧美高清一级片在线观看| 日韩电影免费在线| 欧美亚洲自拍偷拍| 亚洲人成伊人成综合网小说| 韩国女主播一区| 欧美乱熟臀69xxxxxx| 亚洲欧美日本在线| 成人综合婷婷国产精品久久免费| 91精品国产综合久久精品| 一区二区在线观看av| 成人涩涩免费视频| 久久网这里都是精品| 美女尤物国产一区| 欧美精品乱码久久久久久按摩 | 久久久久久久久久久久久女国产乱 | 亚洲色图视频网| 国产久卡久卡久卡久卡视频精品| 欧美精选一区二区| 香蕉成人伊视频在线观看| 色偷偷成人一区二区三区91| 久久亚洲精精品中文字幕早川悠里| 日韩和欧美一区二区| 欧美日韩国产高清一区二区 | 午夜成人在线视频| 欧美三级韩国三级日本三斤| 一区二区三区四区在线播放| 91麻豆.com| 亚洲色图制服诱惑 | 色香蕉成人二区免费| 一区在线播放视频| 色婷婷狠狠综合| 亚洲免费观看高清完整版在线观看熊| 成人免费看视频| 成人欧美一区二区三区黑人麻豆| 成人av在线影院| 亚洲天堂2016| 在线看日本不卡| 亚洲v日本v欧美v久久精品| 欧美日韩精品一区二区三区四区| 亚洲bt欧美bt精品| 91精品国产入口| 国产资源精品在线观看| 国产精品理伦片| 色综合久久久久综合| 亚洲国产视频网站| 911精品国产一区二区在线| 久久se精品一区二区| 国产蜜臀97一区二区三区| www.亚洲人| 亚洲成人中文在线| 精品国产一区二区三区不卡 | 97久久超碰国产精品电影| 尤物视频一区二区| 在线不卡的av| 国产成a人无v码亚洲福利| 亚洲视频一区二区在线| 欧美放荡的少妇| 国产精品资源网| 一区二区三区产品免费精品久久75 | 国产一区三区三区| 亚洲欧美色综合| 亚洲欧洲精品一区二区三区不卡| 91黄色在线观看| 国产一区在线不卡| 亚洲影院在线观看| 久久伊人蜜桃av一区二区| 在线观看亚洲精品| 国产精品一区一区| 午夜免费久久看| 亚洲国产精品v| 欧美嫩在线观看| 波多野结衣欧美| 久久91精品久久久久久秒播| 亚洲精品久久嫩草网站秘色| www一区二区| 欧美日韩一区成人| 成人av一区二区三区| 裸体一区二区三区| 亚洲午夜久久久久| 亚洲国产精品二十页| 日韩欧美的一区二区| 欧美视频中文字幕| 成人h动漫精品一区二区| 久久精工是国产品牌吗| 亚洲成人自拍网| 一区二区在线观看免费| 国产精品国产三级国产普通话蜜臀| 精品国产乱码久久久久久蜜臀| 欧美亚洲一区二区在线| av毛片久久久久**hd| 国产凹凸在线观看一区二区| 乱中年女人伦av一区二区| 首页国产欧美久久| 亚洲一本大道在线| 亚洲蜜臀av乱码久久精品蜜桃| 欧美国产精品久久| 久久久久99精品一区| 久久综合色一综合色88| 欧美大片拔萝卜| 日韩欧美一级二级三级| 3atv在线一区二区三区| 欧美精品乱人伦久久久久久| 欧美视频在线一区二区三区| 欧美最猛黑人xxxxx猛交| 色婷婷综合久色| 色8久久精品久久久久久蜜| 色妹子一区二区| 欧美视频一区二区三区四区| 欧美无乱码久久久免费午夜一区 | 欧美一区二区二区| 欧美精品日韩一区| 欧美va亚洲va香蕉在线| 精品伦理精品一区| 久久理论电影网| 国产日韩一级二级三级| 中文字幕一区二区5566日韩| 亚洲美女区一区| 亚洲第一成人在线| 毛片一区二区三区| 国产精品亚洲专一区二区三区| 国产精品亚洲第一区在线暖暖韩国 | 经典三级在线一区| 国产在线播放一区三区四| 成人性色生活片| 日本韩国欧美三级| 欧美精品在线视频| 久久九九国产精品| ●精品国产综合乱码久久久久| 一区二区三区在线观看视频| 日韩精品乱码免费| 国产福利不卡视频| 色婷婷激情综合| 精品久久久久久久久久久久久久久久久| 久久久综合视频| 一区二区久久久久| 国产在线播放一区| 日本韩国欧美国产| 欧美大尺度电影在线| 亚洲视频一区二区在线| 男人操女人的视频在线观看欧美| 国产精品一区久久久久| 色www精品视频在线观看| 精品国精品国产| 亚洲综合无码一区二区| 国产酒店精品激情| 欧美日韩国产免费| 亚洲欧美在线高清| 精久久久久久久久久久| 欧美日韩一区二区三区高清|