Mostrando las entradas con la etiqueta Lenguaje de Interfaz. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Lenguaje de Interfaz. Mostrar todas las entradas

domingo, 2 de abril de 2017

Programa 11(16) Imprimir numeros Decimal y Hexadecimal

CR EQU 13
LF EQU 10
IMPRIMIR EQU 9
FIN EQU 4C00H
DOS EQU 21H
TAB EQU 09H
BELL EQU 07H

DATOS SEGMENT
    ENCABEZADO  DB 13,10,13,TAB,TAB,"===================================="
DB 13,10,13,TAB,TAB," PROGRAMA QUE IMPRIME VALORES NUMERICOS DEC Y HEXA"
                DB 13,10,13,TAB,TAB,"===================================",13,10,"$"
    VALOR_1     DW 41D,"$"
    VALOR_2     DW 42D,"$"
    VALOR_3     DW 43D,"$"
    VALOR_4     DW 44D,"$"
    VALOR_5     DW 45D,"$"
    VALOR_6     DW 46,"$"
    VALOR_7     DW 47,"$"
    VALOR_8     DW 48,"$"
    VALOR_9     DW 49,"$"
    VALOR_10    DW 50,"$"
    VALOR_11    DW 31H,"$"
    VALOR_12    DW 32H,"$"
    VALOR_13    DW 33H,"$"
    VALOR_14    DW 34H,"$"
    VALOR_15    DW 35H,"$"
    VALOR_16    DW 36H,"$"
    VALOR_17    DW 37H,"$"
    VALOR_18    DW 38H,"$"
    VALOR_19    DW 39H,"$"
    VALOR_20    DW 40H,"$"
DATOS ENDS

PILA SEGMENT STACK
    DB 64 DUP('0')
PILA ENDS

CODIGO SEGMENT
    EJ10 PROC NEAR
    ASSUME CS:CODIGO,DS:DATOS,SS:PILA
   
    MOV AX,DATOS
    MOV DS,AX
   
    LEA DX,ENCABEZADO
    CALL ESCRIBE
   
    LEA DX, VALOR_1
    CALL ESCRIBE
   
    LEA DX, VALOR_2
    CALL ESCRIBE
   
    LEA DX, VALOR_3
    CALL ESCRIBE
   
    LEA DX, VALOR_4
    CALL ESCRIBE
   
    LEA DX, VALOR_5
    CALL ESCRIBE
   
    LEA DX, VALOR_6
    CALL ESCRIBE
   
    LEA DX, VALOR_7
    CALL ESCRIBE
   
    LEA DX, VALOR_8
    CALL ESCRIBE
   
    LEA DX, VALOR_9
    CALL ESCRIBE
   
    LEA DX, VALOR_10
    CALL ESCRIBE
   
    LEA DX, VALOR_11
    CALL ESCRIBE
   
    LEA DX, VALOR_12
    CALL ESCRIBE
   
    LEA DX, VALOR_13
    CALL ESCRIBE
   
    LEA DX, VALOR_14
    CALL ESCRIBE
   
    LEA DX, VALOR_15
    CALL ESCRIBE
   
    LEA DX, VALOR_16
    CALL ESCRIBE
   
    LEA DX, VALOR_17
    CALL ESCRIBE
   
    LEA DX, VALOR_18
    CALL ESCRIBE
   
    LEA DX, VALOR_19
    CALL ESCRIBE
   
    LEA DX, VALOR_20
    CALL ESCRIBE
   
    CALL SALIR
    EJ10 ENDP
   
    ESCRIBE PROC
    MOV AH,9
    INT 21H
    RET
    ESCRIBE ENDP
   
    SALIR PROC NEAR
    MOV AX,FIN
    INT 21H
    RET
    SALIR ENDP
CODIGO ENDS
END EJ10


programa 10 (15) Valor Area de Datos

CR EQU 13
LF EQU 10
IMPRIMIR EQU 9
FIN EQU 4C00H
DOS EQU 21H
TAB EQU 09H
BELL EQU 07H

DATOS SEGMENT
ENCABEZADO  DB 13,10,13,TAB,TAB,"======================================"
                    DB 13,10,13,TAB,TAB,"       PROGRAMA QUE IMPRIME UN VALOR BINARIO"
                DB 13,10,13,TAB,TAB,"=======================================",13,10,"$"
    VALOR_ASCII DB '21314151', "$"    
DATOS ENDS

PILA SEGMENT STACK
    DB 64 DUP('0')
PILA ENDS

