Anda di halaman 1dari 12

1.

Defina las tres clases de segmentos de un programa en ensamblador Segmento de cdigo: contiene las instrucciones de mquina que son ejecutadas. (Registro SC es el encargado de direccionar este segmento). Segmento de datos: contiene datos, constantes y areas de trabajo definidos por el programa. (Registro DS es el encargado de direccionar este segmento). Segmento de pila: contiene los datos y direcciones que se necesitan para guardar temporalmente y para el uso de las subrutinas. a) Tamao mximo de c/segmento La arquitectura de los procesadores x86 obliga al uso de segmentos de memoria para manejar la informacin, el tamao de estos segmentos es de 64k. b) Limite de direccin que indica c/u Un segmento inicia en un lmite de prrafo, que es una direccin (divisible entre 16d, o 10 h)

2. Indique y defina los elementos bsicos de una computadora ALU(UNIDAD ARITMETICA LOGICA). Es la unidad encargada de realizar operaciones aritmticas y lgicas de una cpu UNIDAD DE CONTROL (UC). Busca instrucciones en la memoria principal, decodifica y ejecuta REGISTROS. Es la suma de los registros en cdigo hexadecimal 3. Definicin y ejemplo de los diferentes tipos de direccionamiento DIRECCIONANIENTO: son medios que facilitan la tarea de programacin a la vez que permiten el acceso a los datos y a los cuerpos de entrada y salida de una manera natural y eficiente, su modo de direccionamiento permite obtener la direccin efectiva, 1. Direccionamiento de registro. En este direccionamiento sus operandos se encuentran almacenados en cualquiera de los registros de propsito general o en los registros de segmento. Ejemplo: add ax,bx 2. Direccionamiento inmediato. En este direccionamiento el operando se encuentra almacenado inmediatamente despus de la instruccin por lo cual no se necesita calcular la direccin efectiva. Ejemplo: cmp ah,6 3. Direccionamiento directo. En este direccionamiento la direccin del operando se encuentra contenida en la instruccin, esta direccin es sumada a la base del segmento de datos para obtener la direccin efectiva. Ejemplo: mov cx, [100] 4. Direccionamiento indirecto. Se utilizan los registros SI, DI o DX para proporcionar de manera indirecta la direccin del operando. Esta direccin es tomada de cualquiera de los registros ya mencionados y es sumada a la base del segmento de datos para obtener la direccin efectiva sel operando. Ejemplo: mov bx, [si] 5. Direccionamiento de datos. En este caso se establece una base a travs del registro BX o del registro BP, a partir de la cual se tomarn los datos del segmento de datos o del segmento de stack. El contenido de cualquiera de los dos registros es una direccin que ser sumada a un desplazamiento contenido en la instruccin y al registro que apunta a la direccin inicial del segmento correspondiente. Si se utiliza el registro BX se tomar como base del segmento el registro DS. Si se utiliza el registro BP la base del segmento ser el registro SS. Ejemplo: add ax, [bx+20] 6. Direccionamiento indexado. En este direccionamiento se utilizan los registros de ndice SI o DI para calcular la direccin efectiva de un operando a travs de la suma del registro ndice con el desplazamiento contenido en la instruccin, aqu se involucra el registro que apunta a la direccin inicial del segmento de datos. Ejemplo: add bx, [si+34] 7. Direccionamiento de base indexada o indexado con base . En este direccionamiento se utiliza el registro de base BX y el registro de ndice SI para el clculo de la direccin efectiva a travs de la suma con un desplazamiento contenido en la instruccin y con la direccin inicial del segmento de datos. Ejemplo: add dx, [bx+si+10] 4. Funcin del STACK Mantener un espacio para el almacenamiento temporal de direcciones y datos 5. Describir los registros de propsito general Registro AX: Es el acumulador principal, es utilizado para operaciones que implican e/s y la mayor parte de la aritmtica Registro BX: Registro base, ya que es el nico que puede ser un ndice para direccionamiento indexado Registro CX: Registro contador, puedecontener un valor para controlar el nmero de veces que un ciclo se repite. 6. Registro DX: Registro de datos, es requerido para operaciones de e/s ESTADO CF(B, DE ACARREO). Contiene un acarreo (0,1) en el bit de orden alto OF (B. DE DESBORDAMIENTO), (aritmtica), contiene un acarreo interno y un externo en el bit de signo de alto oden ZF (B. DE CERO) Cuando el resultado no es 0 pone 1, y cuando es cero pone 1

