Problema: escriba un programa para transferir un bloque de 4 bytes, la dirección inicial es 0500 y transfiera el bloque a la dirección 0600 utilizando instrucciones de string.
Ejemplo –
Suposiciones: suponga que hay 4 bloques en las direcciones de memoria 0500, 0501, 0502, 0503.
Algoritmo –
- Asignar valor 500 en SI y 600 en DI
- Asigne el valor 0000 H a AX
- Mover el contenido de AX en DS
- Mover el contenido de AX en ES
- Asigne el valor 0004 H a CX
- Borrar la bandera direccional
- Repetir hasta CX=0, Mover bloque de string
- Paralización del programa
Programa –
DIRECCIÓN DE MEMORIA | MNEMOTÉCNICA | COMENTARIOS |
---|---|---|
0400 | MOV SI, 500 | SI <- 500 |
0403 | MOV DI, 600 | ED <- 600 |
0406 | HACHA MOV, 0000 | HACHA <- 0000 |
0409 | MOV DS, HACHA | DS <-AX |
040B | MOVIMIENTOS, HACHA | ES <-AX |
040D | MOV CX, 0004 | CX <- 0004 |
0410 | CLD | BANDERA DIRECCIONAL CLARO |
0411 | REPS | REPETIR HASTA CX=0 |
0412 | MOVSB | MOVER EL BLOQUE |
0413 | HLT | FIN DEL PROGRAMA |
Explicación –
- MOV SI, 500 asigna 500 a SI
- MOV DI, 600 asigna 600 a DI
- MOV AX, 00 asigna 0000 al registro AX
- MOV DS, AX mueve el contenido de AX al segmento DS
- MOV ES, AX mueve el contenido de AX al segmento ES
- MOV CX, 0004 asigna 0000 al registro CX
- CLD borrar la bandera direccional
- REP repetir hasta CX=0
- MOVSB mover bloque de string
- HLT detiene la ejecución del programa.
Publicación traducida automáticamente
Artículo escrito por anamika9988 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA