No nombraste que procesador es, es x86 seguro, pero algo vamos a hacer.
Siguiendo tu programa. (Suponiendo que todo es hexadecimal )
- Tu enunciado dice que tenes el dato inicial en 2200, pero vos estas cargando 1100
- El MOV del SI, lo que haces es mover el contenido del SI y no lo que apunta.
- En el salto si esta activo el OF, usas "ETIQUETA 3" con un espacio, el cual no existe. Es sin espacio
- Haces referencia a ETIQUETA 1, la cual no existe y el correcto es ETIQUETA sola.
- Estas usando AX que es de 16 bits, asi que jamas va a ocurrir el overflow/carry. Mejor usar AL y quedarnos en 8bits
- Como son numeros sin signos, usar el flag de carry, el flag de Overflow es para numeros con signos. ( Esta regla para mantenerlo simple al punto )3
- Cargas 4 en CL, y luego usas CX al decrementar, no sabes que posee CH, por lo tanto usamos CL en ambos.
ETIQUETA3 esta sin sentido:
MOV SI, 2200h
MOV DI, 2100h
MOV CL, 4h
ETIQUETA
MOV AL, [SI]
ADD AL, 8h
JNC ETIQUET2
MOV AL, 80h
ETIQUET2
MOV [DI], AL
INC SI
INC DI
DEC CL
JNZ ETIQUETA
INT 20h