The 8088 has a hardware multiplier, but it’s quite slow:
MUL with byte arguments: 69 cycles plus 1 for each set bit in AL plus 1 if the high byte of the result is 0
MUL with word arguments: 123 cycles plus 1 for each set bit in AX plus 1 if the high word of the result is 0
Signed multiplies are even slower (taking at least 80 cycles for a byte, 134 cycles for a word), and depend on the number of set bits in the absolute value of the accumulator, the signs of the operands and whether or not the explicit operand is -0x80 (-0x8000 for word multiplies). I also measured some word IMULs apparently taking a half-integer number of cycles to run, suggesting that there’s either some very weird behavior going on with the 8088’s multiplier or that there’s a bug in my timing program (possibly both).
Can we beat the 8088’s hardware multiplier with a software routine?
Have an amazing project to share? The Electronics Show and Tell is every Wednesday at 7:30pm ET! To join, head over to YouTube and check out the show’s live chat and our Discord!
Python for Microcontrollers – Adafruit Daily — Python on Microcontrollers Newsletter: A New Arduino MicroPython Package Manager, How-Tos and Much More! #CircuitPython #Python #micropython @ThePSF @Raspberry_Pi
EYE on NPI – Adafruit Daily — EYE on NPI Maxim’s Himalaya uSLIC Step-Down Power Module #EyeOnNPI @maximintegrated @digikey
Wow! A flash from the past. I remember doing this more than 30 years ago; are 8088’s becoming fashionable again?
I did a little interface/bare-metal programming in the late 1970’s and I’m starting to revisit the “maker” world now. Adafruit is a spectacular resource; thanks!
Wow! A flash from the past. I remember doing this more than 30 years ago; are 8088’s becoming fashionable again?
I did a little interface/bare-metal programming in the late 1970’s and I’m starting to revisit the “maker” world now. Adafruit is a spectacular resource; thanks!