7.1 循環(huán)結(jié)構(gòu)的實(shí)現(xiàn)
循環(huán)語句可以使用以下架構(gòu)實(shí)現(xiàn)C語言中的for語句。設(shè)存在一個(gè)代碼段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
對(duì)于while語句的實(shí)現(xiàn)則可以使用LOOP,設(shè)存在一個(gè)代碼段OBA0。
OBA0:
MOV CX,n ;n代表循環(huán)的時(shí)間,即一個(gè)時(shí)鐘周期
LOOP $
上述的結(jié)構(gòu)可以作為簡單的延時(shí)函數(shù)使用。
7.2 判斷結(jié)構(gòu)的實(shí)現(xiàn)
常用的結(jié)構(gòu)是利用按位與異或運(yùn)算實(shí)現(xiàn)的,因?yàn)楫惢蛑噶钕嗤?,相反出1的特性,所以可以寫成以下結(jié)構(gòu),設(shè)存在一個(gè)代碼段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í)函數(shù)的實(shí)現(xiàn)
設(shè)存在一個(gè)代碼段OBA0。
OBA0:
MOV CX,n ;n代表循環(huán)的時(shí)間,即一個(gè)時(shí)鐘周期
LOOP $
注意:由于CX是一個(gè)16位寄存器,最大支持的數(shù)是65535,如果需要更長的時(shí)間,可以多寫幾遍,或者是采用以下結(jié)構(gòu)的循環(huán)嵌套。
設(shè)存在一個(gè)代碼段OBA0。
START:MOV AX,n ;n代表循環(huán)n次LOOP延時(shí)
JMP OBA0
OBA0:
MOV CX,n ;n代表循環(huán)時(shí)間,即一個(gè)時(shí)鐘周期
LOOP $
DEC AX
JNZ START
JMP OBA0
這種結(jié)構(gòu)最多支持計(jì)數(shù)2^32個(gè)脈沖。
注:為什么要使用延時(shí)函數(shù)?
在之前計(jì)算機(jī)的C語言編程中,由于不考慮通信協(xié)議以及視覺效果,所以沒有提到延時(shí)函數(shù),所謂的延時(shí)函數(shù)通俗的說法就是讓CPU進(jìn)行沒有意義的運(yùn)算,一般低端的處理器采用的是讓CPU不停地做循環(huán)來達(dá)到延時(shí)的效果,后續(xù)的Cortex-M系列處理器由于增加了滴答時(shí)鐘,所以也可以采用定時(shí)器的方式達(dá)到延時(shí)的效果,因?yàn)樘幚砥鞯乃俣榷际?span id="a5mgapgs4i" class="hljs-variable">MHz甚至GHz程度,但是通信協(xié)議有的最高速度也就幾百KHz,這就需要處理器來遷就通信協(xié)議的,因?yàn)橛械男酒绻俣忍焓歉緹o法工作的,所以加入適當(dāng)?shù)难訒r(shí)來適應(yīng)這種低速芯片?,F(xiàn)在的計(jì)算機(jī)中引入Cache緩存,目的也是為了匹配低速設(shè)備與高速CPU的通信。
-
C語言
+關(guān)注
關(guān)注
180文章
7630瀏覽量
140529 -
for
+關(guān)注
關(guān)注
0文章
44瀏覽量
16050 -
循環(huán)語句
+關(guān)注
關(guān)注
0文章
10瀏覽量
4978
發(fā)布評(píng)論請先 登錄
【原創(chuàng)分享】單片機(jī)延時(shí)的兩種實(shí)現(xiàn)方法
通過循環(huán)次數(shù)的累加實(shí)現(xiàn)延時(shí)
怎樣使用arm匯編指令實(shí)現(xiàn)for循環(huán)結(jié)構(gòu)呢
單片機(jī)延時(shí)程序時(shí)間長度的記憶方法
匯編編寫采用定時(shí)器延時(shí)控制速度的Protuse仿真步進(jìn)電機(jī)
關(guān)于單片機(jī)匯編延時(shí)程序的一些了解
51單片機(jī)的匯編延時(shí)程序免費(fèi)下載

單片機(jī)實(shí)現(xiàn)延時(shí)的方法
單片機(jī)延時(shí)是怎么實(shí)現(xiàn)的
51匯編(五):延時(shí)函數(shù)

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

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

評(píng)論