各位高手,我想求教彙編中MUL指令的用法,我的微控制器暫存器是8位的,現在有兩個16位的數相乘

2021-05-05 22:22:49 字數 4377 閱讀 4585

1樓:華下兒女

mul指令是乘法指令。使用mul做乘法的時候:

1) 兩個相乘的數:兩個相乘的數,要麼都是8位,要麼都是16位。如果是8位,一個預設放在al中,另外一個存放在8為暫存器或位元組記憶體單元中;如果是16位,一個預設在ax中,另外一個放在16為暫存器或記憶體暫存器字單元中。

2) 結果:如果是8位乘法,結果預設放在ax中;如果是16位乘法,結果高位預設在dx中存放,低位在ax中存放。

格式:mul reg

mul 記憶體單元

記憶體單元可以用不同的定址方式給出,比如:

mul byte ptr ds:[0]

含義:(ax) =(al)*((ds)*16+0);

mul word ptr [bx+si+8]含義:(ax) =(ax)*((ds)*16+(si)+8)結果的低16位;(dx) =(ax)*((ds)*16+(si)+8)的結果的高16位。

各位高手,我想求教彙編中mul指令的用法,我的微控制器暫存器是8位的,現在有兩個16位的數相乘,

2樓:匿名使用者

mul 指令只有一種用法即:

mul ab 即累加器a與暫存器b相乘,結果保留到a和b中如果是兩個16位相乘,那麼需要編制一個小函式來實現了。

雙位元組無符號數乘法程式 (r3r4*r6r7)=(r5r2r3r4);入口: r3,r4,r6,r7

;佔用資源: acc,b

;堆疊需求: 2位元組

;出口: r5,r2,r3,r4

nmul22 : mov a,r4

mov b,r7

mul ab

xch a,r4

mov r5,b

mov b,r6

mul ab

add a,r5

mov r5,a

clr a

addc a,b

mov r2,a

mov a,r3

mov b,r7

mul ab

add a,r5

mov r5,a

mov a,b

addc a,r2

mov r2,a

clr a

addc a,#00h

xch a,r3

mov b,r6

mul ab

add a,r2

mov r2,a

mov a,b

addc a,r3

xch a,r5

mov r3,a

clr ovret

在51微控制器地址暫存器是8位還是16位

3樓:匿名使用者

在51微控制器中沒有專用的地址暫存器,你問的是dptr吧?叫資料指標,是16位的,但也可以拆成兩個8位的暫存器來用,變成高8位是dph,低8位是dpl。

因為,dptr可以用來做暫存器定址用,如 movx a , @dptr,這dptr中確實就是16位地址了,但不叫地址暫存器。

微控制器的地址是16位的rom ,我寫的是16為的資料,為什麼寫了ffff用到了兩個地址 100

4樓:

在微控制器記憶體儲0xffff,是分成兩個相鄰的位元組儲存的,一個存高位元組0ff,另一個存放低位元組0ff,總共暫用2個位元組。

微控制器jnb指令只能判斷1和0嗎?比如我在暫存器r1裡面存了一個小於16的數字,然後慢慢減到0,jnb會生效嗎

5樓:

jnb 用來判斷位的,為 0 則跳轉。

你可以用cjne 比如cjne r0,#0, lp 不等於0 就跳轉。

6樓:匿名使用者

微控制器jnb指令是位操作指令,只能判斷1和0。

在暫存器r1裡面存了一個小於16的數字,然後慢慢減到0,jnb會生效嗎?

不能這樣用,那是語法錯誤。

可用cjne去比較r1裡的資料。

7樓:rq冬樺幻憶

......很奇怪的問題呃....

你是不是該考慮用djnz 而不是 jnb捏?

具體方法如下:

f5:mov r1, (.....)

f4:djnz r1,f5

jnb是判0轉移.....

8樓:貳雨兒

jnb就是jump not below。主要是用於兩個數的比較。當然不是隻能判斷1和0。如果要跟0比較,應該是用jz或者jnz麼~

9樓:

會,jnb指令是位定址,而r1中數字不是位,是資料

10樓:三少

哦,jnb指令是位指令,而r1是位元組資料,一共8位,所以你那種用法是錯誤的,可考慮djnz和cjne中的一種來實現你說的功能。

11樓:匿名使用者

jnb是對位判斷,只能判斷1和0,不能對暫存器判斷

我原來是搞微控制器的,現在想學dsp,請問各位,學習難點在**?

12樓:

dsp不只是簡單的要實現某一功能,而是要求更快更優更好的實現某一演算法,要節省時間,dsp裡的某一指令(如加法指令add)有好幾種格式,這就要求根據具體問題選擇哪一種指令格式,難點就是要選擇恰當的指令,來更好的實現。對於初學者先不要追求那麼高,能實現某一功能即可……