PF(B, DE PARIDAD), (numero par de bits) indica par o impar de bits en las operaciones de datos de 8 bits SF (B, DE SIGNO), bandera de resultado o comparacin negativa (0= positivo, 1=negativo) AF(B, DE ACARREO AUXILIAR) Indica si hay necesidad de ajuste en operaciones aritmticas con #BCD(cdigo binario decimal) CONTROL DF (B, DE DIRECCION) Controla la direccin de las operaciones de cadenas en caracteres incrementando o excrementando automticamente los registros TF(B, DE TRAMPA), Controla las operaciones de modo paso a paso, usado por el programa DEBUG IF(B, INTERRUPCION). Indica si estn permitidas las interrupciones de dispositivos externos (hay interrupcin cuando esta en 1, cuando esta en 0 no hay)

Codifique las instrucciones en 11 10 9 8 7 6 5 4 3 2 1 0 lenguaje ensamblador para mover el numero 25 a los registros CH, CL, CX o d i t s z a p c Mov ch,25 mov cl,25 8. Desarrolle un programa en ensamblador que usando direccionamiento de registro, permita sumar hexadecimales 21h y 33h y guarde el resultado en DX Mov dl,21h Add dl,33h Mov dh,00 9. Escriba la estructura y funcionamiento de la directiva ASSUME Es la directiva, es usada para direccionar cada segmento en el programa ss- stacksegment 10. Escriba los pasos para hacer el ensamble y ligado de un programa. Crea un programa fuente en ensamblador (.ASM) Ensambla el programa fuente, y crea el programa objeto (.obj) Enlaza el programa objeto y crea un programa ejecutable (prog .exe) Carga y ejecuta al programa (.exe) 11. Describa la estructura de un programa de ensamblador y cada parte que lo compone 7. PAGE 60,132 TITLE PROGR ;::: STACKSG SEGMENT PARA STACK Stack STACKSG END ;:::: DATASG SEGMENT PARA Data .. DATASG ENDS ;::: CODESG SEGMENT PARA Code BEGIN PROC FAR ASSUME SS: STACKSG, DS: DATASG, CS:CODESG MOV AX, DATASG ; Obtiene direccin del segmento de datos MOV DS, AX ; Almacena la direccin en DS MOV AX, 4C00H ; Peticion INT 21H ; Salida a dos BEGIN ENDP CODESG ENDS END BEGIN 12. Describa el uso de la instruccin CMP y las banderas que activa. Es usado para comparar 2 campos donde 1 o ambos estn contenidos en los registros y afecta a las banderas AF, CF, OF, PF, SF, ZF 13. Describe la instruccin JLE Salta si es menor o igual 14. Cules son los registros utilizados para la instruccin CMPSW SI, y DI Explique qu registros se utilizan para los siguientes propsitos: a) Sumar y restar : ax, bx b) contar los ciclos c) multiplicar y dividir d) segmentos de direccionamiento

e) indicacin de un resultado igual a cero f) desplazamiento de direccin de una instruccin que se va a ejecutar 15. Segmento: rea especial de un programa que inicia en un lmite de prrafo es decir en una localidad regularmente divisible entre 16 o 10h. REGISTROS Los registros del procesador se emplean para controlar instrucciones en ejecucin, manejar direccionamiento de memoria y proporcionar capacidad aritmtica. Los registros son espacios fsicos dentro del microprocesador con capacidad de 4 bits hasta 64 bits dependiendo del microprocesador que se emplee. Los registros se dividen en: **Registros de segmento **Registros de apuntadores de instrucciones **Registros apuntadores **Registros de propsitos generales **Registro ndice **Registro de bandera. Registros de segmento. Se utiliza para alinear en un limite de prrafo o dicho de otra forma codifica la direccin de inicio de cada segmento y su direccin en un registro de segmento supone cuatro bits 0 a su derecha, tiene 16 bits de longitud y facilita un rea de memoria para direccionamientos conocidos como el segmento actual. Los registros de segmento son: **Registro CS **Registro DS **Registro SS **Registro ES **Registro FS y GS Registro CS. Contiene la direccin inicial del segmento de cdigo, por lo que puede ser visto como el registro base dentro del segmento de cdigo. Registro DS. Contiene la direccin inicial del segmento de datos. Registro SS. Contiene la direccin inicial del segmento de pila. Registro ES Contiene la direccin inicial del segmento extra. Registros FS y GS. Son registros extra de segmento en los procesadores 80386y posteriores a estos procesadores. Registro Apuntador de instrucciones.(IP) El registro apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento de direccin de la siguiente instruccin que se ejecuta. El registro IP esta asociado con el registro CS en el sentido de que el IP indica la instruccin actual dentro del segmento de cdigo que se esta ejecutando actualmente. Registros apuntadores. Los registros apuntadores estn asociados con el registro SS y permiten al procesador accesar datos en el segmento de pila los registros apuntadores son dos: **El registro SP **El registro BP Registro SP. El apuntador de pila IP de 16 bits esta asociado con el registro SS y proporciona un valor de desplazamiento que se refiere a la palabra actual que esta siendo procesada en la pila. Registro BP. El registro BP de 16 bits facilita la referencia de parmetros, los cuales son datos y direcciones transmitidos va lapida. SP y BP, ambos utilizados para el manejo de informacin dentro del stack. El registro SP es el offset dentro del stack. Registros de propsitos generales. Los registros de propsitos generales AX, BX, CX y DX son los caballos de batalla o las herramientas del sistema. Son los nicos en el sentido de que se puede direccionarlos como una palabra o como una parte de un byte. El ultimo byte de la izquierda es la parte "alta", y el ultimo byte de la derecha es la parte "baja" Registro ndice. Los registros SI y DI estn disponibles para direccionamientos indexados y para sumas y restas. Que son las operaciones de punta. Registro SI. (Indice fuente). Utilizado para manejar datos dentro del segmento de datos o para manejar informacin Registro DI. (Indice Destino). Utilizado para manejar informacin dentro del segmento extra. Registro de bandera. Los registros de banderas sirven parar indicar el estado actual de la maquina y el resultado del procesamiento, Cuando algunas instrucciones piden comparaciones o clculos aritmticos cambian el estado de las banderas. INTERRUPCIONES DEL INT 21H Funciones de la interrupcin 21h que permiten E/S 01h Acepta un carcter desde el buffer de teclado, si no esta presente ninguna espera una entrada desde el teclado.