CODIGO SEGMENT
    EJ9 PROC NEAR
    ASSUME CS:CODIGO,DS:DATOS,SS:PILA
   
   MOV AX,DATOS
   MOV DS,AX
 
   LEA DX, ENCABEZADO
   CALL ESCRIBE
 
   LEA DX, VALOR_ASCII
   CALL ESCRIBE
 
   CALL SALIR
 
   EJ9 ENDP
 
   ESCRIBE PROC NEAR
   MOV AH,9
   INT 21H
   RET
   ESCRIBE ENDP
 
   SALIR PROC NEAR
   MOV AX, FIN
   INT DOS
   RET
   SALIR ENDP
 
CODIGO ENDS
END EJ9


programa 9 (14) Letrero de Colores

CR EQU 13
LF EQU 10
BIOS EQU 10H
DOS EQU 21H
TEXTO EQU 3
FIN EQU 4C00H

DATOS SEGMENT
    TITULO DB 'ENSAMBLADOR'
    COLORES DB 01001110B
            DB 01101111B
            DB 00110001B
            DB 01011100B
            DB 00110001B
            DB 01011111B
            DB 01101011B
            DB 01011100B
            DB 01101111B
            DB 01001110B
            DB 00110001B
DATOS ENDS
       
PILA SEGMENT
    DB 64 DUP('PILA')
PILA ENDS

CODIGO SEGMENT
    EJ8 PROC FAR
   
ASSUME CS:CODIGO,DS:DATOS,SS:PILA
    MOV AX,DATOS
    MOV DX,AX
    MOV AX,TEXTO
    INT BIOS
    MOV CX,11
    XOR SI,SI
    BUCLE:
    PUSH CX
    MOV DX,SI
    ADD DX,35
    MOV DH,12
    CALL COLOCA
    MOV AL,[SI+OFFSET TITULO]
    MOV BL,[SI+OFFSET COLORES]
    CALL COLOR
    POP CX
    INC SI
    LOOPNZ BUCLE
    MOV AH,8
    INT DOS
    XOR DX,DX
    CALL COLOCA
    MOV AX,FIN
    INT DOS
    EJ8 ENDP
   
    COLOR PROC
    MOV AH,9
    XOR BH,BH
    INT BIOS
    RET
    COLOR ENDP
   
    COLOCA PROC
    MOV AH,2
    XOR BX,BX
    INT BIOS
    RET
    COLOCA ENDP
   
CODIGO ENDS
END EJ8


programa 8(11) Datos 1 Con Terminacion

CR EQU 13
LF EQU 10
TECLADO EQU 8
IMPRIMIR EQU 9
FIN EQU 4C00H
DOS EQU 21H
BIOS EQU 10H
TAB EQU 09H
BELL EQU 07H

DATOS SEGMENT
    NOMBRE DB 30 DUP(32), '$'
    DIR DB 30 DUP(32),'$'
    TLF DB 15 DUP(30),'$'
    MENS1 DB 'NOMBRE: $'
    MENS2 DB 'DIRECCION: $'
    MENS3 DB 'TELEFONO: $'
    ENTERR DB CR,LF,'$'
DATOS ENDS

PILA SEGMENT STACK
    DB 64 DUP('PILA')
PILA ENDS

CODIGO SEGMENT
    ASSUME CS:CODIGO,DS:DATOS,SS:PILA
    EJ7:
   
    MOV AX,DATOS
    MOV DS,AX
   
    CALL MODO_DE_VIDEO
   
    MOV DX,OFFSET MENS1
    CALL ESCRIBE
   
    MOV SI,OFFSET NOMBRE
    MOV CX,30
    CALL PEDIR
   
    CALL SALTO_DE_LINEA
   
    MOV DX,OFFSET MENS2
    CALL ESCRIBE
   
    MOV SI,OFFSET DIR
    MOV CX,30
    CALL PEDIR
   
    CALL SALTO_DE_LINEA
   
    MOV DX,OFFSET MENS3
    CALL ESCRIBE
   
    MOV SI,OFFSET TLF
    MOV CX,15
    CALL PEDIR
   
    MOV DX, OFFSET ENTERR
    CALL ESCRIBE
    CALL ESCRIBE
    CALL ESCRIBE
   
    MOV DX,OFFSET NOMBRE
    CALL ESCRIBE
   
    CALL SALTO_DE_LINEA
   
    MOV DX,OFFSET DIR
    CALL ESCRIBE
   
    CALL SALTO_DE_LINEA
   
    MOV DX,OFFSET TLF
    CALL ESCRIBE
   
    CALL SALTO_DE_LINEA
   
    CALL SALIR
   
    PEDIR PROC NEAR
   
    BUCLE:
   
    MOV AH,TECLADO
    INT DOS
   
    MOV [SI],AL
    MOV AH,2
    MOV DL,AL
    INT DOS
   
    INC SI
    LOOPNZ BUCLE
   
    RET
 
    PEDIR ENDP
   
    ESCRIBE PROC NEAR
    MOV AH,IMPRIMIR
    INT DOS
    RET
    ESCRIBE ENDP
   
    SALTO_DE_LINEA PROC NEAR
    MOV DX,OFFSET ENTERR
    CALL ESCRIBE
    RET
    SALTO_DE_LINEA ENDP
   
    MODO_DE_VIDEO PROC NEAR
    MOV AX,3
    INT BIOS
    RET
    MODO_DE_VIDEO ENDP
   
    SALIR PROC NEAR
    MOV AX,FIN
    INT DOS
    RET
    SALIR ENDP
   
