Problema: escriba un programa en el microprocesador 8086 para generar series de progresión aritmética (AP) de n números de ocho bits.
Suposiciones:
suponga que el tamaño «n» se almacena en el desplazamiento 500 y el primer número (a) se almacena en el desplazamiento 501 y la diferencia común se almacena en el desplazamiento 502. Almacene la serie en la dirección de memoria desplazamiento 600.
Ejemplo –
Algoritmo –
- Almacene 500 en SI y 600 en DI. Cargue datos desde el desplazamiento 500 al registro 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.
- Almacene el valor del registro AL en el desplazamiento de memoria DI.
- Aumente el DI en 1.
- Disminuya el CL en 1.
- Cargue el segundo número (diferencia común) del siguiente desplazamiento (es decir, 502) para registrar BL.
- Añadir registro AL y BL.
- Almacene el resultado (valor del registro AL) en el desplazamiento de memoria DI.
- Aumenta el valor de SI en 1.
- Bucle por encima de 3 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 AL, [SI] | AL<-[SI] |
40A | INC SI | SI<-SI+1 |
40B | MOV DI, 600 | DI<-600 |
40E | MOV [DI], AL | [DI]<-AL |
410 | INC DI | DI<-DI+1 |
411 | CL CL | CL<-CL-1 |
412 | MOV BL, [SI] | BL<-[SI] |
414 | AÑADIR AL, BL | AL<-AL+BL |
416 | MOV [DI], AL | [DI]<-AL |
418 | INC DI | DI<-DI+1 |
419 | BUCLE 414 | SALTAR A 414 SI CX!=0 y CX=CX-1 |
41B | HLT | final |
Explicación –
- MOV SI, 500: establezca el valor de SI en 500.
- MOV CL, [SI]: carga 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 AL, [SI]: carga el valor del desplazamiento SI al registro AL
- INC SI: aumenta el valor de SI en 1.
- MOV DI, 500: establezca el valor de DI en 600.
- MOV [DI], AL: almacena el valor del registro AL en el desplazamiento DI.
- INC DI: aumenta el valor de DI en 1.
- DEC CL: disminuye el valor del registro CL en 1.
- MOV BL, [SI]: carga el valor del desplazamiento SI al registro BL.
- MUL BL: suma valor del registro AL por BL.
- MOV [DI], AL: almacena el valor del registro AL en el desplazamiento DI.
- INC DI: aumenta el valor de DI en 1.
- BUCLE 414: salta a la dirección 414 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