新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 第10章 代碼的跳轉(1)(X86匯編教程)

        第10章 代碼的跳轉(1)(X86匯編教程)

        作者: 時間:2016-12-01 來源:網絡 收藏
        最近發生了一些事情,沒法像以前那么上網了,手指受了點傷打字也不方便,所以隔了那么久,寫這章是為了說明:"這教程還沒掛,不要放棄這教程!",寫完這章我會停更一段時間.安心養傷...另外,現在是借用別人的PC寫教程無法截圖什么的請原諒...
        這一章講的是跳轉,跳轉是什么呢?跳轉就是當代碼執行到一定地方后跳到另一個地方去執行.跳轉是很重要的,有了跳轉電腦才能根據鼠標鍵盤的操作執行相應的代碼.如果沒有跳轉,電腦就只能按照設定的路一直走.管你鼠標鍵盤怎么動.一段代碼執行過去就死機了.而有了跳轉,你按下鼠標的時候電腦就能跳轉到鼠標相關代碼去執行.
        不過,能根據情況判斷的跳轉是比較復雜的,要很久之后才教,這一章先教"無條件跳轉",所謂的無條件跳轉就是不管什么情況,有沒有碰到鼠標鍵盤只要運行到無條件跳轉代碼都會跳轉."圖"解↓
        某行代碼
        某行代碼
        某行代碼
        無條件跳轉代碼,向下跳3行──┐
        某行代碼│
        某行代碼│
        某行代碼←─────────┘
        某行代碼
        某行代碼
        就這樣,CPU碰到跳轉代碼后就會跳轉到代碼指定的地方執行.可以上跳也可以下跳.當然,不可能用行數來表達想跳轉的地方的.因為匯編終究會轉換成機器碼,機器碼可不是按行來算的,而是字節.不過,放心,我們學的是匯編,不是機器碼,我們只要告訴編譯器我們要跳轉到哪一行,匯編編譯器會自動把相差的字節數計算出來寫上去的.
        那么,我們如何告訴編譯器,我們要跳轉到哪一行呢?這就得用到標號了.還記得前邊講解的匯編代碼格式嗎?在指令名前邊還能加個叫做"標號"的東西,用":"(不含雙引號)和指令區分開.實例如下↓
        BiaoHao:MOV AX,BX
        我們可以在匯編指令前面加個標號,然后在我們的跳轉指令里邊加上這個標號,就能跳轉到這行代碼了.
        好了,說了這么多,該介紹跳轉指令了...

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

        指令名:JMP
        操作數數量:1
        操作數名:內存地址(就是代碼標號啦)
        指令用途 :跳轉到內存指定地方執行代碼

        實例:

        某行代碼
        某行代碼
        JMP BiaoHao
        某行代碼
        某行代碼
        BiaoHao:MOV AX,BX
        某行代碼
        恩,這一章就講到這里了.
        例行作業:
        編寫一段程序,要求有2個以上的標號.
        3次以上的跳轉
        禁止跳轉到同一個地方超過2次
        作業提交郵箱:o7007@vip.qq.com
        提交作業請發代碼..我可不想去debug里跟蹤程序..


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 会东县| 于都县| 林州市| 全椒县| 肇州县| 惠州市| 竹溪县| 双柏县| 太原市| 保德县| 宿松县| 遵义市| 苗栗市| 建德市| 万州区| 揭东县| 陇西县| 哈密市| 赫章县| 正安县| 万州区| 泌阳县| 宿松县| 滨州市| 安图县| 扶沟县| 怀仁县| 馆陶县| 宜兰县| 泸州市| 二连浩特市| 包头市| 旺苍县| 邵武市| 金堂县| 安塞县| 高淳县| 南昌县| 佛坪县| 崇文区| 乌兰浩特市|