CODIGO ENDS

END EJ7


programa 7 (8) CLS y Posiciona Cursor

CR     EQU 13
 LF     EQU 10
 TECLADO_8  EQU 8
 IMPRIMIR_9 EQU 9
 FIN_4C00H  EQU 4C00H
 DOS_21H    EQU 21H
 BIOS_10H   EQU 10H
 TAB    EQU 09H
 BELL   EQU 07H

 DATOS SEGMENT
     RENGLON DB 0
     COLUMNA DB 0
     MENSAJE DB CR,LF,'POSICION (x,y),del mensaje: Hola Mundo !',CR,LF,'$'
     DB 'DESPUES DE BORRAR PANTALLA.',CR,LF,'$'
 DATOS ENDS

 PILA SEGMENT STACK
     DW 100 DUP('0')
 PILA ENDS

 CODIGO SEGMENT
     EJ6 PROC FAR
     ASSUME CS:CODIGO,DS:DATOS,SS:PILA
     MOV AX,DATOS
     MOV DS,AX
 
     LEA DX,MENSAJE
   
     CALL LIMPIA_PANTALLA
     CALL POSICIONA_CURSOR
   
     MOV AH,IMPRIMIR_9
     INT DOS_21H
   
     MOV AX, FIN_4C00H
     INT DOS_21H
     EJ6 ENDP
   
     LIMPIA_PANTALLA PROC NEAR
    MOV AX,0600H ; Establecer modo texto y CLS
    MOV BH,14H ; Colores de fondo (negro=0) y texto (verde=A).
    MOV CX,0000H ; Desde el inicio de pantalla
    MOV DX,484FH ; Hasta el fin de la pantalla Reng (48)72 col(79)4F
    INT BIOS_10H ; Interrupci?n que llama al BIOS
    RET
    LIMPIA_PANTALLA ENDP

     POSICIONA_CURSOR PROC NEAR
   
     MOV AH,02
     MOV BH,00
     MOV DH,RENGLON
     MOV DL,COLUMNA
     INT BIOS_10H
     RET
     POSICIONA_CURSOR ENDP
   
 CODIGO ENDS
 END EJ6


Programa 6(7) Posiciona Cursor

CR     EQU 13
 LF     EQU 10
 TECLADO_8  EQU 8
 IMPRIMIR_9 EQU 9
 FIN_4C00H  EQU 4C00H
 DOS_21H    EQU 21H
 BIOS_10H   EQU 10H
 TAB    EQU 09H
 BELL   EQU 07H

 DATOS SEGMENT
     RENGLON DB 0
     COLUMNA DB 07
     MENSAJE DB CR,LF,'POSICION (x,y),del mensaje: Hola Mundo !',CR,LF,'$'
 DATOS ENDS

 PILA SEGMENT STACK
     DW 100 DUP('0')
 PILA ENDS

 CODIGO SEGMENT
     EJ5 PROC FAR
     ASSUME CS:CODIGO,DS:DATOS,SS:PILA
     MOV AX,DATOS
     MOV DS,AX  
     LEA DX,MENSAJE
 
     CALL POSICIONA_CURSOR
   
     MOV AH,IMPRIMIR_9
     INT DOS_21H
     
     EJ5 ENDP

   POSICIONA_CURSOR PROC NEAR
 
     MOV AH,07
     MOV BH,05
     MOV DH,RENGLON
     MOV DL,COLUMNA
     INT BIOS_10H
     RET
     POSICIONA_CURSOR ENDP
   
 CODIGO ENDS
 END EJ5


Programa 5 (6) Limpiar Pantalla

FIN_4C00H EQU 4C00H
DOS_21H EQU 21H
BIOS_10H EQU 10H

PILA SEGMENT STACK
DW 100 DUP('0')
PILA ENDS

