This video explains ARM assembly instructions for unsigned multiplication and division. It covers different instructions based on the size of the operands and the expected result, emphasizing the use of registers and the handling of results exceeding 32 bits.
MUL (for results less than 32 bits) and UMULL (for results larger than 32 bits). MUL returns only the lower 32 bits; UMULL uses two registers to store the full result (high and low 32 bits).MLA instruction multiplies two registers and adds a third, providing a single instruction for multiply-accumulate operations. A long version, MULLA, handles results exceeding 32 bits.UDIV instruction is used, returning only the integer portion of the result.hablaremos ahora sobre la multiplicación y división los circuitos para multiplicar y dividir son complejos por esta razón no todos los procesadores tienen las instrucciones respectivas para esas operaciones todos los procesadores a rm tienen la instrucción para multiplicar pero no todos tienen para dividir algunos miembros de la familia como rm cortex jonah cortes de m3 y m4 tienen ambas instrucciones en este vídeo clase examinaremos las instrucciones para multiplicar y dividir objetivo aprender el uso de las instrucciones para multiplicar y dividir en ensamblador rm nos proporciona dos opciones para multiplicar números sin signos multiplicación normal y la larga la multiplicación normal muy es usada cuando el resultado es menor a 32 bit mientras que la multiplicación larga común debe ser utilizada cuando el resultado es mayor a 32 bit veamos la siguiente tabla con las dos instrucciones para realizar multiplicaciones usamos muy para multiplicar dos números de 32 bits si el resultado es mayor que 32 bits solamente obtenemos los 32 bits de menor valor en el registro destino rd y el resto no se toma en cuenta si el resultado es mayor que 0 x efe efe efe efe efe efe efe efe efe efe efe entonces debemos utilizar la instrucción común multiplicación larga sin signo en algunas arquitecturas cuando se utiliza muy y el resultado es mayor a 32 bit se actualiza la bandera de acarreo ce este no es el caso con la arquitectura a rm veamos ejemplo en la multiplicación todos los operando deben estar en registros valores inmediatos no están permitidos como operan 2 el ejemplo cargados los valores se hace mal 25 y 65 en r1 y r2 respectivamente luego se realiza la multiplicación y se almacena en r3 en el caso del número de media palabra o menores no hay problema manteniendo el resultado no es el caso para número de 32 bits porque el resultado puede ser mayor de 32 bits si se utiliza la instrucción 1 el destino sólo contendrá la porción de 32 bits menos significativo y los demás serán descartados para estos casos debemos utilizar la instrucción común en la multiplicación larga sin signo trabaja con cuatro parámetros y todos deben ser registros no se permite el uso de valores inmediatos después de la multiplicación habrá dos registros destinos que contendrán el resultado note que registró más a la izquierda rdl o en nuestro caso contendrán los 32 bits menos significativos y la porción con los bits más significativos serán guardados en el segundo registro r de h en este ejemplo se cargan los números a multiplicar en los registros r1 y r2 y después de ejecutar la instrucción común los registro r3 y r4 contendrán el resultado r3 los 32 bits menos significativos y r4 el resto de vida es importante notar que es trabajo del programador escoger la instrucción adecuada de multiplicación dependiendo del tamaño en bit de los operadores y el resultado en algunas aplicaciones como el procesamiento de señal digital de s&p necesitamos multiplicar dos registros y sumar resultados como otro registro a dm tiene una instrucción para hacer ambos trabajos en una sola instrucción el formato de la instrucción ml a multiplicar y agregar es el siguiente ml a espacio r de coma rm rs rn y se ejecuta como r de igual a rm por rs más r n en la instrucción de multiplicación y sumar los operando deben ser registros observemos que en el ejemplo se cargan los operadores en registros en r1 y r2 los números a multiplicar y en r3 el que luego se sumará el primer registro en la instrucción es donde se guardará el resultado r4 en este ejemplo tal como los casos de las instrucciones anteriores ml a puede producir un valor de más de 32.000 en este caso el registro destino solamente guardará los 32 bits menos significativos y los demás serán descartados para estos casos usamos la instrucción o ml l para la multiplicación y suma de números de más de 32 bits en este ejemplo note que en la instrucción ml el registro con el valor a sumar es el mismo que el registro destino de los bits más significativos tal como se ve en el ejemplo se ejecuta r2 por r1 y r4 los 32 bits más significativos se almacenan en r4 y los 32 bits menos significativos en r3 para vivir números sin signos en áre m podemos utilizar la instrucción de la instrucción ud tiene el formato de espacio r de coma rn coma o p 2 lo cual realizará rd igual a rn / p 2 veamos un ejemplo se cargan los valores 8 y 3 en los registros r1 y r2 respectivamente luego se ejecuta la división con la instrucción judith y se guarda el resultado en r5 notemos que la instrucción de devuelve la parte entera de la división cambia tus pensamientos y cambiarás tu mundo hasta la próxima