Mov ah,01H-------Int 21h (AL. Un numero distinta de 0 indica el carcter ASCII tecleado AL=0 se ha tecleado una tecla extendida) Lee un carcter del teclado con ECHO. Regresa en AL el ascii dek carcter (lo lee y lo escribe en pantalla) 02h 03h Escribe un carcter en pantalla. Enviar en DL el ascii del carcter que se quiere escribir Lee un carcter de la entrada auxiliar (serial)

04h 05h 06h

Escribe un carcter en el dispositivo auxiliar (serial) Escribe un carcter en la impresora. Enviar en DL el carcter a escribir. E/S directa de la consola (teclado + video)

Si al llamar a esta funcin DL=FFh entonces implica que se quiere una lectura de carcter. Si hubo un carcter presionado ZF=0 y en AL esta el carcter. Si no hay carcter presionado ZF=1. Si DL<>0FFh entonces escribe dicho carcter en pantalla. 07h Lee un carcter sin eco. Regresa en AL el carcter.

Mov ah, 02h (pone un caracter en pantalla) Mov dl, character (en el registro dl) Int 21h(lo va a poner en la pantalla)

09h 0ah ledos.

Despliega una cadena en pantalla. Enviar DS:DX=direccin de la cadena. Debe ser una cadena de cdigos ascii que termina con $ Lee un buffer de caracteres. Enviar DS:DX=apuntador al buffer. Mc = mximo nmero de caracteres a leer. Nc=nmero de caracteres

Buffer mc nc caracteres La interrupcin 21 nos permite leer del teclado, escribir en video, escribir en impresora, leer y escribir en el dispositivo auxiliary (Puerto serial). INTERRUPCION D LA INT 10H Servicios de la interrupcin 10h del BIOS para el manejo de video en modo texto. Funcin 00h. Establece modo de video. Al=03 modo texto a color, 80X25. Funcin o1h. Establece el tamao del cursor. Ch lnea inicial de rastreo, cl- lnea final de rastreo. Funcin 02h. Coloca el cursor en una posicin definida, pudiendo usarla en modo texto o en modo grafico. Bh nmero de pgina, dh rengln, dl columna. Mov ah,02h Mov bh,00h (aparece pantalla) Mov dx, of02h (parte alta (renglon), en la columna 2 ) Int 10h Funcin 03h.Se utiliza para determinar el rengln, columna y tamaao actual de cursor , en situaciones donde el programa tiene que utilizar la pantalla un momento y debe guardar y restaurar la pantalla original. Lee la posicin del cursor. Bh- pgina. Retorna ch linea de rastreo inicial del cursor, cl lnea de rastreo final del cursor, dh rengln, dl columna. Mov ah,o3h Mov bh,00 Int10h Funcin 06h. Maneja el recorrido o bordado de la pantalla, y puede limpiar todo a parte de un despliegue iniciando en cualquier localidad y terminar en otra con un numero mayot Mov ax, 0600h Mov bh, 71H (atributos d colores (azul con blanco)) Mov cx, 184FH (en la parte superior (rnglon y columna)) Int 10H Al nmero de lneas o 00 para toda la pantalla, bh atributo de pantalla, cx rengln:columna iniciales, dx rengln:columna finales., AH=06H Funcin 07h. Recorrer hacia abajo la pantalla. Al nmero de lneas o 0 para toda la pantalla, bh atributo, cx rengln:columna iniciales, dx rengln:columna finales. Funcin 08h. Leer atributo o carcter en la posicin del cursor. Bh- nmero de pgina. Retorna el carcter en al, y su atributo en ah. Funcin 09h. Desplegar atributo o carcter en la posicin del cursor. Al- carcter que ser desplegado, bh- nmero de pgina, bl- atributo, cx nmero de veces que el carcter ser desplegado. Funcin 0ah Despliega un carcter en la posicin del cursor con el atributo actual (no establece atributo). Al carcter a desplegar, bh nmero de pgina, cx nmero de veces que el carcter ser desplegado. Modo grfico Funcin 00h. Establece modo de video. Al modo de video, 0ch grficos en color, 12h resolucin 640 x 480. Funcin 08h. Lee el atributo o carcter en la posicin del cursor. Funcin 09h. Despliega carcter o atributo en la posicin del cursor. Funcin 0ah. Despliega un carcter en la posicin del cursor. Funcin 0ch. Escribe un pixel punto. Al color del pixel, bh- nmero de pgina, cx columna, dx rengln. Funcin 0dh. Lee un pixel punto. Bh nmero de pgina, cx columna, dx rengln. Retorna el color del pixel en al. FUNCIONAMIENTO DEL REGISTRO IP REGISTRO APUNTADOR DE INSTRUCCIONES: Contiene el desplazamiento de direccin d la siguiente enstruccion que se ejecuta. FUNCION 09 INT21H Visualizacion de una cadena de caracteres FUNCION DE LA 0ah de int 10h Despliega un carcter en la posicin actual del cursor

