中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

cmp bne 以及sub指令的詳解

發布時間:2020-06-29 23:30:14 來源:網絡 閱讀:1867 作者:飛寞 欄目:開發技術

之前看到過一個延時函數段:


delay:

     ldr r2, =7000000    

     ldr r3, =0x0        

 delay_loop:

     sub r2, r2, #1      //r2=r2-1  

     cmp r2, r3         //cmp會影響z標志位,如果r2=r3,則Z=1;下一句中eq就會成立

     bne delay_loop      //

mov pc, lr              //函數返回  延時函數

 

現在我們來分析一下這個函數的各個指令。

1、cmp比較指令

假設現在AX寄存器中的數是0004H,BX寄存器中的數是0007H。

執行的指令是:CMP  AX,  BX

執行這條指令時,先做用AX中的數減去BX中的數的減法運算。各標志位將會被分別設置成以下值:

  CF:是否有進位或者借位

  ZF:0標志位,就是結果是否為0

  OF:溢出標志位,是否計算機結果溢出了

  SF:符號位,0為正,1為負

2、bne指令

  bne: 標志寄存器中Z標志位不等于零時, 跳轉到BNE后標簽處

  beq: 標志寄存器中Z標志位等于零時, 跳轉到BEQ后標簽處

 上面函數中,比較了r2和r3,它們相減,如果結果為0,那么Z標志位置位,就不跳轉了,否則就會跳轉,形成循環

3、sub r2,r2,#1

  把r2里的數減1,然后放回r2里面。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴安县| 洛阳市| 汶上县| 新龙县| 迁西县| 彝良县| 昆山市| 马尔康县| 德州市| 化隆| 九龙县| 辉南县| 广宁县| 康乐县| 任丘市| 舟山市| 嘉祥县| 石阡县| 剑川县| 怀仁县| 高邑县| 墨脱县| 屏山县| 淅川县| 海宁市| 昌平区| 临桂县| 绥芬河市| 滦平县| 宁化县| 太和县| 岳普湖县| 泌阳县| 舒城县| 青川县| 太康县| 镇康县| 黑龙江省| 南木林县| 浙江省| 山阴县|