① 利用51單片機實現2位元組16進制數乘法
;雙位元組無符號數乘法程序(R3R4*R6R7)=(R5R2R3R4)
NMUL22:MOVA,R4
MOVB,R7
MULAB
XCHA,R4
MOVR5,B
MOVB,R6
MULAB
ADDA,R5
MOVR5,A
CLRA
ADDCA,B
MOVR2,A
MOVA,R3
MOVB,R7
MULAB
ADDA,R5
MOVR5,A
MOVA,B
ADDCA,R2
MOVR2,A
CLRA
ADDCA,#00H
XCHA,R3
MOVB,R6
MULAB
ADDA,R2
MOVR2,A
MOVA,B
ADDCA,R3
XCHA,R5
MOVR3,A
CLROV
RET
② 單片機怎麼計算16位數的乘法
加個強制轉換行不行 (float)(0x2ab/1024)*500;
③ 用匯編語言怎麼實現16位的乘除法,例如28H乘以FAH,然後再除以FFH,
如果是你這個數的話就直接用指令可以。
MOV
A,#28H
MOV
B,#0FAH
MUL
AB
結果存在A和B中
如果再除0FFH的話,就沒有直接的指令了,相當於16位除以8位。
給你一個子程序試試,將被除數賦值給R2R1,除數賦值給B就可以了。這里調用前如下賦值
/*
MOV
A,#28H
MOV
B,#0FAH
MUL
AB
*/
MOV
R2,B
MOV
R1,A
MOV
B,#0FFH
LCALL
DIV16
;R2:R1/B=R2:R1
DIV16:
MOV
R0,#08H
DIV1:
CLR
C
MOV
A,R1
RLC
A
MOV
R1,A
MOV
A,R2
RLC
A
MOV
R2,A
CLR
C
SUBB
A,B
JC
DIV2
MOV
R2,A
INC
R1
DIV2:
DJNZ
R0,DIV1
RET
④ 利用51單片機實現2位元組16進制數乘法實驗,求編個c程序
去吳鑒鷹吧看看吧,裡面的資料不錯!或者直接上手吳鑒鷹單片機開發板,自己多做實驗練習下,希望對你有喲用
⑤ mcs51系列單片機在進行乘除法運算時如何判斷結果是否溢出
乘法時不存在溢出,因其積是放在兩個寄存器當中,8位乘8位,積不超過16位。
⑥ 如何用單片機的匯編語言實現16位數據相乘
將(R2R3)和(R6R7)兩個16位無符號數相乘,結果放在(R4R5R6R7)
MOV
A,R3
MOV
B,R7
MUL
AB
XCH
A,R7
MOV
R5,B
MOV
B,R2
MUL
AB
ADD
A,R5
MOV
R4,A
CLR
A
ADDC
A,B
MOV
R5,A
MOV
A,R6
MOV
B,R3
MUL
AB
ADD
A,R4
XCH
A,R6
XCH
A,B
ADDC
A,R5
MOV
R5,A
MOV
F0,C
MOV
A,R2
MUL
AB
ADD
A,R5
MOV
R5,A
CLR
A
MOV
ACC.0,C
MOV
C,F0
ADDC
A,B
MOV
R4,A
⑦ 用匯編語言怎麼實現16位的乘除法,例如28H乘以FAH,然後再除以FFH,
如果是你這個數的話就直接用指令可以。
MOV A,#28H
MOV B,#0FAH
MUL AB
結果存在A和B中
如果再除0FFH的話,就沒有直接的指令了,相當於16位除以8位。
給你一個子程序試試,將被除數賦值給R2R1,除數賦值給B就可以了。這里調用前如下賦值
/*
MOV A,#28H
MOV B,#0FAH
MUL AB
*/
MOV R2,B
MOV R1,A
MOV B,#0FFH
LCALL DIV16
;R2:R1/B=R2:R1
DIV16:
MOV R0,#08H
DIV1:
CLR C
MOV A,R1
RLC A
MOV R1,A
MOV A,R2
RLC A
MOV R2,A
CLR C
SUBB A,B
JC DIV2
MOV R2,A
INC R1
DIV2:
DJNZ R0,DIV1
RET
⑧ 51單片機是否能夠完成16位的加減乘除運算
51單片機是8位單片機,一次運算只能進行8位加減乘除,但16位乘除法可以通過多次運算獲得,匯編程序在很多教科書上都有
如果用C語言的話,可以不考慮它是怎麼實現的,只管定義兩個整形變數(16位)即可
⑨ keil c51 運行 16*16乘法要多長時間
根據C編譯優化程度不同,大致就是十幾個~幾十個機器周期,如果CPU頻率是1M,那麼就是幾十微秒。
但根據51單片機種類不同,有12T,6T,1T等,再根據配置的晶振不同,才能精確計算。
如果你需要精確時間,可以用KEIL軟體模擬,當然外圍的晶振頻率要填正確