EN QUE CONSISTE LA MODALIDAD DE INTERFAZ POR MODULOS SEPARADOS Para este mtodo se codifican los programas en C y en ensamblador por separado, se utiliza TCC para compilar el modulo C , TASM para ensamblar el modulo ensamblador y TLINK para enlazarlos PROGRAMACION CON CODIGO ENSAMBLADO EN LINEA Para compilar el modulo en C solicite el compilador ejecutable. Y solo inserte las instrucciones en ensamblador precisas por la palaba clave ASM en cdigo fuente EN QUE CONSISTE LA MODALIDAD DE INTERFAZ DE CODIGO ENSAMBLADO QUE FUNCION HACE LA INSTRUCCIN RET EN UN PROGRAMA HIBRIDO Hace un retorno FUNCION DE LA DIRECTIVA EXTERN Notifica al ensamblador que cualquier procedimiento delane de ella es del tipo FAR o se encuentra definido de forma externa FUNCION DE LA DIRECTIVA PUBLIC Indica al ensamblador y enlazador de una direccin de un smbolo especificado esta disponible para otros mdulos. LLAMADA INTERSEGMENTO Una llamada CALL intrasegmento o es cercana si el procedimiento llamado esta definida o es por emisin de tipo NIR, llamadas INTERSEGMENTOS. LLAMADA INTRASEGMENTO Son aquellos donde el procedimiento llamado esta en el mismo segmento de cdigo al segmento que llama LLAMADA CALL Se clasifica como lejana si el procedimiento llamada esta definida como FAR O EXTERN, con frecuencia en otro segmento. TIPOS DE DATOS DB (DEFINE BYTE) define datos de tamao de un byte y en valores numricos van de un rango de 127 a -128 ademas es usado para declarar cadenas de cualquier longitud DW(DEFINE WORD)Es usado para valores numricos de el rango de mas de 32 767 a -32768 DD(DEFINE DOBLE O DEFINE PALABRA DOBLE) Usado para datos numricos que se encuentra en el rango de 2,147,483,647 a 2,147,483,648 DQ (DEFINE PALABRA QUADRUPLE) Usado en valores numricos en el rango de 1,152,921,504,606,846,976 a 1,152,921,504,606,846,977 DIRECTIVA PAGE: Tiene como fin designar el numero de lneas para listar en una pagina y el numero mximo de caracteres, PAGE [longitud] [,ancho] DIRECTIVA TITLE: Usado para que el titulo de un programa imprima en la lnea 2 y pueda contener hasta 60 caracteres. DIRECTIVA SEGMENT. Define el inicio de un segmento, el cual debe contener un nombre, debe adems contener un fin [ends] q debe contener el mismo nombre del segmento, su tamao mximo es de 64k, puede tener3 tipos de opciones. DIRECTIVA PROC. Este procedimiento debe de contener un nombre y debe ser nico y puede ser de tipo far(lejos, en caso de existir un solo procedimiento o neas en caso de existir 2 o mas ) DIRECTIVA EMDP. Indica el final de procedimiento DIRECTIVA ASSUME. Es usada para direccionar cada segmento en el programa SS-STACK segment DIRECTIVA ENDP. Esta finaliza todo el programa y debe contener el nombre del procedimiento tipo far DIRECTIVA INCLUDE(en macro). Llama a traer la macro, en donde esta almacenada y que nombre lleva. DIRECTIVA RECORD Le permite definir patrones de bits, Define indicadores de conmutacin como un bit o como de multibits Operaciones con cadenas de caracteres. 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. SALTOS JMP. Realiza la transferencia del programa, esto es, cambia la secuencia de ejecucin. Al registro IP se le asigna la direccin del argumento del JMP. Sintaxis: JMP dir/regp1/regind/mem Ejemplo: JMP 120 JMP [BX] JMP SI JA o JNBE. Salta si la bandera del carry es uno. JBE o JNA. Salta si la bandera del carry o del cero tienen valor 1. JCXZ. Salta si el registro CX es cero. JE o JZ. Salta si la bandera del cero es 1. JG o JNLE. Salta si la bandera de cero es cero y la bandera de signo es igual a la bandera del overflow. Salta si es mayor o si no es menor o igual. JGE o JNL. Salta si la bandera del signo es igual a la del overflow. Salta si es mayor o igual. JL o JNGE. Salta si la bandera del signo es diferente a la del overflow. Salta si es menor. JLE o JNG. Salta si la bandera del cero es uno o si la bandera del signo es diferente a la del overflow. Salta si es menor o igual. JNE o JNZ. Salta si la bandera de cero es igual a cero. Salta si no es igual. JNO. Salta si la bandera del overflow es cero. JNP o JPO. Salta si la bandera de paridad es cero. JNS. Salta si la bandera de signo es cero. JO. Salta si la bandera del overflow es uno. JP o JPE. Salta si la bandera de paridad es uno.

