Re: [問題] 關於超過8bits的除法
※ 引述《hiddencat (=____=)》之銘言:
: 在8051組合語言
: 除法提供的是
: DIV ab
: 執行的是8 bits的數據
: 但我想請教一下
: 如果我想要將一個為超過8 bits的數
: 除以一個一樣是超過8 bits的數
: 取其餘數的部分
: 該如何做到?
: 隨意舉例:
: 590351/1234 = ?
: 我現在能想到的是用迴圈來跑減法
: 相減之後判斷被除數是否已小於除數
: 如果是
: 留下的即為其餘數
: 不知道有沒有其他更好的辦法?
以前寫的32bits四則運算,參考看看。
8051 32 位元四則運算
說明:所有運算的工作空間使用BUF所定址的12個位元組(Byte)
;MACRO for Clear Internal Data Memory
;R0 : Start Address
;R2 : Memory Length
CIDM MACRO Length
MOV R2,#Length
CLR A
MOV @R0,A
INC R0
DJNZ R2,CIDM
ENDM
;;Clear 4 Internal Data Memory
CIDM4:
CIDM 4
RET
;Internal Data Compare
;If not equal,CY = 1
IDC:
LOOP: MOV A,@R0
MOV B,@R0
CJNE A,B,ENDLOOP
INC R0
INC R1
DJNZ R2,LOOP
ENDLOOP:
RET
;32bits ADD
;R0[3]R0[2]R0[1]R0[0]=R0[3]R0[2]R0[1]R0[0] + R1[3]R1[2]R1[1]R1[0]
ADD32:
MOV R2,#04H
CLR C
F1: MOV A,@R0
ADDC A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ R2,L1
RET
;32bits subtract
;R0[3]R0[2]R0[1]R0[0]=R0[3]R0[2]R0[1]R0[0] - R1[3]R1[2]R1[1]R1[0]
SUB32:
MOV R2,#04H
CLR C
F2: MOV A,@R0
SUBB A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ R2,L2
RET
;32bits Multipty
;BUF:12Bytes
;BUF[3]BUF[2]BUF[1]BUF[0] = BUF[3]BUF[2]BUF[1]BUF[0] x BUF[11]BUF[10]BUF[9]BUF[8]
;Work Area:BUF[7]BUF[6]BUF[5]BUF[4]
;Using reg R0,R1,R2,R3
MUL32:
MOV R1,#(BUF+4)
CALL CIDM4
MOV R3,#33 ;SHIFT COUNT
CLR C
F3: MOV R1,#(BUF+7)
MOV R2,#(BUF+4)
F4: MOV A,@R1
RRC A
MOV @R1,A
DEC R1
DJNZ R2,F4
JNC F5
CLR C
MOV R0,#(BUF+4)
CALL ADD32
F5: DJNZ R3,F3
RET
;32bits Divide
;BUF:12Bytes
;BUF[3]BUF[2]BUF[1]BUF[0] = BUF[3]BUF[2]BUF[1]BUF[0] / BUF[11]BUF[10]BUF[9]BUF[8]
;Work Area:BUF[7]BUF[6]BUF[5]BUF[4]
;Using reg R0,R1,R2,R3
DIV32:
MOV R1,#(BUF+4)
CALL CIDM
MOV R3,#32 ;SHIFT COUNT
CLR C
F6: MOV R1,#BUF
MOV R2,#(BUF+4)
F7: MOV A,@R1
RLC A
MOV @R1,A
DJNZ R2,F7
MOV R0,#(BUF+7)
MOV R1,#(BUF+11)
MOV R2,#BUF
CALL IDC
JC F8
MOV R0,#(BUF+4)
MOV R1,#(BUF+8)
CALL SUB32
F8: CPL C
DJNZ R3,F6
MOV R1,#BUF
MOV R2,#BUF
F9: MOV A,@R1
INC R1
DJNZ R2,F9
RET
--
不要問我從哪來,我只是一個浪跡天涯的工程師....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.232.48.86
推
12/31 11:02, , 1F
12/31 11:02, 1F
→
12/31 11:07, , 2F
12/31 11:07, 2F
→
12/31 11:07, , 3F
12/31 11:07, 3F
→
12/31 11:11, , 4F
12/31 11:11, 4F
推
12/31 14:05, , 5F
12/31 14:05, 5F
推
12/31 17:12, , 6F
12/31 17:12, 6F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
ASM 近期熱門文章
PTT數位生活區 即時熱門文章