CODIGO SEGMENT
;-----------------------------------------------------------------------
EJ4 PROC FAR ; Inicio procedimiento
;-------------------------------------------------------------------
ASSUME CS:CODIGO,SS:PILA
;-------------------------------------------------------------------
CALL LIMPIA_PANTALLA ; Llama a procedimiento para limpiar pantalla.
;-------------------------------------------------------------------
MOV AX,FIN_4C00H ; Fin del programa
INT DOS_21H
;-------------------------------------------------------------------
EJ4 ENDP ; Fin del procedimiento
;-----------------------------------------------------------------------
LIMPIA_PANTALLA PROC NEAR
MOV AX,0600H ; Establecer modo texto y CLS
MOV BH,0AH ; Colores de fondo (negro=0) y texto (verde=A).
MOV CX,0000H ; Desde el inicio de pantalla
MOV DX,484FH ; Hasta el fin de la pantalla Reng (48)72 col(79)4F
INT BIOS_10H ; Interrupci?n que llama al BIOS
RET
LIMPIA_PANTALLA ENDP
;-----------------------------------------------------------------------
CODIGO ENDS
;======================================================================
END EJ4





Programa 4 (5) Hola Mudo Sin Procedimiento

CR EQU 13 ; Constante CR (Retorno de carro) En decimal o
LF EQU 10 ; Constante LF (Salto de l?nea) en hex es igual

; DECLARACION DEL SEGMENTO DE DATOS

DATOS SEGMENT ; Inicio del segmento de datos
    LINEA1 DB CR,LF,'MANUEL ******* ********',CR,LF,'$'
    LINEA2 DB 'PROGRAMA 2',CR,LF,'$'
    LINEA3 DB 'SISTEMAS COMPUTACIONALES',CR,LF,'$'
    LINEA4 DB 'INSTITUTO TECNOLOGICO DE MATAMOROS',CR,LF,'$'
DATOS ENDS ; Fin del segmento de datos

; DECLARACION DEL SEGMENTO DE PILA
   
PILA SEGMENT STACK ; Inicio del segmento de pila
    DB 64 DUP('PILA') ; Inicializaci?n de la pila
PILA ENDS ; Fin del segmento de pila

; DECLARACION DEL SEGMENTO DE CODIGO

CODIGO SEGMENT ; Inicio del segmento de c?digo
EJ2 PROC FAR ; Inicio procedimiento p1_hola
ASSUME CS:CODIGO,DS:DATOS,SS:PILA ; Asignar segmentos
    MOV AX,DATOS ; AX=Direcci?n del segmento de datos
    MOV DS,AX ; DS=AX. Indicar el segmento de datos
    LEA DX,LINEA1 ; DS:DX = direcci?n de MENSAJE
    CALL ESCRIBE ; Llamar al procedimiento ESCRIBE
    LEA DX,LINEA2 ; DS:DX = direcci?n de LINEA2
    CALL ESCRIBE ; Llamar al procedimiento ESCRIBE
    LEA DX,LINEA3 ; DS:DX = direcci?n de LINEA3
    CALL ESCRIBE ; Llamar al procedimiento ESCRIBE
    LEA DX,LINEA4 ; DS:DX = direcci?n de LINEA4
    CALL ESCRIBE ; Llamar al procedimiento ESCRIBE
    MOV AX,4C00H ; Funci?n para terminar el programa
    INT 21H ; y volver al DOS
EJ2 ENDP ; Fin del procedimiento p1_hola

ESCRIBE PROC
MOV AH,9
INT 21H
RET
ESCRIBE ENDP

CODIGO ENDS ; Fin del segmento c?digo

END EJ2 ; Empezar a ejecutar el procedimiento p1_hola


Programa 3 (4) Hola Mundo Con Procedimiento

CR EQU 13 ; Constante CR (Retorno de carro) En decimal o
LF EQU 10 ; Constante LF (Salto de l?nea) en hex es igual

DATOS SEGMENT ; Inicio del segmento de datos
     MENSAJE1 DB CR,LF,'HOLA MUNDO! (CON PROCEDIMIENTO)',CR,LF ,'$'
DATOS ENDS ; Fin del segmento de datos

PILA SEGMENT STACK ; Inicio del segmento de pila
     DB 64 DUP('PILA') ; Inicializaci?n de la pila
PILA ENDS ; Fin del segmento de pila

CODIGO SEGMENT ; Inicio del segmento de c?digo
    EJ3 PROC FAR ; Inicio procedimiento EJ3
ASSUME CS:CODIGO,DS:DATOS,SS:PILA ; Asignar segmentos

    MOV AX,DATOS ; AX=Direcci?n del segmento de datos
    MOV DS,AX ; DS=AX. Indicar el segmento de datos
    LEA DX,MENSAJE1 ; DS:DX = direcci?n de MENSAJE
    CALL ESCRIBE ; Llamar al procedimiento ESCRIBE
    MOV AX,4C00H ; Funci?n para terminar el programa
    INT 21H ; y volver al DOS