JS. Salta si la bandera de signo es uno. (negativo) Nota: Todas las instrucciones de salto tienen su sintaxis equivalente a la de JMP. Loop. Repite un bloque de instrucciones cx veces, por lo tanto es necesario un valor inicial en cx. En cada iteracin LOOP en forma automtica disminuye 1 de cx. Si cx es cero termina el ciclo. Al ejecutarse la instruccin LOOP se decrementa cx y se verifica si ya llego a cero, si es asi termina, sino continua el ciclo. Sintaxis. LOOP direccin Ejemplo: mov ax,0 mov cx,10 Ciclo: inc ax loop ciclo Instrucciones aritmticas. ADD. Realiza la suma entre dos operandos. Sintaxis: ADD reg/regind, reg/mem/regind/dato ADD mem, reg/regind Ejemplo: ADD AX, BX ADD [100], AH ADD SI, [BX] ADC. Realiza la suma entre dos operandos y el carry, la sintaxis es equivalente a la del ADD. (ADD op1+op2+cy) Ejemplo: ADC BH, F0 SUB. Realiza la resta entre dos operandos, la sintaxis es equivalente a la del ADD. Ejemplo: SUB AX, BX SUB [BX], CX SBB. Realiza la resta entre dos operandos y el carry, la sintaxis es equivalente a la del ADD. (op1-op2-cy). Ejemplo: SBB BH, CL SBB CX, [SI] INC. Incrementa en 1 un operando. Sintaxis: INC reg/regind/mem Ejemplo: INC CX INC SI INC BYTE[100] INC WORD[200] DEC. Decrementa en uno el operando, la sintaxis es equivalente a la de la instruccin INC. Ejemplo: DEC WORD[200] DEC BX NEG. Obtiene el complemento a 2 del operando. Sintaxis: NEG reg/regind/mem Ejemplo: NEG AX NEG BYTE[100] MUL. Multiplica dos datos, esta multiplicacin es sun signo. Sintaxis: MUL reg/regind/mem La multiplicacin se lleva a cabo de la siguiente forma: AX AL * reg (de 8 bits) DXAX AX * reg (de 16 bits) Ejemplo: MUL BH MUL WORD[SI] MUL CX IMUL. Multiplica dos datos con signo, la sintaxis es equivalente a la del MUL. Ejemplo: IMUL DL IMUL BYTE[200] Instrucciones lgicas. DIV. Divide un operando que esta en AX o DX:AX entre su nico argumento. Sintaxis: a) DIV reg_8bits AL<- AX/reg_8bits y AH<- residuo

