微控制器組合語言的幾個疑問

時間 2021-08-30 09:55:58

1樓:靈若伊雪

1、(r1)=20h 不是一條指令,而只是一種說明,表明r1暫存器中的內容是20h。這個20h是地址還是資料,與這個說明無關。

2、在指令 mov @r1,#40h 中,@r1 是間接定址方式,表明r1中的內容是地址,指令的功能表明是將立即數40h傳送到r1指定的地址中。

3、在指令中容易混淆的是立即數與直接地址,立即數的特徵是有一個字首#,直接地址沒有這個字首。

無論程式在何處,都可以跳到你要的地方,同樣lcall也是非常好用,它是長呼叫子程式,也是無論程式執行到何處,遇到它都可以調記憶體裡任何一個位置子程式

所以我用最簡單的一句話告訴你,在你需要跳轉的時候就用ljmp,在你需要調程式的時候就用lcall

引用:⑵ jmp near ptr label 近轉移(near jump)

近轉移是jmp指令的預設格式,可以寫為"jmp label"。它可在當前**段內轉移,機器指令的操作碼是e9,位移量是16位的帶符號補碼數。指令中的轉向地址可以是直接定址方式、暫存器定址方式、暫存器間接方式和儲存器定址方式。

● jmp label 直接轉移(direct jump)

執行操作:(ip) ← offset label = (ip)當前+16位位移量

轉移的目標地址在指令中可直接使用符號地址,由於位移量為16位,它的轉移範圍應是-32768至+32767,也就是說,近轉移指令可以轉移到段內的任一個位置。

● jmp reg 暫存器間接轉移(register indirect jump)

執行操作:(ip) ← (reg)

轉移的目標地址在暫存器中,例如指令"jmp bx"執行的結果,將bx的內容送給ip。

● jmp word ptr opr 儲存器間接轉移(memory indirect jump)

執行操作:(ip) ← (pa+1,pa)

儲存器的實體地址pa由指令中的定址方式確定,jmp指令執行的結果,把pa單元的字內容送到ip暫存器中。例如"jmp word ptr [di]",實體地址pa = (ds)×24+(di),指令執行的結果是(ip)= (pa+1,pa)。

write_ds1302_byte(address);

write_ds1302_byte(dat);

這兩個函式是網ds1302中寫地址和資料的,根據ds1302的時序,可以看明白順序。

2樓:

1. ajmp的跳轉範圍有限,只能在當前pc所處的2kb塊內跳轉。ljmp的跳轉範圍為全64kb空間。

2. 所謂相對,是指相對於當前地址進行跳轉,通俗地說就是“前進n步”或“後退n步”。所謂絕對,就是直接跳轉到明確指定的地址,通俗地說就是“跳到***x位置”。

3. 程式部分分模組,逐步新增模組並執行除錯,這樣可以逐個排除問題。如果有串列埠或其它通訊介面可以輸出除錯資訊,有硬體**更好。

3樓:

都是些 很基本的問題。 基礎啊。

1,什麼時候用ajmp,什麼時候用ljmp?

是 短距離跳轉 和 長距離跳轉的區別。 通常不同的微控制器 都支援相應的偽指令,比如jmp。

編譯器自動 根據實際 來編譯。 具體要看 那款微控制器了。

2,相對轉移和絕對轉移指令有什麼區別?

相對轉移: 根據相對地址量來轉移。 絕對轉移:向絕對地址轉移3,比較大的程式如何除錯

一般除錯都是 分全速執行, 單步執行 和 斷點執行。 根據實際需要了

微控制器彙編DA指令什麼用,微控制器組合語言十進位制調整da

胡像貓 微控制器彙編言語da指令,是指十進位制加法運算。是結合加法指令一起用的,例如daa,這條指令是十進位制調整指令,用來在進行十進位制運算 bcd碼 時進行校正的。當兩個bcd碼加法時,01h 09h應該是等於10h,但由於 微控制器的加法指令是二進位制的運算,加完之後得到的結果是0ah,這時就...

51微控制器組合語言做16位除法,51微控制器是否能夠完成16位的加減乘除運算

大別山的蝸牛 雙位元組無符號除法程式 r5r2r3r4 r6r7 r2 r3r4 餘數r6r7 入口 r5,r2,r3,r4,r6,r7 占用資源 acc,b,f0 堆疊需求 4位元組 出口 r2 r3,r4,r6,r7,ovndiv42 mov a,r1 push a mov b,00h ndv4...

微控制器組合語言中JMP START在不同位置的作用,求大神解釋

jmp start 這是跳轉指令,我想你是學習的51微控制器的初學者。它的意思是跳轉到標識為 start 位置開始往下執行語句。你給了三段程式,第一和第二的作用是一樣的。先說你程式的意思先,你程式設計是一個流水燈,先左移8次,然後又右移8次。接著重複上面的迴圈 左移8次,右移8次,左移8次,右移8次...