Problema: escriba un programa en lenguaje ensamblador en un microprocesador 8086 para encontrar el promedio de n números de ocho bits.
Ejemplo –
Algoritmo –
- Asignar valor 500 en SI y 600 en DI
- Mover el contenido de [SI] en CL
- Mover 0000 en AX
- Mover el contenido de CL a BL
- Incrementa el valor de SI en 1
- Agregue los contenidos de AL y [SI]
- Añadir 00 a AH con acarreo anterior
- Incrementa el valor de SI en 1
- Disminuye el valor de CL en 1
- Si no se establece Zero Flag (ZF), vaya al paso 6; de lo contrario, vaya al paso 11
- Divide el contenido de AX por BL
- Mover el contenido de AX en [DI]
- detener el programa
Programa –
COMPENSAR | MNEMOTÉCNICA | COMENTARIO | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
400 | MOV SI, 500 | SI <- 500 | ||||||||||||||||||||||||||||||
403 | MOV DI, 600 | ED <- 600 | ||||||||||||||||||||||||||||||
406 | HACHA MOV, 0000 | AX = 0000 | ||||||||||||||||||||||||||||||
409 | CL MOV, [SI] | CL <- [SI] | 40B | MOV BL, CL | BL <-CL | 40D | INC SI | SI = SI + 1 | 40E | AGREGAR AL, [SI] | AL = AL + [SI] | 410 | ADC AH, 00 | AH = AH + 00 + cy | 412 | INC SI | SI = SI + 1 | 413 | CL CL | CL = CL – 1 | 415 | JNZ 40E | SALTAR si ZF = 0 | 417 | DIV BL | AX = AX / BL | 419 | MOV [ED], AX | [DI] <-AX | 41B | HLT | Deténgase |
Explicación –
- MOV SI, 500 se usa para mover el desplazamiento 500 al índice inicial (SI).
- MOV DI, 600 se usa para mover el desplazamiento 600 al índice de destino (DI).
- MOV AX, 0000 se usa para mover los datos 0000 a AX.
- MOV CL, [SI] se usa para mover el contenido de [SI] a BL.
- MOV BL, CL se utiliza para copiar contenidos de CL a BL.
- INC SI se usa para incrementar el contenido de SI en 1.
- ADD AL, [SI] se usa para agregar contenidos de [SI] a AL.
- ADC AH, 00 se usa para 00 junto con cy anterior para AH.
- INC SI se usa para incrementar el contenido de SI en 1.
- DEC CL se utiliza para disminuir el contenido de CL en 1.
- JNZ 40E se usa para saltar al desplazamiento 40E si el valor de ZF = 0.
- DIV BL se utiliza para multiplicar el contenido de AX por BL.
- MOV [DI], AX se usa para mover el contenido de AX a [DI].
- HLT deja de ejecutar el programa y detiene cualquier ejecución posterior.
Publicación traducida automáticamente
Artículo escrito por harshit-chhabra y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA