一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

匯編實現(xiàn)循環(huán)判斷與延時

汽車電子技術(shù) ? 來源:滑小稽筆記 ? 作者:滑小稽 ? 2023-03-02 10:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

7.1 循環(huán)結(jié)構(gòu)的實現(xiàn)

循環(huán)語句可以使用以下架構(gòu)實現(xiàn)C語言中的for語句。設(shè)存在一個代碼段OBA0。

OBA0:

;輸入循環(huán)的代碼

JMP OBA0

只不過這種方式是無限次循環(huán),若想要有限次循環(huán),則應(yīng)該這么寫。

START:

MOV CX,n ;n代表循環(huán)的次數(shù)

JMP OBA0

OBA0:

;輸入循環(huán)的代碼

SEC CX

JNZ START

JMP OBA0

對于while語句的實現(xiàn)則可以使用LOOP,設(shè)存在一個代碼段OBA0。

OBA0:

MOV CX,n ;n代表循環(huán)的時間,即一個時鐘周期

LOOP $

上述的結(jié)構(gòu)可以作為簡單的延時函數(shù)使用。

7.2 判斷結(jié)構(gòu)的實現(xiàn)

常用的結(jié)構(gòu)是利用按位與異或運算實現(xiàn)的,因為異或指令相同出0,相反出1的特性,所以可以寫成以下結(jié)構(gòu),設(shè)存在一個代碼段OBA0。

OBA0:

MOV AL,n ;n代表要參加比較的數(shù)

NOR n,x ;x代表比較的數(shù)

JNZ OBA1 ;相同跳轉(zhuǎn)到OBA1

JMP OBA0

OBA1:

;相當(dāng)于if成立執(zhí)行的指令

還有一種是利用減法,判斷全零標(biāo)志位,思想與上面的例子一樣,區(qū)別就是將上面例子中的NOR改成減法指令SUB就可以了。

7.3 延時函數(shù)的實現(xiàn)

設(shè)存在一個代碼段OBA0。

OBA0:

MOV CX,n ;n代表循環(huán)的時間,即一個時鐘周期

LOOP $

注意:由于CX是一個16位寄存器,最大支持的數(shù)是65535,如果需要更長的時間,可以多寫幾遍,或者是采用以下結(jié)構(gòu)的循環(huán)嵌套。

設(shè)存在一個代碼段OBA0。

START:MOV AX,n ;n代表循環(huán)n次LOOP延時

JMP OBA0

OBA0:

MOV CX,n ;n代表循環(huán)時間,即一個時鐘周期

LOOP $

DEC AX

JNZ START

JMP OBA0

這種結(jié)構(gòu)最多支持計數(shù)2^32個脈沖。

注:為什么要使用延時函數(shù)?

在之前計算機的C語言編程中,由于不考慮通信協(xié)議以及視覺效果,所以沒有提到延時函數(shù),所謂的延時函數(shù)通俗的說法就是讓CPU進(jìn)行沒有意義的運算,一般低端的處理器采用的是讓CPU不停地做循環(huán)來達(dá)到延時的效果,后續(xù)的Cortex-M系列處理器由于增加了滴答時鐘,所以也可以采用定時器的方式達(dá)到延時的效果,因為處理器的速度都是MHz甚至GHz程度,但是通信協(xié)議有的最高速度也就幾百KHz,這就需要處理器來遷就通信協(xié)議的,因為有的芯片如果速度太快是根本無法工作的,所以加入適當(dāng)?shù)难訒r來適應(yīng)這種低速芯片。現(xiàn)在的計算機中引入Cache緩存,目的也是為了匹配低速設(shè)備與高速CPU的通信。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7631

    瀏覽量

    141015
  • for
    for
    +關(guān)注

    關(guān)注

    0

    文章

    44

    瀏覽量

    16063
  • 循環(huán)語句
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    4987
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    【原創(chuàng)分享】單片機延時的兩種實現(xiàn)方法

    單片機延時大家程序中都會用到,那么怎么實現(xiàn)呢?通常我們有軟件實現(xiàn),就是語句循環(huán);或者硬件實現(xiàn),通過定時器/計數(shù)器。對于精準(zhǔn)而言,從
    發(fā)表于 10-08 15:32

    通過循環(huán)次數(shù)的累加實現(xiàn)延時

    通過循環(huán)次數(shù)的累加實現(xiàn)延時是一種十分實用的延時技巧,在處理一些對時間精度沒要求,又要不間斷切換狀態(tài)的任務(wù)時,就可以使用這種方法實現(xiàn)
    發(fā)表于 01-18 09:32

    怎樣使用arm匯編指令實現(xiàn)for循環(huán)結(jié)構(gòu)呢

    1,使用arm匯編指令 實現(xiàn)for循環(huán)結(jié)構(gòu)2, while呢?3, do...while呢?4. switch 呢?麻煩高手指教下哈。最好給出具體的匯編指令!
    發(fā)表于 10-18 11:24

    快速反復(fù)循環(huán)延時繼電器電路圖

    快速反復(fù)循環(huán)延時繼電器電路圖
    發(fā)表于 07-03 14:27 ?6519次閱讀
    快速反復(fù)<b class='flag-5'>循環(huán)</b>的<b class='flag-5'>延時</b>繼電器電路圖

    51單片機匯編語言教程_單片機延時程序分析

    51單片機匯編語言教程:5課單片機延時程序分析
    發(fā)表于 01-19 15:26 ?0次下載

    匯編編寫采用定時器延時控制速度的Protuse仿真步進(jìn)電機

    采用匯編語言編寫的,通過定時器去實現(xiàn)延時的,步進(jìn)電機Protuse 仿真的步進(jìn)電機。 分享參考學(xué)習(xí)。
    發(fā)表于 12-04 13:37 ?2次下載

    關(guān)于單片機匯編延時程序的一些了解

    如果用高級語言編程,只需要簡單地調(diào)用延時函數(shù)就可以實現(xiàn),但是計算機具體是怎么實現(xiàn)的呢?要想知其所以然,還得從匯編開始學(xué)起。
    發(fā)表于 08-04 09:19 ?3033次閱讀

    51單片機的匯編延時程序免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是51單片機的匯編延時程序免費下載。用6MHz晶振,51單片機,一個機器周期為2us。延時10s子程序如下
    發(fā)表于 08-05 17:34 ?4次下載
    51單片機的<b class='flag-5'>匯編</b><b class='flag-5'>延時</b>程序免費下載

    單片機實現(xiàn)延時的方法

    實現(xiàn)延時通常有兩種方法:一種是硬件延時,要用到定時器/計數(shù)器,這種方法可以提高CPU的工作效率,也能做到精確延時;另一種是軟件延時,這種方法
    的頭像 發(fā)表于 09-22 11:46 ?7927次閱讀

    51匯編模擬延時交通燈PCB及仿真文件

    51匯編模擬延時交通燈PCB及仿真文件
    發(fā)表于 06-25 09:19 ?13次下載

    STM32延時函數(shù)的方法

    STM32延時函數(shù)的方法 1.普通延時法 這個比較簡單,讓單片機做一些無關(guān)緊要的工作來打發(fā)時間,經(jīng)常用循環(huán)實現(xiàn),不過要做的比較精準(zhǔn)還是要下一番功夫。 2.SysTick 定時器
    的頭像 發(fā)表于 10-02 16:13 ?9826次閱讀

    單片機延時是怎么實現(xiàn)

    單片機延時大家程序中都會用到,那么怎么實現(xiàn)呢?通常我們有軟件實現(xiàn),就是語句循環(huán);或者硬件實現(xiàn),通過定時器/計數(shù)器。 對于精準(zhǔn)而言,從
    的頭像 發(fā)表于 10-12 17:18 ?1w次閱讀

    51匯編(五):延時函數(shù)

    ,這時我們就需要通過循環(huán)執(zhí)行NOP,控制循環(huán)次數(shù)實現(xiàn)延時,并包裝成函數(shù),便于隨時調(diào)用。;執(zhí)行2×20×100次NOPDELAY:MOV R7, #2DELAYLOOP1:MOV R
    發(fā)表于 11-20 17:21 ?7次下載
    51<b class='flag-5'>匯編</b>(五):<b class='flag-5'>延時</b>函數(shù)

    EFR32上實現(xiàn)精確的軟件延時

    > 0; n--) for(i = 0; i < loops; i++) ;}這意味著:最內(nèi)層的for語句,執(zhí)行一次循環(huán)需要12個CPU時鐘周期。反匯編如下圖:在編譯器的優(yōu)化選項設(shè)置為“-O2”時,上面的代碼里的循環(huán)
    發(fā)表于 11-24 19:06 ?3次下載
    EFR32上<b class='flag-5'>實現(xiàn)</b>精確的軟件<b class='flag-5'>延時</b>

    STM32關(guān)延時功能實現(xiàn)方式研究

    STM32常見延時實現(xiàn)方式研究一、阻塞延時函數(shù)1. 循環(huán)延時(V1.0.0)代碼(while形式)測試數(shù)據(jù)特點總結(jié)2. SYSTICK非中斷
    發(fā)表于 11-24 19:21 ?4次下載
    STM32關(guān)<b class='flag-5'>延時</b>功能<b class='flag-5'>實現(xiàn)</b>方式研究