Este programa realizado en ensamblador hace una división de un número por otro, no obstante en vez de hacer una división normal hará un bucle con el que irá haciendo restas iterativas para conocer así el cociente y el resto de la división.
Este sería el código hecho en C que queremos realizar en lenguaje ensamblador.
1 2 3 4 5 6 7 8 9 10 11 12 13 | #define constante 14 long dividendo = constante; long divisor = 4; long cociente = 0; long resto = 0; int main() { resto = dividendo; do { resto = resto - divisor; cociente++; } while (resto >= divisor); } |
#define constante 14 long dividendo = constante; long divisor = 4; long cociente = 0; long resto = 0; int main() { resto = dividendo; do { resto = resto - divisor; cociente++; } while (resto >= divisor); }
Esta sería el subprograma para dividir dos números hecho en lenguaje ensamblador:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | constante equ 14 section .data dividendo dq constante divisor dq 4 cociente dq 0 resto dq 0 section .text global main main: mov rax, [dividendo] mov rcx, 0 bucle: sub rax, [divisor] inc rcx cmp rax, [divisor] jge bucle mov [resto], rax mov [cociente], rcx mov rax,1 mov rbx,0 int 80h |
constante equ 14 section .data dividendo dq constante divisor dq 4 cociente dq 0 resto dq 0 section .text global main main: mov rax, [dividendo] mov rcx, 0 bucle: sub rax, [divisor] inc rcx cmp rax, [divisor] jge bucle mov [resto], rax mov [cociente], rcx mov rax,1 mov rbx,0 int 80h
Ingeniero informático y desarrollador de aplicaciones web. Experto en desarrollo web, Webmaster, e-commerce y SEO.
1 comentarios. Comentar
Hola, quiero generar un generador de funciones con un uC de la familia 8051 en lenguaje ENSAMBLADOR. Mi idea es guardar en una tabla los valores de la señal y recorrerla a ritmo del timer, en función de la freceucia.
no se si es la mejor forma de hacerlo o no, así que me gustaria que me aconsajaran.
Un saludo,gracias