Instrucciones de control.
Instrucciones de transferencia de control (No afectan los flags):
- JMP label
- Saltar hacia la dirección label.
- CALL label
- Ir al procedimiento cuyo inicio es label. Para llamadas dentro del mismo segmento equivale a PUSH IP: JMP label, mientras que para llamadas entre segmentos equivale a PUSH CS: PUSH IP: JMP label.
- RET
- Retorno de procedimiento.
- RET inmed
- Retorno de procedimiento y SP <- SP + inmed.
Variaciones de la instrucción de retorno:
- RETN [inmed]
- En el mismo segmento de código. Equivale a POP IP [:SP <- SP + inmed].
- RETF [inmed]
- En otro segmento de código. Equivale a POP IP: POP CS [:SP <- SP + inmed]
Saltos condicionales aritméticos (usar después de CMP):
- Aritmética signada (con números positivos, negativos y cero)
- JL etiqueta/JNGE etiqueta
- Saltar a etiqueta si es menor.
- JLE etiqueta/JNG etiqueta
- Saltar a etiqueta si es menor o igual.
- JE etiqueta
- Saltar a etiqueta si es igual.
- JNE etiqueta
- Saltar a etiqueta si es distinto.
- JGE etiqueta/JNL etiqueta
- Saltar a etiqueta si es mayor o igual.
- JG etiqueta/JNLE etiqueta
- Saltar a etiqueta si es mayor.
- Aritmética sin signo (con números positivos y cero)
- JB etiqueta/JNAE etiqueta
- Saltar a etiqueta si es menor.
- JBE etiqueta/JNA etiqueta
- Saltar a etiqueta si es menor o igual.
- JE etiqueta
- Saltar a etiqueta si es igual.
- JNE etiqueta
- Saltar a etiqueta si es distinto.
- JAE etiqueta/JNB etiqueta
- Saltar a etiqueta si es mayor o igual.
- JA etiqueta/JNBE etiqueta
- Saltar a etiqueta si es mayor.
Saltos condicionales según el valor de los indicadores:
- JC label
- Saltar si hubo arrastre/préstamo (CF = 1).
- JNC label
- Saltar si no hubo arrastre/préstamo (CF = 0).
- JZ label
- Saltar si el resultado es cero (ZF = 1).
- JNZ label
- Saltar si el resultado no es cero (ZF = 0).
- JS label
- Saltar si el signo es negativo (SF = 1).
- JNS label
- Saltar si el signo es positivo (SF = 0).
- JP/JPE label
- Saltar si la paridad es par (PF = 1).
- JNP/JPO label
- Saltar si la paridad es impar (PF = 0).
Saltos condicionales que usan el registro CX como contador:
- LOOP label
- Operación: CX <- CX-1. Saltar a label si CX<>0.
- LOOPZ/LOOPE label
- Operación: CX <- CX-1. Saltar a label si CX <> 0 y ZF = 1.
- LOOPNZ/LOOPNE label
- Operación: CX <- CX-1. Saltar a label si CX <> 0 y ZF = 0.
- JCXZ label
- Operación: Salta a label si CX = 0.
Interrupciones:
- INT número
- Salva los flags en la pila, hace TF=IF=0 y ejecuta la interrupción con el número indicado.
- INTO
- Interrupción condicional. Si OF = 1, hace INT 4.
- IRET
- Retorno de interrupción. Restaura los indicadores del stack.
- Entre 20 y 200 lineas de código.
- Cada modulo realiza una tarea en su totalidad.
- Optimización de diseño.
- Programación modular: Consiste en dividir un programa en unidades mas pequeñas.
- Diseño descendiente. Establecer la jerarquía de la programación modular.
- Diagrama estructurado.
- Código estructurado. Diagramas de flujo y seudocodigo.
No hay comentarios:
Publicar un comentario