Problema: escriba un programa en lenguaje ensamblador en 8086 para imprimir la tabla de enteros de entrada.
Suposición: suponga que el número ingresado está en la ubicación de memoria 500 y la tabla se imprimirá desde la ubicación inicial 600 hasta la 609 en hexadecimal.
Ejemplo –
Algoritmo –
- Cargue la dirección del número de entrada en SI y también cargue la dirección donde queremos salida en DI.
- Almacene 00 en el registro CH.
- Incremente el valor de CH en 1 y mueva el contenido de [SI] al registro AH.
- Multiplique el contenido de AL y CH y guárdelo en AX y luego mueva el contenido de AL a [DI], luego incremente el valor de DI en 1.
- Compare el valor de CH y 0A, si no es igual, vaya al paso número 3; de lo contrario, detenga el programa.
Programa –
DIRECCIÓN | MNEMOTÉCNICA | COMENTARIOS |
---|---|---|
400 | MOV SI, 500 | SI<-500 |
403 | MOV DI, 600 | DI<-600 |
406 | CA MOV, 00 | CH<-00 |
408 | INC CH | CH<-CH+1 |
409 | MOV AL, [SI] | AL<-[SI] |
40B | MUL CH | AX<-AL*CH |
40D | MOV [DI], AL | [DI]<-AL |
40F | INC DI | DI<-DI+1 |
410 | CH CMP, 0A | CH-0A |
413 | JNZ 408 | saltar a la dirección 408 si el indicador cero es 0 |
415 | HLT | Termina el programa |
Explicación –
- MOV SI, 500: carga 500 en SI.
- MOV DI, 600: carga 600 en DI.
- MOV CH, 00: carga 00 datos en el registro CH.
- INC CH: incrementa el valor dentro del registro CH en 1.
- MOV AL, SI: mueve el contenido de SI al registro AL.
- MUL CH: multiplica los contenidos de los registros AL y CH y los almacena en el registro AX.
- MOV [DI], AL: mueve el contenido del registro AL a [DI].
- INC DI: incrementa el valor de DI en 1.
- CMP CH, 0A: resta datos dentro del registro CH y 0A.
- JNZ 408: salte a la dirección 408 si el indicador cero es 0.
- HLT: terminar el programa.
Publicación traducida automáticamente
Artículo escrito por AashutoshChauhan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA