導航:首頁 > 操作系統 > 單片機乘2或除2

單片機乘2或除2

發布時間:2022-07-12 15:08:18

㈠ 在單片機的程序里如果b是16進制可以直接乘以2 嗎得出來的是十進制

當然可以的,結果是二進制,因為程序運行時是在計算機內部進行的,所有數據都是二進制。

㈡ 用單片機 實現8位2機制數的乘法,必須包含左移或右移啊

我也在學單片機。麻煩樓主表述清楚點,左移/右移一般用於乘/除2或2的倍數,若乘數不是2的倍數那就用不到左移了不是嗎?

㈢ 單片機乘除指令計算的具體步驟

關於MUL的用法書上有應該,我就不說了。說幾點:

一、單片機的乘法運算只是進制不同,跟我們常用的十進制是一樣的。例如:12×10=120

不要簡單想成在後邊加個0,學了單片機應該學會用*移位*思考,因為單片機不會在後邊加 0減0,應該想成12向左移一位,同樣二進制的11B×10B =110B ,十六進制11H×10H=110H,八進制也一樣。

二、想不通 ,還可換算成十進制去算,然後再轉換成相應進制。因為他們數量是一樣的只是進 制不同。十進制要滿是個進一位,八進制要滿8個進一位。十進制的10和八進制的12是一 樣的。

啰嗦了半天希望能理解其中的意思。

㈣ 單片機乘法的實現

org 0000h
jmp start
start:
MOV SP,#60H
mov r2,#20h
mov r3,#34h
mov a,#99h
lcall bhd
lcall hbd
NOP
NOP

;三位元組除以單位元組子程序
;入口條件:被除數在R3、R4、R5中,除數在R7中。
;出口信息:OV=0 時,雙位元組商在R4、R5中,OV=1 時溢出。
;影響資源:PSW、A、B、R2~R7 堆棧需求: 2位元組
DV31:
CLR C
MOV A,R3
SUBB A,R7
JC DV30
SETB OV ;商溢出
RET
DV30:
MOV R2,#10H;求R3R4R5/R7-→R4R5
DM23:
CLR C
MOV A,R5
RLC A
MOV R5,A
MOV A,R4
RLC A
MOV R4,A
MOV A,R3
RLC A
MOV R3,A
MOV F0,C
CLR C
SUBB A,R7
ANL C,/F0
JC DM24
MOV R3,A
INC R5
DM24:
DJNZ R2,DM23
MOV A,R3 ;四捨五入
ADD A,R3
JC DM25
SUBB A,R7
JC DM26
DM25:
INC R5
MOV A,R5
JNZ DM26
INC R4
DM26:
CLR OV
RET ;商在R4R5中

;兩位元組除以單位元組子程序
;入口條件:被除數在R4、R5中,除數在R7中。
;出口信息:OV=0 時,單位元組商在R3中,OV=1 時溢出。
; 余數在r4中
;影響資源:PSW、A、R3~R7 堆棧需求: 2位元組
D457:
CLR C
MOV A,R4
SUBB A,R7
JC DV50
SETB OV;商溢出
RET
DV50:
MOV R6,#8 ;求平均值(R4R5/R7-→R3)
DV51:
MOV A,R5
RLC A
MOV R5,A
MOV A,R4
RLC A
MOV R4,A
MOV F0,C
CLR C
SUBB A,R7
ANL C,/F0
JC DV52
MOV R4,A
DV52:
CPL C
MOV A,R3
RLC A
MOV R3,A
DJNZ R6,DV51
MOV A,R4 ;四捨五入
ADD A,R4
JC DV53
SUBB A,R7
JC DV54
DV53:
INC R3
DV54:
CLR OV
RET

