Sistema para realizar resta de dos números binarios en 16 bits
Escriba el primer numero binario.
Leer "n1 - n16"
Escribir el segundo numero binario
Leer "b1 - b16"
Escribir n1-n16
Operación
Repetir "b1>b16" Si "b1>b16"=0 Escribir b
hasta que b=1
Si b=0 entonces Escribir 1
Sino Escribir 0
Resultado= n1>n16 + b1>b16
Si Resultado = 17 núm. = Resultado+1
Sino Entonces 1=0 y 0=1
Escribir Resultado.
domingo, 10 de enero de 2016
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.
- 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]
- 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.
- 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).
- 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.
- 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.
Suscribirse a:
Entradas (Atom)