b) DIV reg_16bits AX<-DX:AX/reg_16bits y DX <-resto AND. Realiza la operacin AND entre dos operandos. Sintaxis: a) AND reg/regind, reg/mem/regind/dato AND mem, reg/regind Ejemplo: AND AX, [SI] AND DL, BH AND CX, 1 OR. Realiza la operacin OR entre dos operandos, su sintaxis es equivalente a la de la instruccin AND. Ejemplo: OR AX, BX OR SI, [DI] NOT. Niega el valor del operando. Obtiene el complemento a 1 del operando. Sintaxis: NOT reg/regind/mem Ejemplo: NOT AX NOT WORD[SI] XOR. Obtiene el or exclusivo de dos operandos (valores iguales da 0, valores diferentes da 1), su sintaxis es equivalente a la del AND. Ejemplo: XOR AH, CL XOR [100], SI Instrucciones de comparacin y salto. CMP. Realiza la comparacin entre dos operandos, esta instruccin puede modificar el registro de banderas. Sintaxis: CMP reg/mem/regind, reg/dato CMP mem, reg/dato/regind La instruccin CMP realiza una resta del primer operando menos el segundo operando, alterando el valor de las banderas. Ejemplo: CMP BYTE[100], 6 CMP AH, 7 (ah 7) CMP [CX], BX Instrucciones de transferencia MOV (move). Realiza el movimiento (copia) de la informacin. Sintaxis: MOV destino, origen MOV reg1, mem/reg2/regind/regseg/dato MOV mem, reg/regseg/regind MOV regseg, mem/regind/regseg/regp1 Ejemplo: MOV AX,BX MOV CH, [100] MOV AX, [100] MOV [300], BX MOV [SI], BX MOV DS, [AX] MOV DS, BX LEA. Carga un registro con la direccin de desplazamiento de alguna variable en Memoria. Sintaxis: LEA reg, dir Ejemplo: LEA BX, [100] BX100 MOV AX, 128 es equivalente a LEA AX, [128] XCHG. Intercambia el contenido de la informacin. Sintaxis: a) XCHG reg/regind, reg/mem/regind b) XCHG mem, reg/regind Ejemplo: XCHG AX, CX XCHG [100], SI PUSH. Coloca en el tope del stack el contenido de un registro de 16 bits. Sintaxis: PUSH regp1/regseg/mem/regind Ejemplo: PUSH AX PUSH CS PUSH [SI] POP. Coloca en algn registro de 16 bits el contenido del stack.

Sintaxis: POP regp1/regseg/regind/mem Ejemplo: POP AX POP SI POP [100] LAHF. Coloca las banderas del orden bajo en el registro AH. Sintaxis: LAHF SAHF. Coloca el contenido de AH en la parte baja del registro de banderas. Sintaxis: SAHF PUSHF. Coloca el contenido del registro de banderas en el stack (primero la parte alta y despus la parte baja). Sintaxis: PUSHF POPF. Coloca el contenido del stack en el registro de banderas (el primer byte del stack en la parte baja y el Segundo byte en la parte alta). Sintaxis: POPF CALL Y RET LA INSTRUCCIN CALL Transfiere el control o un procedimiento llamado y la instruccin RET le regresa, el controla al procedimiento original ARITMETICA EN ASCII Y BCD BCD(decimal codificado en binario) proporciona instrucciones que facilita la conversin de datos de ASCII a binario, consiste en 4 bits AAA. Se encarga de hacer el ajuste despus de una suma ASCII y verifica el digito hexadecimal en la extrema derecha (4 bits del registro AL ) y si el digito esta entre AF a la bandera de acarreo auxiliar es uno. MULTIPLICACION ASCII AAM.(Ajusta despus de la multiplicacin) Corrige el resultado de la multiplicacin de datos ASCII en el registro AX. Divide al AL entre 10 y almacena el cociente en el AH y el residuo en el AL MUL Maneja datos sin signo.(afecta la bandera de acarreo y desbordamiento) IMUL, multiplicacion entera, maneja datos con signo (afecta la bandera de acarreo y desbordamiento) MACROS.Es un conjunto de instrucciones con un nombre especifico que se declara solo una vez, y se puede utilizar tantas veces sea neceario, se usa para cargar registros, operaciones de entrada y salida e interrupciones INICIO MACRO despliegue macro msj Mov AX, @data mov AH,09H Mov DS, AX Lea Dx, mensaje MOV ES, AX int 21H ENDM ENDM PROGRAMACION HIBRIDA. mezclar con ensamblador, con un lenguaje de alto nivel, facilita el desarrollo de programas grandes MANEJO DEL MOUSE. El raton es un dispositivo usado para apuntar, gobernando por un controlador, instalando en el archivo con PIC.SIS a AUTO.BAT 33h MANEJO DEL RATON [MOV AX,FUNCION, INT33H] MICKEY. Es la unidad de medida de movimiento del raton, el conteo de Mickey es utilizado por el controlador del raton para mover la pantalla FUNCIONES DEL RATON El 00H inicializa el raton 01H muestra el apuntador del raton 02H oculta el apuntador del raton 03H obtiene el estado del raton y la posicin del apuntador 04H establece la posicin del apuntador 05H obtiene la informacin del botn presionado del raton 06H obtiene informacin acerca de la liberacin del raton, [para arratrar el boton] 07H fija limites horizontales para el apuntador. 08H fija limites verticales para el apuntador. 09H Establece el tipo de apuntador grafico 0AH Establece el tipo de apuntador en texto. ****** 4C00H. coloca el valor 4C00H en el registro AX, para que la interrupcin 21H termine el programa, pero nos da una idea del formato externo en un programa de ensamblador. 06 INT 10H: Maneja el recorrido o bordado de la pantalla, y puede limpiar todo a parte de un despliegue iniciando en cualquier localidad y terminar en otra con un numero mayor 0a int 10h:despliega un carcter en la posicin actual dl cursor 09 int 21h. Despliega una cadena en pantalla. 02 int 10h. coloca el cursor en una posicin definida, pudiendo usarla en modo texto o en modo grafico. BH-numero de pag, DH-renglon,, DLcolumna.