EJ3 ENDP ; Fin del procedimiento EJ3

ESCRIBE PROC
MOV AH,9
INT 21H
RET
ESCRIBE ENDP

CODIGO ENDS ; Fin del segmento c?digo

END EJ3


Programa 2 Uso de Constantes

CR EQU 13
LF EQU 10
IMPRIMIR EQU 9
FIN EQU 4C00H
DOS EQU 21H

; DECLARACION DEL SEGMENTO DE DATOS
DATOS SEGMENT
        TEXTO DB 'Ejemplo del uso de constantes.',CR,LF,'$'
DATOS ENDS

; DECLARACION DEL SEGMENTO DE PILA
PILA SEGMENT STACK
        DB 64 DUP('PILA')
PILA ENDS
   
    ; DECLARACION DEL SEGMENTO DE CODIGO

CODIGO SEGMENT
     ASSUME CS:CODIGO,DS:DATOS,SS:PILA
INICIO: MOV AX,DATOS
            MOV DS,AX
            MOV DX,OFFSET TEXTO ; OFFSET retorna la direcci?n de una variable
            MOV AH,IMPRIMIR
            INT DOS
            MOV AX,FIN
            INT DOS
CODIGO ENDS
END INICIO



Programa 1 Hola Mundo

CR EQU 13 ; Constante CR (Retorno de carro) En decimal o
LF EQU 0Ah ; Constante LF (Salto de linea) en hex es igual

; DECLARACION DEL SEGMENTO DE DATOS
   
DATOS SEGMENT ; Inicio del segmento de datos

    MENSAJE DB CR,LF,'? Hola Mundo !',CR,LF,'$'

DATOS ENDS ; Fin del segmento de datos

; DECLARACION DEL SEGMENTO DE PILA

PILA SEGMENT STACK ; Inicio del segmento de pila

    DB 64 DUP('PILA') ; Inicializacion de la pila

PILA ENDS ; Fin del segmento de pila

; DECLARACION DEL SEGMENTO DE CODIGO

CODIGO SEGMENT ; Inicio del segmento de codigo

    Hola PROC FAR ; Inicio procedimiento p1_hola

    ASSUME CS:CODIGO,DS:DATOS,SS:PILA ; Asignar segmentos

        MOV AX,DATOS ; AX=Direccion del segmento de datos
        MOV DS,AX ; DS=AX. Indicar el segmento de datos
        LEA DX,MENSAJE ; DS:DX = direccion de MENSAJE
        MOV AH,9 ; Funcion DOS para escribir texto en pantalla
        INT 21H ; Llamar a la interrupcion del DOS
        MOV AX,4C00H ; Funcion para terminar el programa
        INT 21H ; y volver al DOS
Hola ENDP ; Fin del procedimiento p1_hola

CODIGO ENDS ; Fin del segmento codigo

END Hola ; Empezar a ejecutar el procedimiento p1_hola



2.16.- Operaciones básicas sobre archivos de disco

Servicios de la interrupción 16h para manejo del teclado. 

Función 00h. 
Lee un carácter. Esta función maneja las teclas del teclado de 83 teclas, 
pero no acepta entrada de las teclas adicionales en el teclado ampliado de 101 teclas. 
Retorna en al el carácter, ah el código de rastreo si al=0 es una tecla de función 
extendida. 

Función 01h. 
Determina si un carácter esta presente. 

Función 02h. 
Regresa el estado actual de las teclas shift. 

Función 10h. 
Lectura de un carácter del teclado. 

Función 11h. 
Determina si esta presente un carácter. 

MOVS. 
Mueve un byte, palabra o palabra doble desde una localidad en memoria 
direccionada por SI a otra localidad direccionada por DI. 

LODS.
Carga desde una localidad de memoria direccionada por SI un byte en AL, una 
palabra en AX o una palabra doble en EAX. 

STOS.
Almacena el contenido de los registros AL, AX, o EAX en la memoria direccionada 
por SI. 

CMPS. 
Compara localidades de memoria de un byte, palabra o palabra doble 
direccionadas por SI, DI. 

SCAS. 
Compara el contenido de AL, AX o EAX con el contenido de una localidad de 
memoria direccionada por SI.

Referencias Bibliograficas:
http://documents.mx/documents/unidad-2-lenguaje-de-interfaz.html
http://itpn.mx/recursosisc/6semestre/lenguajesdeinterfaz/Unidad%20II.pdf
https://es.slideshare.net/KILLERMSTR/prez-camacho-jess-asmeth
http://lenguajes-interfaz-2013.blogspot.mx/2014/03/unidad-ii-programacion-basica.html
http://lenguajesdeinterfazitsncg.blogspot.mx/2015/05/ensamblador-y-ligador-utilizar.html

