; Only integer operations and non-zero operations are possible
Reference address:Use left shift and subtraction to divide a 4-digit hexadecimal number by a 2-digit hexadecimal number
ORG 0000H
JMP A1
ORG 002BH
A1: MOV R0,#04H; dividend
MOV R1,#0D2H; dividend
MOV R2,#0; remainder
MOV R3,#0; quotient
MOV R4,#0; quotient
MOV R5,#34; divisor
MOV 30H,#16
JMP A1
ORG 002BH
A1: MOV R0,#04H; dividend
MOV R1,#0D2H; dividend
MOV R2,#0; remainder
MOV R3,#0; quotient
MOV R4,#0; quotient
MOV R5,#34; divisor
MOV 30H,#16
A2: MOV A,R1; first move the low byte to the high byte
RLC A;
MOV R1,A;
RLC A;
MOV R1,A;
MOV A, R0; first process the high byte and receive the low byte transmitted byte
RLC A;
MOV R0, A;
RLC A;
MOV R0, A;
MOV A,R2; process the shifted number
RLC A;
MOV R2,A;
RLC A;
MOV R2,A;
CLR C; clear C because subtraction A = AC-R5
SUBB A,R5; Subtract the divisor from the number shifted out
JC A3; Compare the number shifted out with the divisor
MOV R2,A; If the number shifted out is larger, the quotient should be set to 1 and the remainder should be assigned to R2 for the next shift and then subtracting the divisor
; Since the divisor is a 2-digit hexadecimal number, the remainder should not exceed a 2-digit hexadecimal number, so one register is enough
A3: CPL C; Quotient processing
MOV A,R4; First store it in the low byte
RLC A;
MOV R4,A;
JC A3; Compare the number shifted out with the divisor
MOV R2,A; If the number shifted out is larger, the quotient should be set to 1 and the remainder should be assigned to R2 for the next shift and then subtracting the divisor
; Since the divisor is a 2-digit hexadecimal number, the remainder should not exceed a 2-digit hexadecimal number, so one register is enough
A3: CPL C; Quotient processing
MOV A,R4; First store it in the low byte
RLC A;
MOV R4,A;
MOV A,R3; store from low byte to high byte
RLC A;
MOV R3,A;
RLC A;
MOV R3,A;
DJNZ 30H,A2;
JMP $
JMP $
END
; Idea--The divisor is a 2-digit hexadecimal number, so the remainder does not exceed a 2-digit hexadecimal number, so one register is enough
; --The divisor is a 4-digit hexadecimal number, so two registers must be used
; R2 R5 R3 R4
;1. 00000000-00100010 is less than 0, and
the quotient is 00000000》00000000B ;2. 00000000-00100010 is less than 0, and the quotient is 00000000》00000000B
;3. 00000000-00100010 is less than 0, and the quotient is 00000000》00000000B
;4. 00000000-00100010 is less than 0, and the quotient is 00000000》00000000B
;5. 00000000-00100010 is less than 0, and the quotient is 00000000》00000000B
; 6. 00000001-00100010 is less than 0, and the quotient is 00000000》00000000B
; 7. 00000010-00100010 is less than 0, and the quotient
is 00000000》00000000B; 8. 00000100-00100010 is less than 0, and the quotient is 00000000》00000000B
; 9. 00001001-00100010 is less than 0, and the quotient is 00000000》00000000B
;10. 00010011-00100010 is less than 0, and
the quotient is 00000000》00000000B;11. 00100110-00100010 is greater than 0, and the quotient is 00000000》00000001B; The remainder is 00000100B and is assigned to R2
;12. 00010010-00100010 is less than 0, and the quotient is 00000000》00000010B
;13. 00100100-00100010 is less than 0, and the quotient is 00000000》00000100B
;14. 00100101-00100010 is greater than 0, the quotient is 00000000》00001001B; the remainder is 00000010B and is assigned to R2
; 15.
00001010-00100010 is less than 0, the quotient is 00000000》00010010B; ;16. 00010100-00100010 is less than 0, the quotient is 00000000》00100100B, and the remainder is 00010100B
; the algorithm is now complete
; --The divisor is a 4-digit hexadecimal number, so two registers must be used
; R2 R5 R3 R4
;1. 00000000-00100010 is less than 0, and
the quotient is 00000000》00000000B ;2. 00000000-00100010 is less than 0, and the quotient is 00000000》00000000B
;3. 00000000-00100010 is less than 0, and the quotient is 00000000》00000000B
;4. 00000000-00100010 is less than 0, and the quotient is 00000000》00000000B
;5. 00000000-00100010 is less than 0, and the quotient is 00000000》00000000B
; 6. 00000001-00100010 is less than 0, and the quotient is 00000000》00000000B
; 7. 00000010-00100010 is less than 0, and the quotient
is 00000000》00000000B; 8. 00000100-00100010 is less than 0, and the quotient is 00000000》00000000B
; 9. 00001001-00100010 is less than 0, and the quotient is 00000000》00000000B
;10. 00010011-00100010 is less than 0, and
the quotient is 00000000》00000000B;11. 00100110-00100010 is greater than 0, and the quotient is 00000000》00000001B; The remainder is 00000100B and is assigned to R2
;12. 00010010-00100010 is less than 0, and the quotient is 00000000》00000010B
;13. 00100100-00100010 is less than 0, and the quotient is 00000000》00000100B
;14. 00100101-00100010 is greater than 0, the quotient is 00000000》00001001B; the remainder is 00000010B and is assigned to R2
; 15.
00001010-00100010 is less than 0, the quotient is 00000000》00010010B; ;16. 00010100-00100010 is less than 0, the quotient is 00000000》00100100B, and the remainder is 00010100B
; the algorithm is now complete
Previous article:A brief talk about MSP430 microcontroller programming and its advantages
Next article:Use right shift addition to do multiplication (255*255)
Recommended Content
Latest Microcontroller Articles
He Limin Column
Microcontroller and Embedded Systems Bible
Professor at Beihang University, dedicated to promoting microcontrollers and embedded systems for over 20 years.
MoreSelected Circuit Diagrams
MorePopular Articles
- Innolux's intelligent steer-by-wire solution makes cars smarter and safer
- 8051 MCU - Parity Check
- How to efficiently balance the sensitivity of tactile sensing interfaces
- What should I do if the servo motor shakes? What causes the servo motor to shake quickly?
- 【Brushless Motor】Analysis of three-phase BLDC motor and sharing of two popular development boards
- Midea Industrial Technology's subsidiaries Clou Electronics and Hekang New Energy jointly appeared at the Munich Battery Energy Storage Exhibition and Solar Energy Exhibition
- Guoxin Sichen | Application of ferroelectric memory PB85RS2MC in power battery management, with a capacity of 2M
- Analysis of common faults of frequency converter
- In a head-on competition with Qualcomm, what kind of cockpit products has Intel come up with?
- Dalian Rongke's all-vanadium liquid flow battery energy storage equipment industrialization project has entered the sprint stage before production
MoreDaily News
- Allegro MicroSystems Introduces Advanced Magnetic and Inductive Position Sensing Solutions at Electronica 2024
- Car key in the left hand, liveness detection radar in the right hand, UWB is imperative for cars!
- After a decade of rapid development, domestic CIS has entered the market
- Aegis Dagger Battery + Thor EM-i Super Hybrid, Geely New Energy has thrown out two "king bombs"
- A brief discussion on functional safety - fault, error, and failure
- In the smart car 2.0 cycle, these core industry chains are facing major opportunities!
- The United States and Japan are developing new batteries. CATL faces challenges? How should China's new energy battery industry respond?
- Murata launches high-precision 6-axis inertial sensor for automobiles
- Ford patents pre-charge alarm to help save costs and respond to emergencies
- New real-time microcontroller system from Texas Instruments enables smarter processing in automotive and industrial applications
Guess you like
- Bluetooth controlled stepper motor driver and firmware - Seeking paid technical assistance
- BAT chip industry procurement recruitment
- A look at hybrid electric vehicles from the perspective of driving methods and related main technologies
- Power module viewing operation
- NUCLEO-G431RB review -> ADC basic configuration (without oversampling)
- Design of Phase Detection Broadband Frequency Measurement System Based on FPGA
- EEWORLD University Hall----Challenges and solutions for ultrasonic water and gas meter design
- Wi-Fi 6E FEM, unleashing the full performance of the 6GHz band
- New uses for old mobile phones (7) - Automatically start the server when the phone is turned on
- [Perf-V Evaluation] Development Board Circuit Analysis and Xilinx Software Trial