在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 匯編入門學習筆記 (十四)—— 直接定址表

            匯編入門學習筆記 (十四)—— 直接定址表

            作者: 時間:2016-11-09 來源:網(wǎng)絡 收藏
            瘋狂的暑假學習之 匯編入門學習筆記 (十四)—— 直接定址表

            本文引用地址:http://www.biyoush.com/article/201611/317787.htm

            參考: 《匯編語言》 王爽 第16章

            1. 描述單元長度的標號

            普通的標號:a,b

            1. assumecs:code
            2. codesegment
            3. a:db1,2,3,4,5,6,7,8
            4. b:dw0
            5. start:
            6. movsi,offseta
            7. movdi,offsetb
            8. movah,0
            9. movcx,8
            10. s:
            11. moval,cs:[si]
            12. addcs:[di],ax
            13. incsi
            14. loops
            15. movax,4c00h
            16. int21h
            17. movax,4c00h
            18. int21h
            19. codeends
            20. endstart

            仔細看一下,下面代碼的標號的不同。下面的標號a、b后面沒有冒號。它們是可以描述單元長度的標號。又叫數(shù)據(jù)標號

            1. assumecs:code
            2. codesegment
            3. adb1,2,3,4,5,6,7,8
            4. bdw0
            5. start:
            6. movsi,offseta
            7. movah,0
            8. movcx,8
            9. s:
            10. moval,a[si]
            11. addb,ax
            12. incsi
            13. loops
            14. movax,4c00h
            15. int21h
            16. movax,4c00h
            17. int21h
            18. codeends
            19. endstart

            我們可以:

            mov ax,bx 相當于 mov ax,cs:[8]

            mov b,2 相當于 mov word ptr cs:[8],2

            inc b 相當于inc word ptr cs:[8]

            mov al,a[si]相當于 mov al,cs:0[si]

            mov al,a[3] 相當于mov al,cs:0[3]

            但是下面的是錯的

            mov al,b 因為b是dw,字型的

            add b,al

            2. 在其他段中使用數(shù)據(jù)標號

            普通的后面帶有“:”的標號,是只能定義在代碼段的。數(shù)據(jù)標號可以用在其他段中。

            例子:注意如果想把ds:b 直接寫成 b,就必須在assume 后加上 cs:data

            1. assumecs:code,ds:data
            2. datasegment
            3. adb1,2,3,4,5,6,7,8
            4. bdw0
            5. dataends
            6. codesegment
            7. start:
            8. movax,data
            9. movds,ax
            10. movsi,offseta
            11. movah,0
            12. movcx,8
            13. s:
            14. moval,a[si]
            15. addb,ax
            16. incsi
            17. loops
            18. movax,4c00h
            19. int21h
            20. movax,4c00h
            21. int21h
            22. codeends
            23. endstart

            3. 直接定址表

            我們可以建一個表,用查表的方式來大大加快處理速度。

            例子:在屏幕顯示對應16進制數(shù)字的字符。這里字符就用來一個表。

            1. assumecs:code
            2. codesegment
            3. start:
            4. moval,0eh
            5. callshowbyte
            6. movax,4c00h
            7. int21h
            8. showbyte:
            9. jmpshortshow
            10. tabledb0123456789ABCDE;字符表
            11. show:
            12. pushbx
            13. pushes
            14. movah,al
            15. shrah,1;右移4位,ah中保存高4位,al中保存第4位
            16. shrah,1
            17. shrah,1
            18. shrah,1
            19. andal,00001111b
            20. movbl,ah
            21. movbh,0
            22. movah,table[bx]
            23. movbx,0b800h
            24. moves,bx
            25. moves:[160*12+40*2],ah
            26. movbl,al
            27. movbh,0
            28. moval,table[bx]
            29. moves:[160*12+40*2+2],al
            30. popes
            31. popbx
            32. ret
            33. codeends
            34. endstart

            我們還可以在直接定址表中存儲子程序的地址,從而方便的實現(xiàn)不同子程序的調(diào)用。



            評論


            技術專區(qū)

            關閉