;四位元組除以單位元組子程序
;入口條件:被除數在R2、R3、R4、R5中,除數在R7中。
;出口信息:a<ff 時三位元組商在R3、r4、r5中,a=ff 時溢出。
; 余數在r2中
;影響資源:PSW、A、R2~R7 堆棧需求:2位元組
;input dat1,dat2,dat3,r5 ;r0(h),:divisor dat2(h) dat3() r5(l):quotient
;dat1(h)dat2(l):resie
F_DIV:
clr c
mov a,r7
jz fd_over
fd_begin:
mov a,r2
subb a,r7
jc no_overflow
mov a,#0ffh
ret
no_overflow:
clr a
mov r6,#18h
fdiv0:
lcall rlc4
jc goushang
mov a,r2
subb a,r7
jc fdnext
inc r5
mov r2,a
fdnext:
djnz r6,fdiv0
jmp fdone
goushang:
mov a,r2
subb a,r7
inc a
inc r5
mov r2,a
jmp fdnext
fdone:
clr a
clr ov
ret
fd_over:
mov a,#0ffh
ret
rlc4:
clr c
mov a,r5
rlc a
mov r5,a
mov a,r4
rlc a
mov r4,a
mov a,r3
rlc a
mov r3,a
mov a,r2
rlc a
mov r2,a
ret
;DIVD功能:雙位元組二進制無符號數除法
;入口條件:被除數在R2、R3、R4、R5中,除數在R6、R7中。
;出口信息:OV=0 時,雙位元組商在R4、R5中,OV=1 時溢出。
; 余數在r2 r3中
;影響資源:PSW、A、B、R1~R7 堆棧需求: 2位元組
DIVD:
CLR C ;比較被除數和除數
MOV A,R3
SUBB A,R7
MOV A,R2
SUBB A,R6
JC DVD1
SETB OV ;溢出
RET
DVD1:
MOV B,#10H ;計算雙位元組商
DVD2:
CLR C ;部分商和余數同時左移一位
MOV A,R5
RLC A
MOV R5,A
MOV A,R4
RLC A
MOV R4,A
MOV A,R3
RLC A
MOV R3,A
XCH A,R2
RLC A
XCH A,R2
MOV F0,C ;保存溢出位
CLR C
SUBB A,R7 ;計算(R2R3-R6R7)
MOV R1,A
MOV A,R2
SUBB A,R6
ANL C,/F0 ;結果判斷
JC DVD3
MOV R2,A ;夠減,存放新的余數
MOV A,R1
MOV R3,A
INC R5 ;商的低位置一
DVD3:
DJNZ B,DVD2;計算完十六位商(R4R5)
; MOV A,R4 ;商移到R2R3中
; MOV R2,A
; MOV A,R5
; MOV R3,A
CLR OV ;設立成功標志
RET
;雙位元組乘以雙位元組乘法
;入口條件:被乘數在R2、R3中,乘數在R6、R7中。
;出口信息:乘積在R2、R3、R4、R5中。
;影響資源:PSW、A、B、R2~R7 堆棧需求: 2位元組
MULD:
MOV A,R3 ;計算R3乘R7
MOV B,R7
MUL AB
MOV R4,B ;暫存部分積
MOV R5,A
MOV A,R3 ;計算R3乘R6
MOV B,R6
MUL AB
ADD A,R4 ;累加部分積
MOV R4,A
CLR A
ADDC A,B
MOV R3,A
MOV A,R2 ;計算R2乘R7
MOV B,R7
MUL AB
ADD A,R4 ;累加部分積
MOV R4,A
MOV A,R3
ADDC A,B
MOV R3,A
CLR A
RLC A
XCH A,R2 ;計算R2乘R6
MOV B,R6
MUL AB
ADD A,R3 ;累加部分積
MOV R3,A
MOV A,R2
ADDC A,B
MOV R2,A
RET
;雙位元組乘以單位元組乘法
;入口條件:被乘數在R2、R3中,乘數在R7中。
;出口信息:乘積在R2、R3、R4中。
;影響資源:PSW、A、B、R2~R7 堆棧需求: 2位元組
mul21:
mov a,r3
mov b,r7
mul ab
mov r4,a
mov r5,b
mov a,r2
mov b,r7
mul ab
add a,r5
mov r3,a
mov a,b
addc a,#00h
mov r2,a
ret
;功能:雙位元組十六進制整數轉換成雙位元組BCD碼整數
;入口條件:待轉換的雙位元組十六進制整數在R6、R7中。
;出口信息:轉換後的三位元組BCD碼整數在R3、R4、R5中。
;影響資源:PSW、A、R2~R7 堆棧需求: 2位元組
HB2:
CLR A ;BCD碼初始化
MOV R3,A
MOV R4,A
MOV R5,A
MOV R2,#10H ;轉換雙位元組十六進制整數
HB3:
MOV A,R7 ;從高端移出待轉換數的一位到CY中
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5 ;BCD碼帶進位自身相加,相當於乘2
ADDC A,R5
DA A ;十進制調整
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
MOV A,R3
ADDC A,R3
MOV R3,A ;雙位元組十六進制數的萬位數不超過6,不用調整
DJNZ R2,HB3 ;處理完16bit
RET

;入口條件:待轉換的單位元組BCD碼整數在累加器A中。
;出口信息:轉換後的單位元組十六進制整數仍在累加器A中。
;影響資源:PSW、A、B、R4 堆棧需求: 2位元組
BCDH:
MOV B,#10H ;分離十位和個位
DIV AB
MOV R4,B ;暫存個位
MOV B,#10 ;將十位轉換成十六進制
MUL AB
ADD A,R4 ;按十六進制加上個位
RET