13樓:

難點在於對演算法的理解。其它配置部分以及控制部分其實大同小異。

14樓:匿名使用者

主要是你的演算法,暫存器的初始化都大同小異咯,演算法的理解。。。。。

請問各位嵌入式高手,我是學微控制器的,最進想在51上移植ucos-ii,但是從來都沒有移植過,不知道具體的流程

15樓:死亡光輝

很古老的東西了,keil當然可以用,而且你的方法也基本是對的,但是需要注意你用的晶片的資源情況,注意空間的分配和管理以及其他資源的配置。還有就是51的拆機件太多了,如果你用的不是專門的開發板而是自己做的板子,還要注意晶片的情況,以及板上其他器件的情況。

16樓:匿名使用者

在網上找找別人移植的吧,我04年左右找過一個,很快就能搞定的,不過有可能有問題(當時候找的那個就存在出入棧問題),需要自己除錯(我當時也是在keil下做的,嘗試跑過幾個執行緒ok,呵呵)

你所說的流程大致是對的,就是在自己工程中加入ucos的**,然後編譯,需注意你所選微控制器的資源足夠(如ram,flash空間等)

在51微控制器的特殊功能暫存器中,哪幾個是16位的,它們有什麼不同?

17樓:臣天男

8051微控制器內部有21個特殊功能暫存器,在物理上是分散在片內各功能部件中,在數學上把它們組織在內部資料儲存器地址空間80h~ffh中,以便能使用統一的直接定址方式來訪問。這些特殊功能暫存器頒在以下各個功能部件中:

(1)cpu:acc、b、psw、sp、dptr(由dpl和dph兩個8位暫存器組成);

(2)中斷系統:ip、ie;

(3)定時器/計數器:tmod、tcom、tl0、th0、tl1、th1;

(4) 並行i/o口:p0、p1、p2、p3;

(5) 序列口:scon、sbuf、pcon。

51微控制器的暫存器基本上都是8位的,而16位都是由兩個組裝起來的,例如dptr以及定時器t0與t1。51是基礎,在學好51後,可以適當學學stm32以及arm,或者是飛思卡爾的板子。

18樓:匿名使用者

51微控制器的暫存器是沒有16位的,都是8位,其中定時器可以工作在16位的計數模式下,但也是兩個8位存器合成一個16位的,它自身屬於8位機。

19樓:匿名使用者

8位機,所有的暫存器硬體上都是8位模式訪問;「所謂的的16位,都是2個8為拼起來的」

pc;dptr,

20樓:二虎

dptr,因為51微控制器雖然是8位機,但地址匯流排是16位的,所以資料指標一定得是16位,還有就是兩個定時器的計數暫存器也是16位的,這三個16位暫存器都可以對它們的高低8位單獨操作,你既然想學微控制器,就要把微控制器基礎好好學學,像這個問題好好的看看書做做試驗都能瞭解的。

21樓:匿名使用者

微控制器中只一個pc(程式計數器)是16位,但是這個無法定址,是機器執行取指令執行用的。另外有一個dptr是理論是的16資料指標,實際是由dph和dpl兩個8位組成的,可以定址64k的地址。要慢慢體會。。

22樓:匿名使用者

程式計數器 pc

資料指標 dptr

我馬上就高三了,想考個大學希望高手求教如何進行復習?除英語和語文外別的都很差,我是個理科生

筆記本 錯題本 每一門三年來所學的總綱 能自己列出來 並能 知道詳細細節並都掌握 這是基本的基本 這是三流高手 的程度 然後就出題 做題吧 沒錯 是自己出題 反向思維你應該懂得 高考的題並不是無解之謎 這是二流的 程度 然後 就是成神 或題霸 不在沉默中爆發就在沉默中滅亡 人的潛力是無限的 只有開發...

各位高手幫忙 我想組裝臺電腦 大概3500左右的價格 希望各位高手大哥們給個配置價格清單 謝謝

你想要多高階?3500是夠了,但高階這2個字不配!cpu amd 640 690 主機板 技嘉 770 500 記憶體 宇瞻2g dd3 85 x2 硬碟 西部資料藍盤500g 275 顯示卡 索泰gts450 512d5 f1 pa 780 電源 先馬黑魅 btx 450 1 280 機箱 100...

我想升級電腦記憶體,各位高手請幫幫忙

ddr 400 就知道了。128和256的基本少見了。網購可以。512的不超過120然後1g的不超過220 廈門同安的 隨便什麼牌子都行,金士頓的最好,但是也最貴。以你目前的配置,再加一條1g的記憶體就行了,不需要2g 主機板有幾條插槽插記憶體的?壙充加插要同牌子才有效,最好是拆舊的去買,有幾代的,...