AAM.(Ajusta despus de la multiplicacin) Corrige el resultado de la multiplicacin de datos ASCII en el registro AX. Divide al AL entre 10 y almacena el cociente en el AH y el residuo en el AL AAS( AJUSTE ASCII PARA LA RESTA) ADD (suma) DAD (Ajuste decimal para la suma) DAS(Ajuste decimal para la resta) SBB(resta con acarreo) AAD(Ajuste ascii para la division) DIV(Division sin signo) IDIV(divisin entera)

16. Componentes principales del DOS A. IO: SYS realiza las funciones de inicializacin en el momento de arranque. B. MSDOS.SYS acta como ncleo y se ocupa de la administracin de archivos. C. COMMAND.COM acta como interfaz entre el usuario y el S.O Pant MACRO color, vI,vF mov ax, 0600H ; muestra_pantalla mov bh, color ; color pantalla mov cx, vI ; VAlor inicial mov dx, vF ; renglon, columna int 10H ENDM ; Bpantalla MACRO mov ah,00h mov al,03h int 10h ENDM ; PosicionC MACRO filacolumna mov ah, 02H mov bh, 00H mov dx, filacolumna int 10H ENDM ; Mensaje MACRO msj mov ah, 09 lea dx, msj int 21H ENDM ; entrada_tecado MACRO mov ah,07h ;caracter desd el teclado int 21h ENDM ; contrasena MACRO mov ah,01h ;acepta caracter desd el teclado int 21h