;雙位元組BCD碼整數轉換成雙位元組十六進制整數
;入口條件:待轉換的雙位元組BCD碼整數在R2、R3中。
;出口信息:轉換後的雙位元組十六進制整數仍在R2、R3中。
;影響資源:PSW、A、B、R2、R3、R4 堆棧需求:4位元組
BH2:
MOV A,R3 ;將低位元組轉換成十六進制
LCALL BCDH
MOV R3,A
MOV A,R2 ;將高位元組轉換成十六進制
LCALL BCDH
MOV B,#100 ;擴大一百倍
MUL AB
ADD A,R3 ;和低位元組按十六進制相加
MOV R3,A
CLR A
ADDC A,B
MOV R2,A
RET
;標號: BHD功能:單位元組BCD碼小數轉換成單位元組十六進制小數
;入口條件:待轉換的單位元組BCD碼數在累加器A中。
;出口信息:轉換後的單位元組十六進制小數仍在累加器A中。
;影響資源:PSW、A、R2、R3 堆棧需求: 2位元組
BHD:
MOV R2,#8 ;准備計算一個位元組小數
BHD0: ADD A,ACC ;按十進制倍增
DA A
XCH A,R3
RLC A ;將進位標志移入結果中
XCH A,R3
DJNZ R2,BHD0 ;共計算8bit小數
ADD A,#0B0H ;剩餘部分達到0.50否?
JNC BHD1 ;四舍
INC R3 ;五入
BHD1:
MOV A,R3 ;取結果
RET
; 標號: HBD功能:單位元組十六進制小數轉換成單位元組BCD碼小數
;入口條件:待轉換的單位元組十六進制小數在累加器A中。
;出口信息:CY=0時轉換後的BCD碼小數仍在A中。CY=1時原小數接近整數1。
;影響資源:PSW、A、B 堆棧需求: 2位元組
HBD:
MOV B,#100 ;原小數擴大一百倍
MUL AB
RLC A ;余數部分四捨五入
CLR A
ADDC A,B
MOV B,#10 ;分離出十分位和百分位
DIV AB
SWAP A
ADD A,B ;拼裝成單位元組BCD碼小數
DA A ;調整後若有進位,原小數接近整數1
RET

jmp $
end

㈤ 求教:51單片機,十六位二進制數乘以2後放回原單元,用移位的方法怎麼做

左移其實就是乘法。
例如十進制;10左移一位就是100,相當於10*10;
二進制:10左移一位就是100,從原先的2變為4,就是乘以2;
左移一位就是把原來的數乘以"進制".
二進制x2就是左移一位。

㈥ 單片機 怎麼用位移的方法實現乘除法

因為在寄存器里的數都是二進制的,所以乘以2:左移一位;乘以4左移兩位;乘以8左移三位……依此類推(但要注意寄存器總共有多少位,防止溢出),除法用右移。
直接移位只能計算乘數(或除數)為2的n次方的乘(除)運算,對於一般的乘除法,還要配合加(減)法運算,比如a?9=a??3+a
實際上二進制數的基本運算即加,取反,移位等,通過變換來計算減,乘,除。
可以驗證,用單片機C語言編程計算乘數為2的n次方的乘法運算比乘數為一般數的乘法運算要快得多,就是因為前者只需直接移位,後者還需配合加法或經多步運算

㈦ 【說得好有獎】單片機查表時用RL或RLC移位乘2的問題!!根據這個程序幫我分析下

RL是循環左移 移除最高位進入最低位 最高位為0時無區別
還有a只有8位 91*2=122h 但是a只能放下ffh 所以最高位舍棄 變成22
嚴格意義上說 左移不等同於乘2 樓主再理解一下 不懂再把問題補充一下

設表格中有1024個數據項,每個數據為2個位元組,表格總長度為2048個位元組
你看 這里假設有1024個數據項 如果是超出部分無法查表的話 那麼ffff-1024=efdbh 一共有這么多的數據不能查 顯然題意不是這樣的。

㈧ 51單片機中UART通信中的公式中除2是什麼意思

51單片機中UART通信中的公式中除2是又經過2倍分頻了,這要結合串口電路原理就明白了。

㈨ 單片機乘法和除法指令及匯編語言程序舉例

1.乘法:
MUL AB ;(A)×(B),積的低8位在A中,積的高8位在B中;

C總為0。
2.除法:

DIV AB ;(A)÷(B),商在A中,余數在B中。
若(B)= 0 ,則結果不定,(OV)= 1,(C)= 0。
例、試將A中的二進制數轉換為3位BCD碼,其中,百位數存放於31H單
元,十位數和個位數壓縮後存於30H單元中。
解;MOV B,#100
DIV AB
MOV 31H,A

MOV A,#10
XCH A,B

DIV AB
SWAP A
ADD A,B

MOV 30H,A

閱讀全文

與單片機乘2或除2相關的資料

熱點內容
程序員那麼可愛25集 瀏覽:741
伺服器地址和ip地址一樣不 瀏覽:662
php中括弧定義數組 瀏覽:600
php列印堆棧 瀏覽:514
華為adb命令行刷機 瀏覽:963
人像攝影pdf 瀏覽:755
解壓文件密碼怎樣重新設置手機 瀏覽:999
高考指南pdf 瀏覽:693
爬蟲python數據存儲 瀏覽:240
u盤怎麼取消加密 瀏覽:429
567除以98的簡便演算法 瀏覽:340
pdf手機如何解壓 瀏覽:15
python描述器 瀏覽:60
戰地聯盟3解壓密碼 瀏覽:805
s型命令 瀏覽:25
php年薪5年 瀏覽:71
如何上網上設個人加密賬戶 瀏覽:44
linux打開ssh服務 瀏覽:78
微信位置可以加密嗎 瀏覽:470
演算法蠻力法 瀏覽:438