Problem – Write an assembly language program in 8086 microprocessor to divide a 16 bit number by an 8 bit number.
- Assign value 500 in SI and 600 in DI
- Move the contents of [SI] in BL and increment SI by 1
- Move the contents of [SI] and [SI + 1] in AX
- Use DIV instruction to divide AX by BL
- Move the contents of AX in [DI].
- Halt the program.
Assumption – Initial value of each segment register is 00000.
Calculation of physical memory address –
Memory Address = Segment Register * 10(H) + offset,
where Segment Register and Offset is decided on the basis of following table.
|Instruction fetching||Code Segment||Instruction Pointer|
|Data operation||Data Segment||Base Register [BX], Displacement [DISP]|
|Stack operation||Stack Segment||Stack Pointer (SP), Base Pointer (BP)|
|String as a source||Data Segment||Source Indexed (SI)|
|String as a destination||Extra Segment||Destination Indexed (DI)|
|0400||MOV SI, 500||SI <- 500|
|0403||MOV DI, 600||DI <- 600|
|0406||MOV BL, [SI]||BL <- [SI]|
|0408||INC SI||SI <- SI + 1|
|0409||MOV AX, [SI]||AX <- [SI]|
|040B||DIV BL||AX <- AX / BL|
|040D||MOV [DI], AX||[DI] <- AX|
|040F||HLT||End of program|
Explanation – Registers used AX, BL, SI, DI
- MOV SI, 500 assigns 500 to SI
- MOV DI, 600 assigns 600 to DI
- MOV BL, [SI] moves the content of [SI] to BL register i.e. value of divisor will be stored in BL
- INC SI increment the content of SI by 1
- MOV AX, [SI] moves the content of [SI] and [SI + 1] to AX register i.e. value of dividend will be stored in AX
- DIV BL divide the content of AX by BL, after execution of this instruction the quotient get stored in AL and remainder in AH
- MOV [DI], AX moves the content of AX to [DI]
- HLT stops executing the program and halts any further execution
Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.
- 8086 program to convert an 8 bit BCD number into hexadecimal number
- 8086 program to convert 8 bit ASCII to BCD number
- 8086 program to reverse 8 bit number using 8 bit operation
- 8086 program to find sum of digits of 8 bit number
- 8086 program to reverse 16 bit number using 8 bit operation
- 8086 program to Print a 16 bit Decimal number
- 8086 program to find the factorial of a number
- 8086 program to search a number in a string
- 8086 program to convert 8 bit BCD number into ASCII Code
- 8086 program to find Square Root of a number
- 8086 program to convert a 16 bit decimal number to binary
- 8086 program to convert a 16 bit Decimal number to Octal
- 8086 program to convert a 16 bit decimal number to Hexadecimal
- 8086 program to determine largest number in an array of n numbers
- 8086 program to find the square root of a perfect square root number | Set-2
- 8085 program to convert an 8 bit BCD number into hexadecimal number
- 8085 program to convert an 8 bit number into Grey number
- 8086 program to add two 8 bit BCD numbers
- 8086 program to find the min value in a given array
- 8086 program for selection sort
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.