2.15.- Captura y almacenamiento de datos numéricos

Esta representación esta basada en la notación científica, esto es, representar un número en dos partes: su mantisa y su exponente. 

Poniendo como ejemplo el número 1234000, podemos representarlo como 1.123*10^6, en esta última notación el exponente nos indica el número de espacios que hay que mover el espacio hacia la derecha para obtener el resultado original. 

En caso de que el exponente fuera negativo nos estaría indicando el número de espacios que hay que recorrer el punto decimal hacia la izquierda para obtener el original. 

Proceso de creación de un programa 

Para la creación de un programa es necesario seguir cinco pasos: diseño del algoritmo, codificación del mismo, su traducción a lenguaje máquina, la prueba del programa y la depuración.

En la etapa de diseño se plantea el problema a resolver y se propone la mejor solución, creando diagramas esquemáticos útilizados para el mejor planteamiento de la solución. 

 La codificación del programa consiste en escribir el programa en algún lenguaje de programación; en este caso específico en ensamblador, tomando como base la solución propuesta en el paso anterior.

 La traducción al lenguaje máquina es la creación del programa objeto, esto es, el programa escrito como una secuencia de ceros y unos que pueda ser interpretado por el procesador.

 La prueba del programa consiste en verificar que el programa funcione sin errores, o sea, que haga lo que tiene que hacer. 

Referencias Bibliograficas:

http://documents.mx/documents/unidad-2-lenguaje-de-interfaz.html
http://itpn.mx/recursosisc/6semestre/lenguajesdeinterfaz/Unidad%20II.pdf
https://es.slideshare.net/KILLERMSTR/prez-camacho-jess-asmeth
http://lenguajes-interfaz-2013.blogspot.mx/2014/03/unidad-ii-programacion-basica.html
http://lenguajesdeinterfazitsncg.blogspot.mx/2015/05/ensamblador-y-ligador-utilizar.html

2.14.- Obtención de una cadena con la representación hexadecimal

La conversión entre numeración binaria y hexadecimal es sencilla. Lo primero que se hace para una conversión de un número binario a hexadecimal es dividirlo en grupos de 4 bits, empezando de derecha a izquierda. En caso de que el último grupo (el que quede más a la izquierda) sea menor de 4 bits se rellenan los faltantes con ceros. 

Tomando como ejemplo el número binario 101011 lo dividimos en grupos de 4 bits y nos queda: 

10; 1011

 Rellenando con ceros el último grupo (el de la izquierda):

0010; 1011 

después tomamos cada grupo como un número independiente y consideramos su valor en decimal: 

0010 = 2; 1011 = 11 

Pero como no podemos representar este número hexadecimal como 211 porqué sería un error, tenemos que sustituir todos los valores mayores a 9 por su respectiva representación en hexadecimal, con lo que obtenemos: 

2BH (Donde la H representa la base hexadecimal) 

Para convertir un número de hexadecimal a binario solo es necesario invertir estos pasos: se toma el primer dígito hexadecimal y se convierte a binario, y luego el segundo, y así sucesivamente hasta completar el número. 

Referencias Bibliograficas:

http://documents.mx/documents/unidad-2-lenguaje-de-interfaz.html
http://itpn.mx/recursosisc/6semestre/lenguajesdeinterfaz/Unidad%20II.pdf
https://es.slideshare.net/KILLERMSTR/prez-camacho-jess-asmeth
http://lenguajes-interfaz-2013.blogspot.mx/2014/03/unidad-ii-programacion-basica.html
http://lenguajesdeinterfazitsncg.blogspot.mx/2015/05/ensamblador-y-ligador-utilizar.html

2.13.- Desplazamiento y rotación












De manera similar a RCR, RCL también provoca que la bandera de acarreo participe en la rotación. Cada bit que se desplaza fuera por la izquierda se mueve al CF, y el bit del CF se mueve a la posición vacante de la derecha. Puede usar la instrucción JC (salta si hay acarreo) para comprobar el bit rotado hacia la CF en el extremo de una operación de rotación. Tomado de: Tutorial de Lenguaje Ensamblador

Referencias Bibliograficas:
http://documents.mx/documents/unidad-2-lenguaje-de-interfaz.html
http://itpn.mx/recursosisc/6semestre/lenguajesdeinterfaz/Unidad%20II.pdf
https://es.slideshare.net/KILLERMSTR/prez-camacho-jess-asmeth
http://lenguajes-interfaz-2013.blogspot.mx/2014/03/unidad-ii-programacion-basica.html
http://lenguajesdeinterfazitsncg.blogspot.mx/2015/05/ensamblador-y-ligador-utilizar.html

