Ir al contenido principal

Obtener el residuo: operación módulo en ensamblador

 Para este blog quisiera hablar de un algoritmo que encontré y me sirvió para la tarea que me habían dejado. El algoritmo que encontré saca el residuo que se obtiene de una división, osea hace la operación módulo. El residuo es algo que durante el colegio no le tome importancia y me sorprende la importancia que tiene en el ámbito de la programación. Un ejemplo donde se utiliza el residuo en la programación es cuando el programador quiere obtener el último dígito de algún número. La operación de módulo encuentra el residuo que queda después de aplicar una división. (Ejemplos en la ilustración 1)
Ilustración 1. Ejemplo de divisiones que dejan residuo

Muchos lenguajes para aplicar el módulo de dos números funciona simplemente utilizando el signo "%" en el medio de los dos números, otros ponen "mod" en medio de los dos números. Sin embargo en algunos tipos  de lenguajes ensamblador no existe una forma tan directa y fácil para obtener el residuo de una división. Entonces quisiera explicar una forma de obtener el residuo en el lenguaje ensamblador ARM.

Pseudocódigo

Primero me gustaría mostrar el pseudocódigo de este algoritmo para comprender  los pasos que debe tomar para poder obtener el residuo de una división. Este algoritmo aplica para cuando el dividendo y el divisor son números positivos, enteros y divisor siendo diferente de 0. (Ver ilustración 2)

Ilustración 2. Pseudocódigo de operación módulo

Ensamblador arm

Demostraré el código en el lenguaje ensamblador ARM. (Ver ilustración 3)

Ilustración 3. Código de la operación módulo en ensamblador ARM.

Para esta funcionalidad solo hay que tener en cuenta que los números movidos al registro 1 y 2 deben ser positivos y enteros. También en el ensamblador con el que trabajo solo funciona para números entre 1-256. Desconozco el motivo pero me ayudo mucho con tareas que requerían el residuo de divisiones con números pequeños.

Como vieron en el código tenía el número 207 que iba ser el número a dividir y el 2 el divisor. Entonces al compilar el programa y correrlo este fue el resultado que obtuve como residuo de la división 207 entre 2. (Ver ilustración 4)

Ilustración 4. Resultado 207 mod 2
 

Referencias










Comentarios

Publicar un comentario

Entradas populares de este blog

Código BCD

¿Qué es código BCD? El código BCD (decimal codificado, en inglés Binary-Coded Decimal), es una representación de números decimales en el sistema binario, lo cual cada dígito decimal es una codificación con secuencia de 4 bits, con esta representación se puede ver la relación que existe entre un número decimal y ese número en codificación binaria. Este sistema de numeración es ponderado, lo cual quiere decir que cada posición de una secuencia de dígitos obtiene cierto valor.  Esta representación llega a utilizar 4 dígitos binarios para representar 0 al 9. Para poder el representar el equivalente se pone el valor 1 donde se ocupa y 0 donde no se ocupa, con 4 dígitos, se pueden representar 16 números (0000-1111), pero en el código BCD, sólo se usan diez de ellos, las 6 combinaciones que no se emplean (1010, 1011, 1100, 1101, 1110 y 1111) no son válidas en el código BCD.  (Ver imagen 1) Imagen 1: números decimales respresentados en BCD Ejemplo 1   ...

Arquitectura CISC

 En este blog hablaré sobre lo contrario de lo que hable en el post sobre la arquitectura ARM , osea, la contrapuesta a la arquitectura RISC con el fin de dejar claro este bando, sus ventajas, desventajas y otros puntos importantes del cual saber al hablar de CISC. Fuente:  https://www.emaze.com/@AIQOQWRW/ARQUITECTURA-CISC CISC CISC (computadora con conjunto de instrucciones complejas) es una clase de arquitectura de computadoras el cual promueve el uso de grandes cantidades de instrucciones el cual permite operaciones complicadas entre operandos localizados en la memoria o en registros internos. Con la explicación anterior prácticamente CISC se declara lo contrario a RISC. Los procesadores con esta arquitectura trae variedad de registros y requiere de muchos pasos y ciclos de reloj para poder realizar una sola operación.  Si una PC es compatible con CPU's x86 contiene procesador x86 en excepción con algunas computadores Mac. Esta arquitectura utiliza...