MCS 51微控制器的間接轉移指令,實現多分支轉移

時間 2022-03-12 07:15:10

1樓:芒亭晚堵婷

用散轉表 直接用ljmp指令組成轉移表.由於ljmp是3位元組的指令,在組成指令轉移表時,當執行jmp @a+dptr指令時,可能出現dptr低8位向高8位的進製,用加法指令對dptr直接修改來實現. 程式如下:

org 0000h pj2: mov dptr,#tab2 clr c mov r5,#0 mov a,r6 rlc a ;r6*2 jnc ad1 inc r5 ;有進製,高8位加1 ad1: add a,r6 ;r6*3 jnc ad2 inc r5 ;有進製,高8位加1 ad2:

mov a,r5 add a,dph ;dptr高8位調整 mov a,r6 jmp @a+dptr ;得散轉位址 tab2: ljmb lop0 ljmp lop1 …… ljmp lopn end 用ajmp組成的散轉表為二位元組一項,而用ljmp組成的散轉表則為三位元組一項,根據r6中的內容或乘2,或乘3得每一處理程式的入口位址表指標. 應該不難理解吧,耐心點看

2樓:廉秀雲班環

posi 又是乙個判斷指令啊.7=0 也轉走了,jnb accjz 就是乙個判斷指令的.7 。

什麼都判斷了。 下面的是a不等於0,是acc,就是正數嗎,acc,是a=0就轉走了,這就是負數嗎.7=1。

下面的

mcs-51微控制器的間接轉移指令,實現多分支轉移

3樓:

用散轉表

直接用ljmp指令組成轉移表.由於ljmp是3位元組的指令,在組成指令轉移表時,當執行jmp @a+dptr指令時,可能出現dptr低8位向高8位的進製,用加法指令對dptr直接修改來實現.

程式如下:

org 0000h

pj2: mov dptr,#tab2

clr c

mov r5,#0

mov a,r6

rlc a ;r6*2

jnc ad1

inc r5 ;有進製,高8位加1

ad1: add a,r6 ;r6*3

jnc ad2

inc r5 ;有進製,高8位加1

ad2: mov a,r5

add a,dph ;dptr高8位調整

mov a,r6

jmp @a+dptr ;得散轉位址

tab2: ljmb lop0

ljmp lop1

……ljmp lopn

end用ajmp組成的散轉表為二位元組一項,而用ljmp組成的散轉表則為三位元組一項,根據r6中的內容或乘2,或乘3得每一處理程式的入口位址表指標.

應該不難理解吧,耐心點看

mcs51微控制器的偽指令有哪些?

MCS 51微控制器的中斷問題,MCS 51微控制器問題?

中斷系統中有兩個 使用者不能使用的 優先順序狀態觸發器 其中一個,置1時,表示正在執行高優先順序的中斷,遮蔽所有中斷請求 還有一個,置1時,表示正在執行低優先順序的中斷,遮蔽同級中斷請求.明白了吧?其實就是說這兩個觸發器,是使用者無法訪問到的,是內建且自動賦值的.一旦有高優先順序的中斷執行了,第一個...

51微控制器有哪幾部分構成,MCS 51微控制器內部結構由哪幾部分組成?

過往的美好 8位cpu 4kbytes 程式儲存器 rom 52為8k 256bytes的資料儲存器 ram 52有384bytes的ram 32條i o口線 111條指令,大部分為單位元組指令 21個專用暫存器 2個可程式設計定時 計數器 5箇中斷源,2個優先順序 52有6個 一個全雙工序列通訊口...

簡述MCS 51系列微控制器的中斷源

中斷源。觸發行為。int0 外部中斷0 it0 下降沿。it0 低電平。timer 定時器0溢位。int1 外部中斷1 it1 下降沿。it1 低電平。timer1 定時器1溢位。uart1傳送或接受完成。adca d轉換完成。lvd電源電壓下降到低於lvd檢測電壓。假如你要使用口做為中斷口,口有乙...