2.12.- Instrucciones lógicas

AND





Referencias Bibliograficas:
http://documents.mx/documents/unidad-2-lenguaje-de-interfaz.html
http://itpn.mx/recursosisc/6semestre/lenguajesdeinterfaz/Unidad%20II.pdf
https://es.slideshare.net/KILLERMSTR/prez-camacho-jess-asmeth
http://lenguajes-interfaz-2013.blogspot.mx/2014/03/unidad-ii-programacion-basica.html
http://lenguajesdeinterfazitsncg.blogspot.mx/2015/05/ensamblador-y-ligador-utilizar.html


2.11.- Obtención de cadena con representación decimal

En este modo, los datos son proporcionados directamente como parte de la instrucción.

Ejemplo:

Mov AX,34h ;

Copia en AX el número 34h hexadecimal Mov CX,10 ;

Copia en CX el número 10 en decimal
.COMMENT
Programa: PushPop.ASM
Descripción: Este programa demuestra el uso de las instrucciones para el manejo de la pila, implementando la instrucción XCHG con Push y Pop
MODEL tiny
.CODE

Inicio: ;Punto de entrada al programa
Mov AX,5 ;AX=5
Mov BX,10 ;BX=10
Push AX ;Pila=5
Mov AX,BX ;AX=10
Pop BX ;BX=5
Mov AX,4C00h ;Terminar programa y salir al DOS
Int 21h ;
END Inicio
END

Referencias Bibliograficas:

http://documents.mx/documents/unidad-2-lenguaje-de-interfaz.html
http://itpn.mx/recursosisc/6semestre/lenguajesdeinterfaz/Unidad%20II.pdf
https://es.slideshare.net/KILLERMSTR/prez-camacho-jess-asmeth
http://lenguajes-interfaz-2013.blogspot.mx/2014/03/unidad-ii-programacion-basica.html
http://lenguajesdeinterfazitsncg.blogspot.mx/2015/05/ensamblador-y-ligador-utilizar.html

2.10.- Manipulación de la pila

La pila es un grupo de localidades de memoria que se reservan con la finalidad de proporcionar un espacio para el almacenamiento temporal de información.

La pila de los programas es del tipo LIFO (Last In First Out, Ultimo en entrar, Primero en salir).
Para controlar la pila el microprocesador cuenta con dos instrucciones básicas:
Push (Meter) y Pop (sacar).

El formato de estas instrucciones es el siguiente:
  • Push operando
  • Pop operando 
Cuando se ejecuta la instrucción Push, el contenido del operando se almacena en la ultima posición de la pila. Por ejemplo, si AX se carga previamente con el valor 5, una instrucción Push AX almacenaría el valor 5 en la ultima posición de la pila.

Por otro lado la instrucción Pop saca el último dato almacenado en la pila y lo coloca en el operando.
Siguiendo el ejemplo anterior, la instrucción Pop BX obtendría el número 5 y lo almacenaría en el registro BX. El siguiente ejemplo muestra como implementar la instrucción XCHG por medio de las instrucciones Push y Pop. Recuerde que la instrucción XCHG intercambia el contenido de sus dos operandos. 

.COMMENT
Programa: PushPop.ASM
Descripción: Este programa demuestra el uso de las instrucciones para el manejo de la pila, implementando la instrucción XCHG con Push y Pop
MODEL tiny
.CODE
Inicio: ;Punto de entrada al programa
Mov AX,5 ;AX=5
Mov BX,10 ;BX=10
Push AX ;Pila=5
Mov AX,BX ;AX=10
Pop BX ;BX=5
Mov AX,4C00h ;Terminar programa y salir al DOS
Int 21h ;
END Inicio
END
-ROT (a b c – c a b) Rota hacia atrás. 
-2ROT (ab cd ef – ef ab cd) Rota hacia atrás. 
NIP ( a b – b) Quita a de la pila. 
OUTK (... n -- ..) Elimina el elemento n. 
TUCK (a b -- b a b) Inserta una copia de b. 
2?DUP (ab – ab ab) Duplica si ab <> 0. 
2DROP (ab -- ) Elimina 2 de encima. 
2DUP ( ab – ab ab) Duplica los elementos. 
2NIP (ab cd – cd) Elimina elementos. 
2OUTK (::: n -- ::) Elimina el elemento n 
2OVER (ab cd – ab cd ab) Inserta una copia de ab. 
2PICK (:: n -- :::) Copia el elemento n 
encima de la pila. 
2ROLL (::: n -- :::) Quita el elemento n y 
lo deja arriba de la pila. 
2ROT (ab cd ef – cd ef ab) Rota los elementos 
2TUCK (ab cd – cd ab cd) Inserta una copia de cd. 
2SWAP (ab cd – cd ab) Rota los elementos.