ENDM ; caracter MACRO ascii mov ah,02h ; despliega un caracter mov dl,ascii int 21h ENDM ;********************************************************************************* fin MACRO mov ax, 4C00H int 21H ENDM PALABRA. Un campo de 2 bytes (16 bits) PALABRA DOBLE. Un campo de 4 bytes (32 bits) PALABRA CUADRUPLE. Un campo de 8 bytes (64 bits) 10 KILOBYTE(KB). El numero 2 es = a 1024 (memoria de 640k tiene: 655,360 bytes) 20 MEGABYTE(MB). El numero 2 es = a 1,048,576, o un megabyte BIT: Unidad mas pequea de informacin en la computadora BYTES. grupo de 9 bits, representa localidades de almacenamiento, tanto en memoria interna como en discos externos(cada byte tiene 8 bits para datos y un bit de paridad) BUS DE DATOS. Transfiere datos entre el rocesador, la memoria y los dispositivos externos, dirige el trafico (transito) de datos. UNIDAD DE EJECUACION Y UNIDAD DE INTERFAZ DEL BUS El procesador se divide en 2 unidades lgicas: UNA UNIDAD DE EJECUCION(EU) y UNA UNIDAD DE INTERFAZ DEL BUS (BIU). EU: ejecuta instrucciones, mientras q la BIU enva instrucciones y datos a la EU. La EU contiene una unidad aritmtico-logico(ALU), una unidad de control (CU) y varios registros. Estos elementos ejecutan instrucciones y operaciones aritmticas y lgicas ******La computadora distingue entre bits 0 (apagado) y 1(encendido), y realiza aritmetica solo en formato binario. 3 2 0 **El valor de un numero binario se determina por la ubicacin de sus bits. Asi. 1011 binario es igual a 2 +2 +0+2 , o 13 **Un numero binario negativo se representa en notacin de complemento a dos: se invierten los bits de su representacin positiva, y se suma 1. **Un solo carcter de memoria es un byte; comprende 8 bits de datos y un bit de paridad. Dos bytes adyecentes comprenden una palabra, y 4 bytes adyecentes, una palabra doble. 10 **El valor de K es igual a 2 , o 1,024 bytes. **El formato hexadecimal es una notacin abreviada para representar grupos de 4 bits. Los dgitos hexadecimales 0-9 y A-F representan los nmeros binarios desde 0000 hasta 1111 **La representacin de datos de caracteres es realizado en el formato ASCII. ** El corazn de la PC es el microprocesador. El procesador almacena datos numricos en palabras de memoria en secuencia inversa de bytes. **Los 2 tipos de memoria son ROM Y RAM **Un programa en lenguaje ensamblador consiste en uno o mas segmentos: un segmento de la pila para mantener direcciones de regreso, un segmento de datos para definir reas de datos y de trabajo y un segmento de cdigo para instrucciones ejecutables. La localidades en un segmento son expresadas como un desplazamiento relativo a la direccin inicial del segmento. **Los registros de CS, DS, Y SS permiten el direccionamiento de los segmentos de cdigo, datos y de la pila, respectivamente. ** El registro auntador de intrcciones IP, contiene la direccin de desplazamiento de la siguiente instruccin que es ejecutada. **Los registros de apuntador SP y BP estan asociados con el registro SS y permite al sistema accesar datos en el segmento de pila. **Los registros de propsito general AX, BX, CX, DX son las herramientas del sistema. El ultimo byte a la izquierda es la par te alta, y el ultimo byte a la derecha es la parte baja. El AX (acumulador principal) se emplea para e/S y para la mayor parte de la aritmetica. BX (registro base) puede ser usado como un ndice en direccionamiento ixtendido. El CX es conocido como el registro contador y el DX como el registro de datos. **Los registros SI y DI estn disponibles para direccionamiento extendido y para sumas y restas. Estos registros tambin se necesitan para lagunas operaciones con cadenas de caracteres (carcter) **El registro de banderas indica el estado actual de la computadora y los resultados de la ejecucin de las instrucciones En el caso de las instrucciones de desplazamiento, tambin existen cuatro: SHL, SHR, SAL, SAR. SHL y SHR se utilizan para desplazar los bits de un registro o localidad de memoria, sin considerar el signo de su contenido. SAL y SAR se utilizan para desplazar los bits de un registro o localidad de memoria, considerando su contenido como una cantidad con signo. **Los 3 componentes principales del DOS son IO.SYS, MSDOS.SYS y COMMAND.COM. **Al encender la compuadora se provoca una inicializacin, tambn llamada arranque en frio. El procesador introduce un stado de restaura cin, limpia todas las localidades de memoria ponindolas en cero, realiza una verificacin de la paridad de la memoria y establece los regitros CS e IP al punto de entrada del BIOS en ROM **Los 2 tipos de programas del DOS son : .COM Y .EXE **Cuando ustd solicita al DOS cargar un programa .EXE para su ejecucin, el DOS construye un PSP de 256 bytes (100H) en un limit de prrafo en memoria y almacena el programa inmediatamente despus del PSP, Despues carga la direccin del PSP eln los registros DS y ES, carga la direccin del segmento de cdigo en el CS, establece el IP al desplazamiento de la primera instruccin en el segmento de cdigo, carga la direccin de la pila en el SS y establece el tamao de la pila. Finalmente, es cargador transfiere el control al programa por ejecutarse .

El propsito de la pila es proporcionar un espacio para el almacenamietno temporal de direcciones y datos. Cada dato en la pila es un a palabra (2 bytes) **El DOS define la pilapara un programa .COM, mientras que para un programa .EXE se debe definir de manera explicita la pila. **Cuando el procesador busca kda byte de una instruccin, incrementa el regustro IP de manera que el IP contenga el desplazamiento para la siguiente instruciion

PROGRAMA QUE PIDA DOS NUMEROS Y DIGA SI ES MENOR, MAYOR O IGUAL .model small .stack .data var1 db ? var2 db ? msg1 db '++ El primero es mayor++ $' msg2 db '++ El primero es menor++$' msg3 db '++ Son iguales++$' msg4 db '++ Primero valor++ $' msg5 db '++ Segundo valor++ $' .code .startup mov ah,00h mov al,03h int 10h mov ah,02h mov dx,0510h mov bh,0 int 10h mov ah,09h lea dx,msg4 int 21h mov ah,07h int 21h mov ah, 02h mov dl,al int 21h mov var1,al mov ah,09h lea dx,msg5 int 21h mov ah,07h int 21h mov ah,02h mov dl,al int 21h mov var2,al cmp var1,al ja mayor jb menor je igual mayor: mov ah,09h lea dx,msg1 int 21h jmp salir menor: mov ah,09h

lea dx,msg2 int 21h jmp salir igual: mov ah,09h lea dx,msg3 int 21h jmp salir salir: .exit End ********************************************** HOLA MUNDO .model small .stack .data Cadena1 DB 'Hola Mundo.$' .code programa: mov ax, @data mov ds, ax lea dx, Cadena1 ;mov dx, offset Cadena1 mov ah, 9 int 21h int 20h end programa