Problema: escriba un programa en el microprocesador 8086 para averiguar la resta de los elementos correspondientes de dos arrays de n números de 8 bits, donde el tamaño «n» se almacena en el desplazamiento 500 y los números de la primera array se almacenan desde el desplazamiento 501 y los números de la segunda array se almacenan desde el desplazamiento 601 y almacenan los números de resultado en la primera array, es decir, el desplazamiento 501.
Ejemplo –
Algoritmo –
- Almacene 500 en SI y 601 en DI y cargue datos desde el desplazamiento 500 para registrar CL y establezca el registro CH en 00 (para contar).
- Aumenta el valor de SI en 1.
- Cargue el primer número (valor) del siguiente desplazamiento (es decir, 501) para registrar AL.
- Reste el valor en el registro AL por el valor en el desplazamiento DI.
- Almacene el resultado (valor del registro AL) en el desplazamiento de memoria SI.
- Aumenta el valor de SI en 1.
- Aumente el valor de DI en 1.
- Bucle por encima de 5 hasta que el registro CX obtenga 0.
Programa –
DIRECCIÓN DE MEMORIA | MNEMOTÉCNICA | COMENTARIO |
---|---|---|
400 | MOV SI, 500 | SI<-500 |
403 | CL MOV, [SI] | CL<-[SI] |
405 | CA MOV, 00 | CH<-00 |
407 | INC SI | SI<-SI+1 |
408 | MOV DI, 601 | DI<-601 |
40B | MOV AL, [SI] | AL<-[SI] |
40D | SUBAL, [DI] | AL=AL-[DI] |
40F | MOV [SI], AL | AL->[SI] |
411 | INC SI | SI<-SI+1 |
412 | INC DI | DI<-DI+1 |
413 | BUCLE 40B | SALTAR A 40B SI CX!=0 y CX=CX-1 |
415 | HLT | final |
Explicación –
- MOV SI, 500: establezca el valor de SI en 500
- MOV CL, [SI]: cargar datos desde el desplazamiento SI al registro CL
- MOV CH, 00: establece el valor del registro CH en 00
- INC SI: aumenta el valor de SI en 1.
- MOV DI, 600: establezca el valor de DI en 600.
- MOV AL, [SI]: carga el valor del desplazamiento SI al registro AL
- SUB AL, [DI]: resta el valor del registro AL por el contenido en el desplazamiento DI.
- MOV [SI], AL: almacena el valor del registro AL en el desplazamiento SI.
- INC SI: aumenta el valor de SI en 1.
- INC DI: aumenta el valor de DI en 1.
- BUCLE 408: salta a la dirección 408 si CX no es 0 y CX=CX-1.
- HL: detener
Publicación traducida automáticamente
Artículo escrito por Amber_Saxena y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA