Problema – Escriba un programa en lenguaje ensamblador en un microprocesador 8086 para buscar un número en una string de 5 bytes, almacene el desplazamiento donde se encuentra el elemento y el número de iteraciones utilizadas para encontrar el número.
Ejemplo –
Algoritmo –
- Mueva 2000 en AX y asígnelo a ES
- Asignar valor 600 a DI
- Mueve 25 en AL
- Mover 0005 en CX
- Mover el contenido de CX a BX
- Borrar el valor de la bandera direccional (DF)
- Repita el paso 7 hasta que la bandera cero (ZF) no esté configurada
- Escanee el byte de [DI] y verifique su diferencia con el contenido de AL. Actualizar el valor de DI
- Disminuye el valor de DI en 1
- Restar el valor de BX por CX
- Disminuye el valor de BX en 1
- detener el programa
Programa –
COMPENSAR | MNEMOTÉCNICA | COMENTARIO | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
400 | HACHA MOV, 2000 | HACHA <- 2000 | |||||||||||||||||||||||||||
403 | MOVIMIENTOS, HACHA | ES <-AX | |||||||||||||||||||||||||||
405 | MOV DI, 600 | ED <- 600 | |||||||||||||||||||||||||||
408 | MOV AL, 25 | LA = 25 | 40A | MOV CX, 0005 | CX = 0005 | 40D | MOV BX, CX | BX <- CX | 40F | CLD | DF = 0 para que se acceda a la memoria desde el byte inferior al byte superior |
410 | REPNE SCAS B | Repita hasta ZF = 0. Escanee el valor de [DI] y compárelo con AL, Incremente DI |
414 | DIC DI | ED = ED – 1 | 415 | MOV DX, DI | DX = DI | 417 | SUB BX, CX | BX = BX – CX | 419 | Caja de diciembre | BX = BX – 1 | 41B | HLT | Deténgase |
Explicación –
- MOV AX, 2000 se utiliza para mover datos al registro AX.
- MOV ES, AX se usa para mover los datos de AX al registro de segmento ES.
- MOV DI, 600 se usa para mover el desplazamiento 600 al índice de destino (DI).
- MOV AX, 25 se utiliza para mover datos a AL.
- MOV CX, 0005 se usa para mover datos a CX.
- MOV BX, CX se utiliza para copiar contenidos de CX a BX.
- CLD se utiliza para borrar el valor de la bandera direccional (DF), de modo que se acceda a la memoria desde el byte inferior al byte superior.
- REPNE SCAS B se usa para escanear datos de DI y compararlos con datos de AL, si son iguales, vaya al siguiente paso; de lo contrario, incremente el valor de DI en 1 y repita este paso.
- DEC DI se utiliza para disminuir el contenido de DI en 1.
- MOV DX, DI se usa para mover el contenido de DI a DX.
- SUB BX, CX se usa para restar el contenido de BX por CX.
- DEC BX se usa para disminuir el contenido de BX en 1.
- 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