新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 匯編入門學習筆記 (四)—— [BX] 和 loop指令

        匯編入門學習筆記 (四)—— [BX] 和 loop指令

        作者: 時間:2016-11-09 來源:網絡 收藏
        瘋狂的暑假學習之 匯編入門學習筆記 (四)—— [BX]loop指令

        本文引用地址:http://www.104case.com/article/201611/317778.htm

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

        1.[BX]

        mov al,[1]

        在debug中,會把bs:1 中數據賦給al,但在在masm中不會把bs:1 中數據賦給al,而是把 [1] 認為是 1 賦給al。

        如果要實現在debug中的mov al,[1],在masm中就需要[bx]

        如:

        mov bx,1

        mov al,[bx]

        還可以用 bs:[1] 的方式

        如:

        mov al,bs:[1]

        2.loop

        循環 要使用 loop指令

        例子:計算2^20

        1. assumecs:codesg
        2. codesgsegment
        3. start:movax,0
        4. movcx,20
        5. s:addax,2
        6. loops
        7. movax,4c00H
        8. int21H
        9. codesgends
        10. endstart


        cx 存放 循環的次數,每次循環減1

        s是標號 可以任意取名,表示循環的開始處,loop 跳轉到s處,可以用debug單步調試看到 上面代碼,loop s其實就是 loop 0006H

        3.debug 中loop調試

        可以用 -g 000B (安裝上面代碼的調試)運行到指定代碼停止,來跳出循環。

        或者在循環中直接用 -p 來跳出循環

        4.一段安全空間

        一般情況下 DOS中 0:200H~0:2ffH 空間 沒有系統或者其他程序的數據或者代碼,可以使用。

        5.段前綴的使用

        前面的mov al,bs:[1]

        這里bs: 叫做段前綴

        不僅bs可以

        mov ax,ds:[bx]

        mov ax,cs:[bx]

        mov ax,ss:[bx]

        mov ax,es:[bx]

        都可以

        例子:把內存 ffff:0~ffff:b 單元中的數據復制到 020:0~020:f 中。

        1. assumecs:codesg
        2. codesgsegment
        3. start:movax,0ffffh
        4. movds,ax
        5. movax,0020H
        6. moves,ax
        7. movcx,12
        8. movbx,0
        9. s:moval,ds:[bx]
        10. moves:[bx],al
        11. incbx
        12. loops
        13. movax,4c00H
        14. int21H
        15. codesgends
        16. endstart



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 长丰县| 兴山县| 阳朔县| 菏泽市| 衡山县| 蕲春县| 桃江县| 将乐县| 贵溪市| 灵宝市| 美姑县| 洛川县| 梁河县| 宣化县| 福鼎市| 辽宁省| 宁河县| 吐鲁番市| 镇江市| 颍上县| 嘉善县| 温州市| 清河县| 三都| 凉山| 邓州市| 山东| 菏泽市| 涿州市| 民县| 霍林郭勒市| 平阳县| 湘阴县| 三河市| 神农架林区| 利辛县| 柞水县| 固原市| 彰武县| 平阴县| 桓台县|