Referencias Bibliograficas:
http://documents.mx/documents/unidad-2-lenguaje-de-interfaz.html
http://itpn.mx/recursosisc/6semestre/lenguajesdeinterfaz/Unidad%20II.pdf
https://es.slideshare.net/KILLERMSTR/prez-camacho-jess-asmeth
http://lenguajes-interfaz-2013.blogspot.mx/2014/03/unidad-ii-programacion-basica.html
http://lenguajesdeinterfazitsncg.blogspot.mx/2015/05/ensamblador-y-ligador-utilizar.html


2.9.- Instrucciones aritméticas

ADC 
Adición con acarreo. 

Sintaxis: ADC destino, fuente 
Lleva a cabo la suma de dos operandos y suma uno al resultado en caso de que la  bandera CF esté activada, esto es, en caso de que exista acarreo.  El resultado se guarda en el operando destino. 

ADD 
Adición de los operandos. 

Sintaxis: ADD destino, fuente 
Suma los dos operandos y guarda el resultado en el operando destino. 

DIV 
División sin signo 

Sintaxis: DIV fuente 
El divisor puede ser un byte o palabra y es el operando que se le da a la instrucción.  Si el divisor es de 8 bits se toma como dividendo el registro de 16 bits AX y si el divisor es  de 16 bits se tomara como dividendo el registro par DX:AX, tomando como palabra alta  DX y como baja AX.  Si el divisor fue un byte el cociente se almacena en el registro AL y el residuo en AH, si fué 
una palabra el cociente se guarda en AX y el residuo en DX. 

IDIV 
División con signo 

Sintaxis: IDIV fuente Consiste basicamente en lo mismo que la instrucción DIV, solo que 
esta última realiza la operación con signo. 

MUL 
Multiplicación sin signo 

Sintaxis: MUL fuente El ensamblador asume que el multiplicando sera del mismo 
tamaño que el del multiplicador, por lo tanto multiplica el valor almacenado en el 
registro que se le da como operando por el que se encuentre contenido en AH si el 
multiplicador es de 8 bits o por AX si el multiplicador es de 16 bits.  Cuando se realiza una multiplicación con valores de 8 bits el resultado se almacena en el  registro AX y cuando la multiplicación es con valores de 16 bits el resultado se almacena  en el registro par DX:AX.}  

IMUL 
Multiplicación de dos enteros con signo. 

Sintaxis: IMUL fuente 
Este comando hace lo mismo que el anterior, solo que si toma en cuenta los signos de las 
cantidades que se multiplican.  Los resultados se guardan en los mismos registros que en la instrucción MUL. 

SBB 
Sbstracción con acarreo 

Sintaxis: SBB destino, fuente 
Esta instrucción resta los operandos y resta uno al resultado si CF está activada. El 
operando fuente siempre se resta del destino.  Este tipo de substracción se utiliza cuando se trabaja con cantidades de 32 bits. 

SUB 
Substracción 
Sintaxis: SUB destino, fuente 
Resta el operando fuente del destino.

Referencias Bibliograficas:

http://documents.mx/documents/unidad-2-lenguaje-de-interfaz.html
http://itpn.mx/recursosisc/6semestre/lenguajesdeinterfaz/Unidad%20II.pdf
https://es.slideshare.net/KILLERMSTR/prez-camacho-jess-asmeth
http://lenguajes-interfaz-2013.blogspot.mx/2014/03/unidad-ii-programacion-basica.html
http://lenguajesdeinterfazitsncg.blogspot.mx/2015/05/ensamblador-y-ligador-utilizar.html

2.8.- Captura de cadenas con formato










Decrementa en 2 el valor del registro SP y luego se transfiere el contenido del registro de banderas a la pila, en la dirección indicada por SP. Las banderas quedan almacenadas en memoria en los mismos bits indicados en el comando POPF

Referencias Bibliograficas:

http://documents.mx/documents/unidad-2-lenguaje-de-interfaz.html
http://itpn.mx/recursosisc/6semestre/lenguajesdeinterfaz/Unidad%20II.pdf
https://es.slideshare.net/KILLERMSTR/prez-camacho-jess-asmeth
http://lenguajes-interfaz-2013.blogspot.mx/2014/03/unidad-ii-programacion-basica.html
http://lenguajesdeinterfazitsncg.blogspot.mx/2015/05/ensamblador-y-ligador-utilizar.html