新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 第12章 用到棧的跳轉(X86匯編教程)

        第12章 用到棧的跳轉(X86匯編教程)

        作者: 時間:2016-12-01 來源:網絡 收藏
        X86匯編教程目錄http://www.51hei.com/mcu/2619.html

        用過高級語言的同學都知道.高級語言有函數概念.可以跳轉到某地方執行代碼計算一些東西,計算完成后可以返回原處繼續執行代碼.現在我們要用匯編實現這個了...嘛

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

        方法是這樣的:在跳轉前,先把IP寄存器的值壓入堆,然后跳轉,計算后要返回再出棧到IP即可.是不是覺得稍微麻煩了點?其實8086提供了相關指令,幫我們輕松完成:


        指令名 :CALL

        指令說明 :和JMP相同,只是在跳轉前會把當前地址壓棧,方便返回


        指令名 :RET

        指令說明 :沒有操作數,指令執行效果相當于POP IP,也就是返回



        實例代碼:
        JMP START;跳轉到代碼開始處
        AXQingLing:;這里是"AX清零函數"的起點(其實就是個標號)
        MOV AX,0000H;AX清零
        RET;返回
        START:;代碼開始
        MOV AX,1234H;往AX隨便寫個數字
        CALL AXQingLing;調用"AX清零函數"(其實就是個跳轉)
        ;代碼到此結束

        請把我的實例編譯后放進Debug試試吧.

        作業:在我的實例中增加個"BX和CX一起清零函數",并在我的實例中"調用AX清零"之后"調用"一次,(記得用RET返回啊...)



        關鍵詞: 棧跳轉X86匯編教

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 彩票| 丹江口市| 苏尼特右旗| 桦甸市| 侯马市| 蒲江县| 额济纳旗| 肃北| 北流市| 山阳县| 藁城市| 双城市| 吉安市| 上蔡县| 云和县| 新巴尔虎左旗| 康定县| 义马市| 南溪县| 文成县| 灯塔市| 九龙城区| 于田县| 临清市| 乌什县| 兴仁县| 胶州市| 富川| 长寿区| 化德县| 宾阳县| 西乌珠穆沁旗| 隆德县| 鹤岗市| 横峰县| 林芝县| 桃园县| 富裕县| 扎赉特旗| 巴彦淖尔市| 邵东县|