Macro posicionado de cursor PAMCUR

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Macro posicionado de cursor PAMCUR"

Transcripción

1 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 1 Macro posicionado de cursor PAMCUR ;Macro para posicionar el cursor en la página que yo le indique, si la fila o columna indicadas están fuera de los límites se ignora, teniendo en cuenta que en modo alfanumérico tenemos un máximo de 80 (0-79) columna y 25 líneas (0-24). ;Para colocar el cursor en una posición de una página usaremos la interrupción 10h de la BIOS: Servicio posicionar cursor Entrada: AH = 02h DH = Fila. DL = Columna. ; Macro pamcur con tres parámetros de columna,fila y página PAMCUR MACRO columna,fila,pagina local fin ; defino la etiqueta fin como local ; salvo los registros afectados por esta macro, para preservar su valor ya que no se en que punto de los programas será llamada esta macro. push ax push bx push dx ; cargo el valor de la columna donde quiero colocar el cursor en el registro dl y me aseguro que su valor es mayor o igual que cero y menor o igual que 79 mov dl,columna cmp dl,0 jl fin cmp dl,79 jg fin ; cargo el valor de la fila donde quiero colocar el cursor en el registro dh y me aseguro que su valor es mayor o igual que cero y menor o igual que 24 mov dh,fila ; cargo la fila en dh cmp dh,0 ; me aseguro que esté dentro de los límites jl fin cmp dh,24 jg fin

2 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 2 ; cargo el valor de la página donde quiero colocar el cursor en el registro bh y me aseguro que su valor es mayor o igual que cero y menor o igual que 7 mov bh,pagina cmp bh,0 jl fin cmp bh,7 jg fin ;Llamo al servicio correspondiente (ah=02h) de la interrupcion 10h para colocar el cursor en la fila, columna y página deseada. mov ah,02h ; Recupero los registros afectados por la macro para que queden tal y como estaban antes de entrar en ella fin: pop dx pop bx pop ax endm OBSERVAR: La etiqueta fin está definida como local para evitar problemas de múltiples destinos para un mismo salto. OBSERVAR: En esta macro se revisan los valores de los parámetros para asegurar que están dentro de los límites de fila, columna y página, si no es así, se sale de la macro sin posicionar el cursor

3 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 3 PROGRAMA CUADRO1 En este programa se pretende colocar una fila de * en un punto de la pantalla en modo alfanumérico usando el servicio 0eh de la interrupción 10h de la bios, este programa también se puede hacer de forma más sencilla con la interrupción del DOS 21h, o con el servicio 0Ah de INT 10h También colocaremos la pantalla en modo alfanumérico 80X25 con el servicio 00H de la INT 10h ;En este programa no necesito segmento de datos, así que defino directamente el segmento de código codigo segment para Assume cs:codigo,ss:pila ;Con la directiva include añado la macro pamcur para posicionar el cursor donde desee. include pamcur.asm ;comienzo del procedimiento cuadro1 cuadro1 proc far ; Para poner la pantalla en modo alfanumérico 80X25 usaremos el servicio 00H (AH = 00h) de la INT 10H de la BIOS, cargando en AL, el valor correspondiente a esta configuración (AL=02) mov ax,0002h ;llamo a la macro incluida en el programa para colocar el cursor en la columna 12, fila 12 y página 0, que es la página activa por defecto pamcurl 12,12,0

4 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 4 ;Los * los escribiremos uno a uno repitiendo el mismo código, ya que el servicio 0eh de INT 10h actualiza la posición del cursor, para no repetir código usaremos un bucle LOOP, indicando en CX el número de veces que quiero que se ejecute el bucle. mov cx,000ah ;Este grupo de instrucciones se repetirá 10 veces ya que en el paso anterior cargamos cx con 000Ah, cada vez que se repita escribirá un asterisco en pantalla y actualizara la posición del cursor, el carácter a escribir, se escribirá en la página activa que por defecto será la cero. ;En AH indicamos el servicio que deseamos de la INT 10h, en AL el carácter a escribir. bucle:mov ah,0eh mov al,"*" loop bucle ; finalización del código mov ax,4c00h cuadro1 endp codigo ends ; segmento de pila pila segment stack para dw 512 dup (?) pila ends ; final del programa end cuadro1

5 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 5 PROGRAMA CUADRO2 Con este programa se pretende conseguir lo mismo que con el anterior pero usando el servicio 0Ah de la interrupción 10h de la BIOS ; Igual que en el programa anterior codigo segment para assume cs:codigo,ss:pila include pamcur.asm cuadro1 proc far mov ax,0002h pamcur 12,12,0 ; ;En AH indicamos el servicio que deseamos de la INT 10h, en AL el carácter a escribir, en BH la página en la página en la que queremos escribir y en CL el número de caracteres a escribir mov ah,0ah mov al,"*" mov bh,0 mov cl,0ah ;Igual que en el programa anterior mov ax,4c00h cuadro1 endp codigo ends pila segment stack para dw 512 dup (?) pila ends end cuadro1

6 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 6 PROGRAMA CUADRO3 Con este programa se pretende conseguir lo mismo que con el anterior pero usando el servicio 09h de la interrupción 21h de la BIOS ; en el segmento de datos metemos lo 10 asteriscos y el carácter $ que finaliza la cadena que representa el servicio 09h de la datos segment asterisco db 10 dup ("*"),"$" datos ends ;igual que en el programa anterior codigo segment para assume cs:codigo,ss:pila include pamcur.asm cuadro1 proc far ;inicialización del segmento de datos mov ax,datos mov ds,ax ;igual que en los programas anteriores mov ax,0002h pamcur 12,12,0 ; para usar el servicio 09h (ah=09h) de la del DOS, debemos tener la dirección de la cadena de caracteres a representar en DS:DX, DS ya lo hemos cargado con la dirección donde comienza el segmento de datos, y para cargar DX con el offset donde comienza el texto a representar, usaremos la instrucción LEA, igualmente podíamos haber usado MOV DX, offset asterisco mov ah,09h lea dx,asterisco

7 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 7 ;Igual que en el programa anterior mov ax,4c00h cuadro1 endp codigo ends pila segment stack para dw 512 dup (?) pila ends end cuadro1

8 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 8 PROGRAMA CUADRO4 ; El objetivo de este programa es crear un bucle que repita la fila de 10 asteriscos de los programas anteriores 10 veces en líneas consecutivas. ;igual que en el programa cuadro1 codigo segment para assume cs:codigo,ss:pila include pamcur.asm cuadro1 proc far mov ax,0002h ;vamos a indicar en Al el número de fila que pasaremos como parámetro a la macro pamcur, es decir, en vez de indicar el valor de fila cada vez que llamo a la macro, le indico que ese valor lo debe de tomar de AL mov al,04 ;Cargamos CX con el número de veces que quiero que se repita el bucle exterior mov cx,000ah ;Guardo en la pila los valores de AL y de BX con los valores correspondientes al bucle exterior ya que en el bucle interior necesito modificar su valor push ax buc2: push cx ;coloco el cursor en la columna 24, en la fila indicada por al y en la página 0 pamcur 24,al,0 ; igual que en el programa cuadro1 mov cx,000ah bucle:mov ah,0eh mov al,"*" loop bucle

9 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 9 ;Al salir del bucle interior recupero los registros que había guardado antes de entrar, incremento al, para que el siguiente conjunto de * se escriban una línea mas abajo y vuelvo a buc2 mientras el valor recuperado de cx sea distinto a cero, este valor se decrementa cada vez que llego a la instrucción loop, así que lo tendremos que guardar en pila después de dicha instrucción pop cx pop ax inc al push ax loop buc2 ;igual que en el programa cuadro1 mov ax,4c00h cuadro1 endp codigo ends pila segment stack para dw 512 dup (?) pila ends end cuadro1

10 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 10 Macro MACUADRO ; Crearemos una macro con el programa anterior, pudiendo elegir como parámetros, la fila y columna donde comienza el cuadro, la página en la que colocaré el cuadro, el número de caracteres por fila y columna y el carácter a representar ; defino la macro con el nombre cuadro, observar que puede ser diferente al nombre del fichero en el que está contenida macuadro, como parámetros de esta macro tenemos:! Columna: Columna donde comienza el cuadro! Línea: Línea donde comienza el cuadro! Página: Página donde colocaremos el cuadro! Caracteres: Nº de caracteres que vamos a colocar en cada línea del cuadro! Repeticiones: Nº de filas del cuadro! Texto: Es el carácter que se usará para dibujar el cuadro! cuadro macro columna,linea,pagina,caracteres,repeticiones,texto ; defino las etiquetas como locales ya que la macro puede ser llamada varias veces y eso me provocaría problemas de duplicación de etiquetas local bucle,buc2 ; Guardamos los registro antes de empezar a trabajar en la macro, así nos aseguramos que al salir de ella se pueden recuperar a los valores que tenían al entrar push ax push bx push cx push dx ; igual al programa anterior colocando los nombres de los parámetros de las macros donde antes estaban los valores mov al,linea mov cx,repeticiones push ax buc2: push cx pamcur columna,al,pagina mov cx,caracteres bucle:mov ah,0eh mov al,texto loop bucle pop cx pop ax inc al push ax loop buc2

11 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 11 ; Recuperación de los registros a la salida de la macro y fin de macro pop dx pop cx pop bx pop ax endm

12 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 12 PROGRAMA CUADRO6 ; Crear un programa que usando la macro anterior dibuje cuadros en diferentes posiciones de la pantalla ;comienzo del programa codigo segment para assume cs:codigo,ss:pila ;incluyo los ficheros donde se encuentran las macros que voy a usar, no confundir el nombre del fichero con el de la macro, en el caso del pamcur coinciden, pero esto no es obligatorio. ;También se podría haber hecho que las dos macro estuvieran en un mismo fichero, en ese caso sólo necesitaríamos una directiva include include pamcur.asm include macuadro.asm ;Comienzo del procedimiento e inicialización de la pantalla a modo alfanumérico 80X25 cuadro1 proc far mov ax,0002h ;Llamada a la macro que coloca los cuadros con los parámetros que hemos programado cuadro 10,10,0,12,8,31h cuadro 35,2,0,8,7,32h ;finalización del programa mov ax,4c00h cuadro1 endp codigo ends pila segment stack para dw 512 dup (?) pila ends end cuadro1

13 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 13 PROGRAMA CUADRO7 Basándonos en el programa anterior en este programa se colocarán varios cuadros en cada una de las 4 páginas existentes en el modo de video 80X25 alfanumérico, el programa mostrará 5 segundos cada una de las páginas y pasará a la siguiente, durante 1 minuto, al cabo del cual finalizará el programa. Para la temporización usaremos el servicio 2Ch de la interrupción 21h del DOS, que funciona de la siguiente forma: Servicio 2Ch (INT 21h): Descripción: Devuelve la hora del día programada en el PC. CH = Contiene la hora (0 a 23) CL = Contiene los minutos (0 a 59) DH = Contiene los segundos (0 a 59) DL = contiene las centésimas de segundo (0 a 99) Inicialización del segmento de datos, los dos primeros bytes con el nombre actual, los usaremos para temporizar los cinco segundo que debe de permanecer cada una de las pantallas, y los dos último bytes, los usaremos para recordar a la hora que comenzó a ejecutarse el programa y para poder temporizar el final del mismo datos segment actual db 2 dup (?) horainicio db 2 dup (?) datos ends Comienzo del segmento de código e incluyo tres ficheros externos, pamcur y macuadro, están comentados y listados en programas anteriores, tiempo.asm se listará mas adelante y será el encargado de realizar las temporizaciones. codigo segment para assume cs:codigo,ss:pila include pamcur.asm INCLUDE macuadro.asm include tiempo.asm Apertura del procedimiento llamado colocación, la función principal de este procedimiento será la de colocar cuadros en las 4 páginas permitidas en formato 80X25 colocacion proc far mov ax,datos mov ds,ax

14 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 14 Memorizo la hora de comienzo de la ejecución del programa, en DS:[0002] los minutos y en DS:[0003] los segundos mov ax,2c00h mov DS:[0002],cl ; minutos mov ds:[0003],dh ; segundos Colocamos el modo de video a 80X25 mov ax,0002h Colocamos la página 0 como activa y mediante la macro macuadro coloco dos cuadros mov ax,0500h ;Activar página 0 cuadro 10,10,0,8,9,"A" cuadro 20,20,0,10,5,"B" Igual que el punto anterior para las páginas 1,2 y 3 mov ax,0501h ;Activar página 1 cuadro 5,5,1,6,4,"C" cuadro 13,15,1,8,10,"D" mov ax,0502h ;Activar página 2 cuadro 2,8,2,13,9,"E" cuadro 22,10,2,7,3,"F" mov ax,0503h ;Activar página 3 cuadro 8,2,3,9,13,"G" cuadro 20,12,3,3,7,"H" Hago un salto incondicional a la etiqueta salto1 situada en otro procedimiento jmp salto1 colocacion endp

15 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 15 Abrimos el segundo procedimiento en el que se mostrarán temporizados los cuadros anteriormente colocados. mostrar proc far Memorizo la hora actual en DS:[0000] = Minutos, DS:[0001] = segundos, para poder hacer las temporizaciones salto1: mov ax,2c00h mov DS:[0000],cl ; minutos mov ds:[0001],dh ; segundos Mediante la directiva IRP, hago que las instrucciones colocadas entre IRP y ENDM se repita una vez para cada uno de los valores encerrados entre < y >, sustituyendo esos valores en la etiqueta que hemos escrito después de irp, en este caso llamada valor, si hubiera etiquetas entre irp y endm, se podrían definir como locales irp valor,<0,1,2,3> Con las tres instrucciones siguientes se activará en cada una de las repeticiones la pagina cuyo número venga indicado en valor mov ah,05h mov al,valor Llamada a la macro temporización que se encuentra en el fichero tiempo.asm, haremos, que el programa se quede dentro de esa macro el tiempo que quiero que se muestre cada pantalla temporizacion endm Al llegar a este punto, se ha mostrado una vez cada una de las páginas, durante 5 segundos, con este salto hago que se repita el proceso. jmp salto1 Finalización del segundo procedimiento y del segmento de código mostrar endp codigo ends Segmento de pila pila segment stack para dw 512 dup (?) pila ends Finalizo el programa indicando cual es el procedimiento principal end colocacion

16 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 16 MACRO Tiempo Fichero tiempo.asm que contiene la macro temporización Apertura de macro y definición de etiquetas locales. temporizacion macro local bucle,diferminut,fintiemp,nofin Guardo los registros antes de modificarlos push ax push bx push cx push dx Leemos la hora del sistema para hacer las temporizaciones, en CL quedarán los minutos y en dh los segundos. *1 bucle:mov ax,2c00h En cl tenemos los minutos actuales, en dh los segundos actuales. En DS:[0002] el minuto en el que comenzó la ejecución del programa. En DS:[0003] los segundos en los que comenzó la ejecución del programa. Con estos datos, pretendo detectar haciendo las correspondientes comparaciones el momento en el que los minutos y segundos actuales son mayores a los de comienzo de la ejecución del programa, mientras no se cumpla esto, saltaremos a la etiqueta nofin, que comenzará la temporización de 5 segundos para activar cada pantalla, pero cuando se cumpla finalizaré el programa. cmp cl,ds:[0002] jna nofin cmp dh,ds:[0003] jna nofin mov ax,4c00h Antes de entrar en la macro teníamos memorizado en DS:[0000] los minutos, y en *1 estoy leyendo los minutos actuales que quedan memorizados en cl, en el caso de que cl y ds:[0000] sean iguales, deberé esperar a que los segundos actuales sean 5 unidades superiores a los que tenía antes de entrar en la macro, pero si los minutos han cambiado, a los segundo actuales les sumaré 60 = 3Ch para saber cuando han pasado los 5 segundos, por ello en estas dos instrucciones examino si han cambiado los minutos. nofin: cmp cl,ds:[0000] jne diferminut

17 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 17 En el caso de que no tengamos diferencia de minutos, compararemos los segundos antes de entrar en la macro, con los actuales restandolos y comparando la diferencia con 5, en el caso de que la comparación diga que el resultado es menor o igual volveremos a la etiqueta bucle haciendo que el programa quede dentro de esta macro, hasta que la diferencia sea mayor de 5, en cuyo caso saltaremos a la etiqueta fintiemp que finalizará la temporización sub dh,ds:[0001] cmp dh,05h jbe bucle jmp fintiemp En el caso de que han cambiado los minuto, sumaremos 60 segundos al valor actual de los segundo, para poder calcular cuando pasan los 5 segundos de la misma forma que antes. diferminut: add dh,3ch sub dh,ds:[0001] cmp dh,05h jbe bucle A esta etiqueta se llegará cuando se termine de temporizar 5 segundos de permanencia en una pantalla, para poder hacer la temporización la próxima vez que entremos en esta macro, cargaremos los minutos y segundos actuales en ds:[0000] y en ds:[0001] fintiemp: mov ax,2c00h mov DS:[0000],cl ; minutos mov ds:[0001],dh ; segundos Recupero los registros tal y como estaban antes de entrar en la macro y salgo de la misma pop dx pop cx pop bx pop ax endm

18 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 18 Nota sobre cuadro7.asm En el programa cuadro 7 asm, el conjunto de instrucciones: Jmp salto1 Colocacion endp Mostrar proc far Se podría sustituir por Call mostrar Colocacion endp Mostrar proc near Y se podría usa ret desde el segundo procedimiento para finalizar el programa el el primero

19 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 19 PROGRAMA cabecera.asm Hacer un programa de título de un juego en la página 0 de una pantalla de 80X25 En el segmento de datos formamos la el título, en este caso se ha hecho desde edit del DOS con alt+219 y se han ido colocando cada una de las filas para que den la imagen de un texto datos segment datos ends Abrimos el segmento de código, colocamos el assume, incluimos el fichero pamcur.asm donde tengo la macro pamcur para colocar el cursor en el sitio de la pantalla que se desee y abrimos el procedimiento pr1 codigo segment para assume cs:codigo,ds:datos,ss:pila include pamcur.asm pr1 proc far Necesito inicializar el segmento de datos ya que lo voy a usar para mostrar el texto en pantalla. mov ax,datos mov ds,ax Resolución de la pantalla 80X25 color Alfanumérica mov ax,0003h

20 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 20 Cargamos en ah el valor 09h, porque es el servicio de que voy a usar para mostrar en pantalla. mov ah,09h Con la directiva irp hago que se repitan las tres instrucciones que hay entre irp y endm una vez para cada uno de los valores especificados entre < y >, sustituyendo ese valor en los lugares donde ponga la variable valor, es decir, sería como escribir 6 veces lo mismo cambiando el valor del número en los lugares donde pone la variable valor irp valor,<1,2,3,4,5,6> Colocamos el cursor en diferentes líneas según se vaya a escribir el texto fila1, fila2...fila6 etc pamcur 20,valor,0 Cargamos en DX el offset sobre ds donde comienza fila1, fila2... fila6 etc lea dx,fila&valor endm Igual que lo anterior para el resto del texto fila7... fila13 irp valor,<7,8,9,10,11,12,13> pamcur 5,valor+5,0 lea dx,fila&valor endm Finalización del programa mov ax,4c00h pr1 endp codigo ends pila segment para stack dw 512 dup (?) pila ends end pr1

21 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 21 Programa MINAS.ASM En este programa se pretende preparar una pantalla con un casillero de 8 filas y 8 columna, dentro de él distribuir una minas y rodearlas de números indicando el numero de minas que hay alrededor (juego buscaminas de windows). Apertura del segmento de datos datos segment El texto mina será el que coloque como minas en el casillero, es decir, una M mayúscula. mina equ "M" Las columnas del casillero estarán nombradas por las letras A,B,C,D,E,F,G,H, cada una de estas letras corresponderá a una columna de la pantalla y esos valores de columnas los memorizo con los nombres de columna. A EQU 13H B EQU 17H C EQU 1bH D EQU 1fH E EQU 23H F EQU 27H G EQU 2bH H EQU 2fH La tabla columna está compuesta por los nombres de las columnas del casillero distribuidas de forma aleatoria, lo mismo ocurre con la tabla fila, en la que tenemos distribuidas de forma aleatoria los valores de las filas del casillero, esto lo usaremos más adelante en el segmento de código para elegir aleatoriamente un elemento de la tabla fila y otro de la de columna e ir de este modo colocando las minas en el casillero columna db A,D,E,C,F,G,B,H,F,B,H,G,A,C,B,A Fila db 5H,09H,0DH,0BH,0FH,07H,13H,11H,0FH,09H,0FH,15H,0BH,07H,09H,13H La tabla filatitulo la utilizaré para colocar el texto A---B---C... en pantalla sobre el casillero y poder así saber el nombre de cada columna, el nombre de las filas lo programaré en el segmento de código. Las tablas contorno1... contorno4 son las correspondientes a los códigos ASCII para dibujar el casillero filatitulo db "A B C D E F G H","$" contorno1 db 201,3 dup (205),7 dup (203,3 dup(205)),187,"$" contorno2 db 204,3 dup (205),7 dup (206,3 dup(205)),185,"$" contorno3 db 200,3 dup (205),7 dup (202,3 dup(205)),188,"$" contorno4 db 9 dup (186," "),"$" Reservo 4 bytes del segmento de datos y cierro el segmento de datos posicion db 4 dup (?) datos ends Apertura del segmento de datos codigo segment para

22 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 22 assume cs:codigo,ss:pila,ds:datos incluyo los ficheros pamcur.asm y macros2.asm, en el fichero pamcur.asm tengo la INCLUDE PAMCUR.ASM include macros2.asm Apertura del procedimiento principal en el dibujare el casillero e inicialización del segmento de datos preppantalla proc far mov ax,datos mov ds,ax Mediante el servicio 00h de la interrupción 10h de la BIOS, colocamos la resolución de pantalla en 80X25 color Alfanumérica. mov ax,0003h Mediante la macro pamcur colocaremos el cursor en la línea 05, columna 13 y página 0 de la pantalla para escribir el texto guardado en la tabla filatitulo, esta tabla la escribo usando el servicio 09h de la interrupción 21h pamcur 13h,05h,00h lea dx,filatitulo mov ah,09h Las siguientes 15 instrucciones realizan la tarea de colocar números a la izquierda del casillero que dibujaré mas tarde como títulos para esas líneas, inicialmente cargamos AL con el valor 31h que es el código ASCII correspondiente al número 1. mov al,31h Cargo DH con 07 que será el número de la primera fila, es decir, donde quiero escribir el número 1, par el resto de números se deberá de ir incrementando este valor. mov dh,07h Cargo AH con 02 que será el número de servicio que usaré para recolocar el cursor cada vez que quiera un número. salto: mov ah,02h Cargo DL con 10h que será el número de columna de pantalla común para escribir todos los números del 0 al 8, estos irán todos en la misma columna pero diferente fila. mov dl,10h Cargo en BH el número de página donde voy a escribir el número mov bh,00h

23 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 23 Con los registros ya cargador para colocar el cursor en la posición de pantalla deseada, llamo a la interrupción 10h de la BIOS que coloca el cursor en esa posición. Una vez colocado el cursor en la posición de pantalla que deseo, debo escribir el número de línea del casillero en esa posición, para ello utilizo el servicio 0Ah de la interrupción 10h, indicando en BH el número de página donde quiero escribir y en CX el número de veces que quiero escribir, antes hemos cargado en AL el valor ASCII del carácter que queremos mostrar, con estos registros el servicio 09h de la interrupción 10h nos muestra el dato en pantalla mov ah,0ah mov bh,00h mov cx,0001h Con lo anterior hemos colocado el número 1 (Código ASCII = 31h) en la línea 07 de la pantalla, el numero de línea lo tenía en DH y el código ASCII en AL, si incrementamos DH en dos unidades y AL en una unidad, y volvemos a la etiqueta salto, escribiremos 2 en la línea 09h, esto lo repito hasta que AL alcance el valor 39h = 9, en ese momento dejaremos de saltar a la etiqueta salto inc dh inc dh inc al cmp al,39h jne salto Coloco el cursor en la columna 11, fila 06 y página 0 para comenzar a dibujar el casillero pamcur 11h,06h,00h Con el servicio 09h de la interrupción 21h, dibujo la primera línea del contorno mov dx,offset contorno1 MOV AH,09H INT 21H

24 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 24 La parte de código entre irp y endm se repite una vez para cada valor encerrado entre los símbolos <>, sustituyendo ese valor en la variable ue sigue a irp, en este caso fila, en este caso sirve para dibujar las líneas internas del casillero, no la superior ni la inferior, sólo las internas. Con este irp dibujo la tabla contorno2 en las líneas 8,0a,...etc usando el servicio 09h de la interrupcion 21h del DOS. irp fila,<8h,0ah,0ch,0ch+02h,0ch+04h,0ch+06h,0ch+08h> pamcur 11h,fila,00h mov dx,offset contorno2 mov ah,09h endm Con las siguientes cuatro instrucciones se dibuja la última línea del casillero en la columna 11, fila 16 y página 0, usando el servicio 09h de la interrupción 21h pamcur 11h,16h,00h lea dx,contorno3 mov ah,09h

25 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 25 Para finalizar el casillero sólo falta colocar el dibujo que se muestra con barras verticales, estas barras hay que colocarlas a partir de la línea 07 hasta la 15 saltando líneas de 2 en 2, es decir, lo tengo que colocar en las líneas 7,9,B,D,F,11,13 y 15, estas barras están también en una tabla del segmento de datos con el nombre contorno4 Vamos a usar el registro bl para indicar en que línea se debe escribir la tabla contorno4, su valor inicial será de 07h ya que es la primera línea donde debemos escribir esta tabla, luego haré un bucle para ir aumentando este valor de 2 en 2 e ir colocando la tabla contorno4 en todas las posiciones necesarias mov bl,07h Coloco el cursor en la página 0, columna 0 y fila indicada en BL que en principio será 07h e ira aumentando de 2 en 2 cada vez que se ejecute el bucle salto2. salto2: pamcur 11h,bl,00h Una vez colocado el cursor en cada una de las posiciones, llamo al servicio 09h de la interrupción 21h de DOS para colocar en pantalla la tabla contorno4 lea dx,contorno4 mov ah,09h Una vez colocada la tabla en una fila, aumento BL en dos unidades para colocar contorno4, esto lo haremos mientras ese valor de BL no sea igual JNE a 17h, si es igual a este valor, saldré del bucle add bl,02h cmp bl,17h jne salto2 Llamada al procedimiento colocaminas en el que realizaré la colocación de las M indicando el lugar donde tengo minas call colocaminas Llamada a la macro colocanumeros en la que rellenaré las casillas que rodean las minas con el número de minas que tienen alrededor call colocanumeros Coloco el cursor en la página, fila y columna cero y finalizo el programa pamcur 0,0,0 mov ax,4c00h Fin del procedimiento preppantalla preppantalla endp

26 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 26 Comienzo del procedimiento colocaminas (es NEAR para poder saltar a él desde un procedimiento de este mismo segmento de código) en el que colocaremos las minas en el casillero, esta colocación la haremos de la siguiente manera: leeremos la hora del sistema con el servicio 2Ch de la interrupción 21h del DOS, al usar esta interrupción, nos devuelve entre otras cosas en DH los segundos (en hexadecimal) y separaremos las unidades de segundo y las décimas de segundo, el número de las unidades de segundo lo tomaremos como offset sobre la tabla columna para saber en que columna se debe de colocar la primera mina, y las decenas de segundo las tomaremos como offset sobre la tabla fila para saber en que fila debemos de colocar esa primera mina, el resto de minas se colocarán aumentando ambos valores de offset. colocaminas proc near La posición de memoria ds:[posicion+2] la voy a usar para controlar el numero de minas que coloco en pantalla, por ello en principio me interesa que esté a cero mov ds:[posicion+2],00h Leemos la hora del sistema con el servicio 2Ch de la interrupción 21h, con esta interrupción quedará: CH = Hora, CL = Minutos, DH = Segundos, DL= centésimas de segundo. mov ax,2c00h Guardamos el dato de los segundos leídos en DX en la pila. Esto lo hago porque para separar las unidades y las decenas de segundo voy a modificar el registro DH que es donde tengo los segundos leídos con la interrupción anterior, y si primero leo las unidades modificando DH, luego debo recuperar los segundos completos de la pila para separar las decenas. otra2: push dx Para que en el registro DH sólo me queden las unidades de segundo hago la operación AND entre el registro DH y el valor inmediato 0Fh, ese valor obtenido lo guardo en el segmento de datos con el offset indicado en la tabla posición and dh,0fh mov ds:[posicion],dh Leo el dato de la tabla columna del segmento de datos con el offset DH que son las unidades de segundo y ese valor leído me lo llevo a CL, porque luego voy a leer de la otra tabla y el resultado de la lectura irá también a AL lea bx,columna mov al,dh xlat columna mov cl,al Recupero el valor de DX que tenía e la pila ya que ahora quiero recoger de ese valor la cantidad de decenas de segundo que he leído al leer la hora. pop dx

27 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 27 Del valor completo de los segundos me interesan sólo las decenas, para hacer esta separación, hago la operación AND de los segundos con el valor F0h, es decir, que si había leído 15 segundos, el registro DH después de la operación AND quedará cargado con 10, y lo que me interesa entosces es recoger el dato que ocupa la posición 1 en la tabla fila, para ello debo convertir el 10 en 01, esto lo hago desplazando los bits de del número hexadecimal 10 4 veces a la derecha y ese valor también lo almaceno en el segmento de datos con desplazamiento posición + 1, el dato leido de la tabla fila con la instrucción XLAT queda almacenado en AL and dh,0f0h lea bx,fila mov al,dh shr al,01h shr al,01h shr al,01h shr al,01h mov ds:[posicion+1],al xlat fila Llegado este punto del programa, tendremos en cl la columna donde quiero colocar la mina y en al la fila, así que colocaremos el cursor en esa posición de la página cero. pamcur cl,al,00h Con el servicio 0Ah de la interrupción 10h coloco una M mayúscula en esa posición del casillero. mov bh,00h mov al,mina mov cx,0001h mov ah,0ah saltos para evitar error de salto largo jmp otra3 otramina: jmp otra2 En ds:[posicion] tengo el valor del offset de la tabla columna de la que he recogido el valor de la columna donde colocar la mina anterior, para la siguiente mina debo aumentar este valor en una unidad para coger el siguiente valor, pero antes me debo asegurar que el valor recogido no era el último, para ello comparo ds:[posicion] con 0Fh ya que dicha tabla tiene 0F elementos, si es igual a 0F, pongo esa posición de memoria a cero y así la siguiente mina sera colocada en la columna que ocupa la posición 1 de la tabla. otra3: cmp ds:[posicion],0fh jne pepe mov ds:[posicion],00h

28 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 28 Esta parte es igual que la anterior pero para la tabla fila pepe: cmp ds:[posicion+1],0fh jne luis mov ds:[posicion+1],00h Incremento los datos que tengo en ds:[posicion] y en ds:[posicion + 1], que son respectivamente los offset de los datos recogidos de las tablas columna y fila, para de esta forma recoger los siguientes. luis: inc ds:[posicion] inc ds:[posicion+1] El objetivo del siguiente conjunto de instrucciones es almacenar en DH los mismos segundos en los que me he basado para colocar la mina anterior pero aumentadas la unidades en uno y las decenas en uno, tenemos esas cifras en DS:[0000] = las unidades y en DS:[0001] las decenas. Debo mover el contenido de DS:[posicion+1] = decenas cuatro bits a la izquierda, es decir convertir por ejemplo un 2 en un 20. mov cx,0004 shl [posicion+1],cl Para realizar la operación usaré la posición de memoria DS:[posicion+3] y cuando tenga el dato ya preparado lo llevaré a DH, antes de empezar a preparar el dato me aseguro que DS:[0003] está vacía mov ds:[posicion+3],00h Copiamos el dato de las unidades de segundo de DS:[0000] a DS:[0003], pero para ello tengo que usar un registro intermedio con dos mov o como en este caso con un mov y un OR mov al,ds:[posicion] or ds:[posicion+3],al Y de la misma forma copio las decenas, en este caso el segundo tendrá que ser una instrucción OR, ya que sino me borraría las unidades mov al,ds:[posicion+1] or ds:[posicion+3],al Como el dato que quería conseguir ya lo tengo en DS:[0003], lo llevo a DH mov dh,ds:[posicion+3] incremento el dato almacenado en ds:[posicion]+2 que es el contador de minas colocadas, cuando este contador llegue a 0Fh terminaré el procedimiento volviendo al procedimiento desde el que vine utilizando Call, para hacer esto uso la instrucción RET, en caso contrario volverá hacia arriba a la etiqueta otramina para colocar otra mina. inc ds:[posicion+2] cmp ds:[posicion+2],0fh jne otramina ret Finalización del procedimiento colocaminas colocaminas ENDP

29 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 29 Comienzo del procedimiento colocanumeros en el que colocaremos en cada casilla que no tenga mina dentro el número de minas que tiene en las casillas adyacentes, para ello voy a ir casilla por casilla leyendo su contenido y en el caso de que sea diferente a M es decir que no tenga nada haré la cuante de las minas cercanas colocanumeros proc near para ir casilla por casilla viendo si tiene mina o no, empiezo por la casilla A1, es decir la fila 07 y la columna 13h de la página cero que es donde tengo el casillero. mov cl,13h ;primera columna mov ch,07h ;primera fila coloco el cursor en la fila y columna indicadas en ch y cl y con el servicio 08h de la interrupción 10h leo el contenido de esa posición de la pantalla en la página BH = 00h otraposicion: pamcur cl,ch,00h mov ah,08h mov bh,00h Comparo el dato leído con el texto M, en el caso de que no coincida llamaré a la macro scanceldas que contará las minas de las casillas adyacentes, pero si coincide, no entraré en esta macro. cmp al,"m" je otracelda2 Llamado a la macro que cuenta cuantas minas hay alrededor de una casilla vacía y escribe el número en dicha casilla scanceldas

30 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 30 Una vez llegado a este punto, debemos posicionar el cursor en la siguiente celda que quiero estudiar si tiene o no mina y en su caso rellenar el número,, para ir a la siguiente casilla en principio miro si el valor de CL (columna de la última celda chequeada) es igual a 2Fh, ya que en ese caso corresponde a la columna H, y la siguiente celda que debería mirar sería la de la columna 13h ( A ) pero de la siguiente fila a no ser que la fila chequeada sea la 15h (última), en cuyo caso ya he terminado de mirar todas las celdas. Primero comparo la columna con 2Fh, si no es igual salto a la etiqueta otracolumna en la que sumaré 4 a la columna actual para pasar a la siguiente columna del casillero, y sin tocar la fila volveré a la etiqueta otraposición para chequear la siguiente celda de esa misma fila pero una columna a la derecha. Si la comparación dice que CL = 2Fh, pongo CL = 13h indicando que voy a chequear la primera columna de la siguiente fila, pero antes me debo asegurar que no he chequeado ya todas las filas comparando CH con 15h, si no he mirado todas las filas, salto a la etiqueta otrafila en la que aumento CL en dos unidades para empezar con la siguiente fila y primera columna, saltando a la etiqueta otraposicion. En el caso de haber chequeado todas las filas y columnas, ejecuto la instrucción Ret que me hace volver al procedimiento preppantalla. otracelda: cmp cl,2fh jne otracolumna mov cl,13h cmp ch,15h jne otrafila ret otracolumna: add cl,04h jmp otraposicion otrafila: add ch,02h jmp otraposicion Finalización del procedimiento colocanumeros y del segmento de código colocanumeros endp codigo ends Segmento de pila y finalización del programa indicando el nombre del procedimiento principal pila segment para stack dw 512 dup (?) pila ends end preppantalla

31 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 31 PROGRAMA MACROS2.ASM En este fichero guardo la macro macros2.asm que utilizo en el programa minas.asm, esta macro la utilizo para rellenar las casillas donde no hay minas con el número de minas que tiene esa casilla alrededor. Comienzo de la macro, se puede observar que no tiene parámetros, por el programa minas.asm, en esta macro sólo se entrará al ir celda por celda leyendo su contenido y en el caso de que en la posición actual del cursor no exista una M scanceldas macro Antes de empezar con la macro, guardo el contenido de los registros en la pila, estos registros los recuperaré antes de salir, así me aseguro que al salir los dejo tal y como estaban antes de entrar push ax push bx push cx push dx Con el servicio 03h de la interrupción 10h, le indico que lea la posición actual del cursor en la página que yo le digo en BH, al ejecutarse este servicio quedará en DH la fila en la que se encuentra el cursor y en DL la columna. mov ah,03h mov bh,00h El registro CL lo voy a utilizar como contador de minas que hay alrededor de la casilla actual, por ello en principio me interesa que este a cero. mov cl,00h Para contar las minas adyacentes a la posición actual del cursor, debo variar la posición actual del cursor a las otras casillas y leer su contenido, pero para no perder la posición actual en la que quiero rellenar el número, guardo DX en la pila push dx Coloco el cursor en la celda que está encima a la derecha de la casilla que quiero rellenar sub dl,04h sub dh,02h pamcur dl,dh,00h Con el servicio 08h de la interrupción 10h leo el contenido de la casilla en la que acabo de poner el cursor, como BH ya estaba a cero, no hace falta que lo vuelva a poner, el resultado de la lectura quedará en AL el código ASCII del carácter leído y en AH su atributo mov ah,08h

32 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 32 Comparo el carácter leído con M, si es igual no salta aún a la etiqueta scanarriba e incrementa el contador CL colocándolo a 1 y entonces es cuando salta a la etiqueta scanarriba donde seguiré escaneando las celdas adyacentes cmp al,"m" jne scanarriba inc cl jmp scanarriba Salto intermedio para corregir error de salto largo otracelda2: jmp otracelda Recupero el registro DX de la pila en el que tengo guardada la fila y columna de la casilla que quiero rellenar con el número de minas que le rodean, también lo vuelvo a guardar para poder volver a acceder a él en el caso de que lo necesite scanarriba: pop dx push dx Igual que antes examino la celda que está encima de la que quiero rellenar y en el caso de que tenga una mina incremento CL sub dh,02h pamcur dl,dh,00h mov ah,08h cmp al,"m" jne scanarrder inc cl Igual que los pasos anteriores para la celda que está encima a la derecha. scanarrder: pop dx push dx add dl,04h sub dh,02h pamcur dl,dh,00h mov ah,08h cmp al,"m" jne scanizda inc cl

33 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 33 Igual que los pasos anteriores para la celda que está a la izquierda. scanizda: pop dx push dx sub dl,04h pamcur dl,dh,00h mov ah,08h cmp al,"m" jne scandcha inc cl Igual que los pasos anteriores para la celda que está a la derecha. scandcha: pop dx push dx add dl,04h pamcur dl,dh,00h mov ah,08h cmp al,"m" jne scanabizda inc cl Igual que los pasos anteriores para la celda que está abajo a la izquierda. scanabizda: pop dx push dx sub dl,04h add dh,02h pamcur dl,dh,00h mov ah,08h cmp al,"m" jne scanabajo inc cl Igual que los pasos anteriores para la celda que está debajo. scanabajo: pop dx push dx add dh,02h pamcur dl,dh,00h mov ah,08h cmp al,"m" jne scanabdca inc cl

34 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 34 Igual que los pasos anteriores para la celda que está debajo a la derecha scanabdca: pop dx push dx add dl,04h add dh,02h pamcur dl,dh,00h mov ah,08h cmp al,"m" jne escribir inc cl En este punto del programa tengo cargado en CL el número de minas que hay alrededor de la casilla que quiero rellenar, pero en el caso de que no tenga minas alrededor, en vez de que aparezca un 0 quiero que aparezca la celda vacía Recupero la posición de la celda que quiero rellenar de la pila y vuelvo a colocar el cursor en esa posición escribir: pop dx pamcur dl,dh,00h Cargo BH con 00h porque cuando escriba el dato en la casilla quiero que sea en la página cero. mov bh,00h El dato que quiero escribir lo tengo en CL, que es el registro donde he ido sumando las minas que había alrededor de la casilla actual, este dato lo llevo a AL, ya que es el registro en el que debo cargar el código ASCII del carácter que quiero escribir con el servicio 0Ah de la interrupción 10h. A este valor le sumo 30h, ya que lo que debo cargar en AL es el código ASCII del número, esto se consigue sumándole 30h mov al,cl add al,30h Comparo el código ASCII que voy a escribir con el valor 30h que es el correspondiente al 0, y el el caso de que sea igual, sustituyo ese código 30h por el código ASCII del espacio en blanco. cmp al,30h jne noes mov al," " Doy la orden de escribir el carácter cuyo código ASCII está en AL en pantalla una vez con el servicio 0Ah de la interrupción 10h noes: mov cx,0001h mov ah,0ah

35 ESTRUCTURA DE COMPUTADORES I (Programas de ejemplo pantalla alfanumérico) 35 Antes de finalizar la macro recupero los registros de la pila tal y como estaban antes de entrar y finalizo la macro pop dx pop cx pop bx pop ax endm

Tema 4. La pila, los procedimientos y las macros

Tema 4. La pila, los procedimientos y las macros Tema 4. La pila, los procedimientos y las macros Laboratorio de Estructura y Organización de Computadores Grados en Ingeniería Informática e Ingeniería de Computadores Curso 2012-2013 2010-2011 Índice

Más detalles

62/8&,21(6$/(;$0(1'( /$%25$725,2'((6758&785$6'(/26&20387$'25(6 &8562)(%5(52

62/8&,21(6$/(;$0(1'( /$%25$725,2'((6758&785$6'(/26&20387$'25(6 &8562)(%5(52 62/8&,21(6$/(;$0(1'( /$%25$725,2'((6758&785$6'(/26&20387$'25(6 &8562)(%5(52 3DUWHGH(QVDPEODGRU 4º) Escribir un programa en ensamblador que pida un número de una cifra por teclado y saque como resultado

Más detalles

Examen Parcial de Arquitectura de Computadoras Prof: Ing. José ESTRADA MONTES

Examen Parcial de Arquitectura de Computadoras Prof: Ing. José ESTRADA MONTES Examen Parcial de Arquitectura de Computadoras Prof: Ing José ESTRADA MONTES 1- Diseñe un sistema de control de un motor de paso ( hardware y software ) a través de una computadora y una tarjeta de interfase

Más detalles

Examen de Laboratorio de Estructura de Computadores I.T. Informática de Gestión / Sistemas. 16 de junio de 2010 Departamento de Automática ATC

Examen de Laboratorio de Estructura de Computadores I.T. Informática de Gestión / Sistemas. 16 de junio de 2010 Departamento de Automática ATC ExamendeLaboratoriodeEstructuradeComputadores I.T.InformáticadeGestión/Sistemas.16dejuniode2010 DepartamentodeAutomática ATC Test (3 puntos) Pregunta correcta = 0,30 Pregunta no contestada = 0 Pregunta

Más detalles

EJEMPLOS EJERCICIOS RESUELTOS MOV CX,320*200 ; ESTA OPERACIÓN LA REALIZA EL ENSAMBLADOR XOR DI,DI CLD REP STOSB

EJEMPLOS EJERCICIOS RESUELTOS MOV CX,320*200 ; ESTA OPERACIÓN LA REALIZA EL ENSAMBLADOR XOR DI,DI CLD REP STOSB EJEMPLOS Y EJERCICIOS RESUELTOS Ejemplo: el siguiente código borra la pantalla (estableciendo el color 0 a todos los pixels): MOV MOV AX,0A000H ES,AX MOV CX,320*200 ; ESTA OPERACIÓN LA REALIZA EL ENSAMBLADOR

Más detalles

Pregunta correcta=0,4 Pregunta no contestada=0 Pregunta incorrecta (tipo test)=-0,15

Pregunta correcta=0,4 Pregunta no contestada=0 Pregunta incorrecta (tipo test)=-0,15 Pregunta correcta=0,4 Pregunta no contestada=0 Pregunta incorrecta (tipo test)=-0,15 Sistemas operativos, arquitectura von Neumann, configuración del PC (3 puntos) 1) Cual de las siguientes afirmaciones

Más detalles

Estructura de Computadores: Tema 1. Introducción. Índice. Arquitectura del i8086

Estructura de Computadores: Tema 1. Introducción. Índice. Arquitectura del i8086 Estructura de Computadores: Tema 1 El procesador Introducción Estudiaremos la arquitectura del procesador i8086 (CPU, registros,...), su gestion de la memoria y su conjunto de instrucciones. Programaremos

Más detalles

Tema 5: La pila, las macros y los procedimientos

Tema 5: La pila, las macros y los procedimientos Tema 5: La pila, las macros y los procedimientos S La pila S Las macros S Definición de procedimientos S Tipos de procedimientos: NEAR y FAR S Paso de parámetros a un procedimiento S Mediante registros

Más detalles

Universidad Nacional de Ingeniería Arquitectura de Maquinas I. Unidad II: Arquitectura y Programacion de un Microprocesador (80X86)

Universidad Nacional de Ingeniería Arquitectura de Maquinas I. Unidad II: Arquitectura y Programacion de un Microprocesador (80X86) Universidad Nacional de Ingeniería Arquitectura de Maquinas I Unidad II: Arquitectura y Programacion de un Microprocesador (80X86) Arq. de Computadora I Ing. Carlos Ortega H. 1 Interrupciones FUNCIÓN INT

Más detalles

62/8&,21(6&20(17$'$6$/(;$0(1'( /$%25$725,2(6758&785$6'(/26&20387$'25(6 6(37,(0%5('(

62/8&,21(6&20(17$'$6$/(;$0(1'( /$%25$725,2(6758&785$6'(/26&20387$'25(6 6(37,(0%5('( 62/8&,21(6&20(17$'$6$/($0(1'( /$%25$725,2(6758&785$6'(/26&20387$'25(6 6(37,(0%5('(,7,*(67,Ï1,7,6,67(0$6 1º) Se desea realizar un fichero BAT que cumpla los siguientes requisitos: a) Si no se le pasa ningún

Más detalles

Examen de Laboratorio de Estructura de Computadores Septiembre 2005 I.T. Informática de Sistemas / Gestión Departamento de Automática ATC -

Examen de Laboratorio de Estructura de Computadores Septiembre 2005 I.T. Informática de Sistemas / Gestión Departamento de Automática ATC - Test (3 puntos) Pregunta correcta= 0,3 Pregunta no contestada= 0 Pregunta incorrecta (tipo test)= -0,15 1) Cual de las siguientes afirmaciones es correcta? [_] a) En lenguaje máquina se representan las

Más detalles

ESTRUCTURA Y ORGANIZACIÓN DE COMPUTADORES

ESTRUCTURA Y ORGANIZACIÓN DE COMPUTADORES Instrucciones del 8088/8086. Instrucciones de trasferencia de datos. MOV MOV destino, origen Transfiere un byte o una palabra desde el operando origen al operando destino. PUSH PUSH origen Decrementa el

Más detalles

Conceptos de Arquitectura de Computadoras Curso 2015

Conceptos de Arquitectura de Computadoras Curso 2015 PRACTICA 1 Assembly, Instrucciones, Programas, Subrutinas y Simulador MSX88 Objetivos: que el alumno Domine las instrucciones básicas del lenguaje assembly del MSX88. Utilice los diferentes modos de direccionamiento.

Más detalles

CON LOS VALORES ASCII

CON LOS VALORES ASCII PRÁCTICA 6 FAMILIARIZARSE CON LOS VALORES ASCII DE TODAS LAS FUNCIONES DEL TECLADO. INTRODUCCIÓN La práctica siguiente está enfocada a que el alumno se familiarice con los valores ASCII de todas las funciones

Más detalles

Pregunta correcta=0,4 Pregunta no contestada=0 Pregunta incorrecta (tipo test)=-0,2

Pregunta correcta=0,4 Pregunta no contestada=0 Pregunta incorrecta (tipo test)=-0,2 Pregunta correcta=0,4 Pregunta no contestada=0 Pregunta incorrecta (tipo test)=-0,2 Sistemas operativos, arquitectura von Neumann, configuración del PC (4 puntos).- Señale la opción incorrecta: [_] a)

Más detalles

DEBUG Y USO DE CADENAS.

DEBUG Y USO DE CADENAS. 1 Facultad: Ingeniería. Escuela: Electrónica. Asignatura: Microprocesadores. Lugar de ejecución: Microprocesadores (Edificio 3, 2da planta). DEBUG Y USO DE CADENAS. Objetivos específicos Analizar paso

Más detalles

Espero que lo disfrutéis, como yo lo disfruté en su momento: MODEL small. .STACK 100h .DATA

Espero que lo disfrutéis, como yo lo disfruté en su momento: MODEL small. .STACK 100h .DATA Aúnque no os lo creáis, hace más de 30 años programaba en Assembler 8086 a "pelo", si si, a "pelo", lo habéis leido correctamente, en esa época en la que el Spectrum formaba parte de nuestra vida cotidiana,

Más detalles

Sobre cómo dividir un programa ensamblador x86 (modo Real) en módulos compilables por separado.

Sobre cómo dividir un programa ensamblador x86 (modo Real) en módulos compilables por separado. Sobre cómo dividir un programa ensamblador x86 (modo Real) en módulos compilables por separado. Fuente de la información de partida para este documento: http://homepage.mac.com/eravila/asmix86.html PRIMERO

Más detalles

[etiqueta:] REP MOVSn

[etiqueta:] REP MOVSn INSTRUCCIONES DE CADENA Instrucción MOVSn MOVS mueve un byte, palabra o palabra doble desde una localidad en memoria a otra. Se carga la dirección de los operandos en los registros DI (Apuntador a la cadena

Más detalles

Examen de teoría (5 puntos)

Examen de teoría (5 puntos) Bien: Mal: No contestadas: Examen de teoría (5 puntos) El examen tendrá una duración total de 2 horas. El examen constará de dos partes: teoría y problemas. La nota final será la suma de las dos partes

Más detalles

Tema 5.1: Presentación de datos en pantalla

Tema 5.1: Presentación de datos en pantalla Tema 5.1: Presentación de datos en pantalla El registro de flags del i8086 Instrucciones de transferencia Instrucciones de transferencia de control Instrucciones aritméticas: comparación Representación

Más detalles

Tema 2: Segmentación y modos de direccionamiento

Tema 2: Segmentación y modos de direccionamiento Tema 2: Segmentación y modos de direccionamiento Segmentación Modos de direccionamiento Direccionamiento relativo Instrucciones de transferencia de control Instrucciones aritméticas: comparación Ejemplo

Más detalles

Arquitectura Interna del 8088

Arquitectura Interna del 8088 Arquitectura Interna del 8088 Intel diseñó el 8088/8086 para realizar al mismo tiempo las principales funciones internas de transferencia de datos y búsqueda de instrucciones. Para conseguir esto, el 8088

Más detalles

Instrucciones de Control de Flujo y Usos de la Pila

Instrucciones de Control de Flujo y Usos de la Pila 1 Instrucciones de Control de Flujo y Usos de la Pila Objetivos Generales Facultad: Estudios Tecnologicos. Escuela: Electrónica Asignatura: Microprocesadores Analizar la forma en que se ejecutan algunas

Más detalles

ENSAMBLADOR DE ARCHIVO TASM MASM NASM GAS. Características de un Ensamblador de Archivo

ENSAMBLADOR DE ARCHIVO TASM MASM NASM GAS. Características de un Ensamblador de Archivo ENSAMBLADOR DE ARCHIVO TASM MASM NASM GAS Características de un Ensamblador de Archivo Traduce de Leng Ensamblador a Lenguaje máquina Permite definición de etiquetas Reserva memoria para variables octales

Más detalles

SISTEMAS BASADOS EN MICROPROCESADOR 2º Grado Ingeniería Informática (EPS UAM) EXAMEN FINAL EXTRAORDINARIO JULIO 2013 ENUNCIADO DEL PROBLEMA

SISTEMAS BASADOS EN MICROPROCESADOR 2º Grado Ingeniería Informática (EPS UAM) EXAMEN FINAL EXTRAORDINARIO JULIO 2013 ENUNCIADO DEL PROBLEMA SISTEMAS BASADOS EN MICROPROCESADOR 2º Grado Ingeniería Informática (EPS UAM) EXAMEN FINAL EXTRAORDINARIO JULIO 2013 ENUNCIADO DEL PROBLEMA IMPLEMENTACIÓN DE UN DRIVER DOS INTERFAZ CON UN SISTEMA DE RADIO

Más detalles

Formato para prácticas de laboratorio

Formato para prácticas de laboratorio Formato para prácticas de laboratorio CARRERA PLAN DE ESTUDIO CLAVE ASIGNATURA IC 2005 1 5041 NOMBRE DE LA ASIGNATURA Organización de Computadoras y Lenguaje Ensamblador PRÁCTICA No. 7 LABORATORIO DE NOMBRE

Más detalles

ÍNDICE. Introducción...pág. 1. Implementación de la práctica...pág. 2. Interrupciones...pág. 2

ÍNDICE. Introducción...pág. 1. Implementación de la práctica...pág. 2. Interrupciones...pág. 2 ÍNDICE Introducción...pág. 1 Implementación de la práctica...pág. 2 Interrupciones...pág. 2 Función 0 INT 14h...pág. 4 Función 2 INT 14h...pág. 5 Función 5 INT 14h...pág. 6 Función 9 INT 21h...pág. 6 Protocolo

Más detalles

Práctica 2. Registros y posiciones de memoria

Práctica 2. Registros y posiciones de memoria Enunciados de prácticas Práctica 2. Registros y posiciones de memoria Estructura y Organización de Computadores Grados en Ingeniería Informática e Ingeniería de Computadores Curso 2012-2013 Práctica 2:

Más detalles

CONJUNTO DE INSTRUCCIONES µp8086

CONJUNTO DE INSTRUCCIONES µp8086 CONJUNTO DE INSTRUCCIONES µp8086 Se llama INSTRUCCIÓN a las palabras reservadas ó MNEMÓNICOS en ensamblador, los cuales se traducen a lenguaje máquina para su posterior ejecución por parte de la CPU. Existen

Más detalles

Tema 4: Las interrupciones y la ROM-BIOS

Tema 4: Las interrupciones y la ROM-BIOS Tema 4: Las interrupciones y la ROM-BIOS S Interrupciones S Tarjetas de vídeo y memoria asociada S El formato de los caracteres S Pantalla en modo alfanumérico S La ROM-BIOS S Modos de vídeo y su control

Más detalles

Práctica 4. Lenguaje máquina y lenguaje ensamblador

Práctica 4. Lenguaje máquina y lenguaje ensamblador Enunciados de prácticas Práctica 4. Lenguaje máquina y lenguaje ensamblador Estructura y Organización de Computadores Grados en Ingeniería Informática e Ingeniería de Computadores Curso 2012-2013 Práctica

Más detalles

OPCIONES DE INT 21H (LLAMADAS A FUNCIONES DE DOS)

OPCIONES DE INT 21H (LLAMADAS A FUNCIONES DE DOS) OPCIONES DE INT 21H (LLAMADAS A FUNCIONES DE DOS) AH Propósito Tipo Descripción. 0 Terminación del programa Control Termina la ejecución de un programa. 1 Entrada desde el teclado Teclado Espera entrada

Más detalles

Los números naturales y enteros en el 80X86 y en LAN

Los números naturales y enteros en el 80X86 y en LAN Los números naturales y enteros en el 80X86 y en LAN 1. Los números naturales en el 80X86/TASM Representación Sistema de representación En el 80X86 (y en la mayoría de los procesadores), los números naturales

Más detalles

Tema 4. Fundamentos del ensamblador

Tema 4. Fundamentos del ensamblador Tema 4. Fundamentos del ensamblador Laboratorio de Estructura de Computadores I. T. Informática de Gestión / Sistemas Curso 2008-2009 Transparencia: 2 / 30 Índice Filosofía de programación Organigramas

Más detalles

P1.- Para facilitar la tarea, suponemos definido en el segmento de datos lo siguiente:

P1.- Para facilitar la tarea, suponemos definido en el segmento de datos lo siguiente: Problemas P1.- Para facilitar la tarea, suponemos definido en el segmento de datos lo siguiente: ascii DB 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 7_segm DB 3fh,06h,,71h el núcleo del código sería: mov dl, al lea

Más detalles

Programación de IA-32 Modo Real

Programación de IA-32 Modo Real Programación de IA-32 Modo Real Control del flujo de la ejecución Erwin Meza Vega IA-32 Modo real (1/2) Acceso sólo a características limitadas del procesador Se comporta como un 8086 muy rápido Uso de

Más detalles

62/8&,21(6&20(17$'$6$/(;$0(1'( /$%25$725,2(6758&785$6'(/26&20387$'25(6 )(%5(52'(

62/8&,21(6&20(17$'$6$/(;$0(1'( /$%25$725,2(6758&785$6'(/26&20387$'25(6 )(%5(52'( 62/8&,21(6&20(17$'$6$/($0(1'( /$%25$725,2(6758&785$6'(/26&20387$'25(6 )(%5(52'( 1º) Se desea realizar un fichero BAT que cumpla los siguientes requisitos: a) Si no se le pasa ningún parámetro o se le

Más detalles

MOV ;movemos a ax el contenido de la cadena "A" eso significa el y data del segmento de datos

MOV ;movemos a ax el contenido de la cadena A eso significa el y data del segmento de datos TITLE SUMA.MODEL SMALL.STACK 100H.DATA ;titulo del porgrama :modelo de la memoria ;tamaño de la pila ;segmento de datos A DB "teclea dos caracteres: $" ;cadena que vamos a mostrar en pantalla.code ;inicia

Más detalles

DIRECTIVAS DEL ASM86

DIRECTIVAS DEL ASM86 DIRECTIVAS DEL ASM86 Directiva SEGMENT / ENDS nombre SEGMENT [alineación] [combinación] [nombre_clase] PARA PUBLIC BYTE COMMON WORD STACK PAGE MEMORY INPAGE AT nombre ENDS Se usa para definir un segmento

Más detalles

SISTEMAS BASADOS EN MICROPROCESADORES

SISTEMAS BASADOS EN MICROPROCESADORES SISTEMAS BASADOS EN MICROPROCESADORES Grado en Ingeniería Informática Escuela Politécnica Superior UAM COLECCIÓN DE PROBLEMAS DE LOS TEMAS 1.1 A 2.6 P1. Suponiendo que CS=0000h, DS=1000h, ES=FFFFh, SS=2000h,

Más detalles

Instrucciones del microprocesador

Instrucciones del microprocesador Instrucciones del microprocesador Formato de las Instrucciones Las líneas de instrucciones se integran de 4 campos. [Identificador]: Se utiliza par etiquetar a las intrucciones donde se realizara el salto,nombre

Más detalles

Tema 5. Presentación de datos por pantalla

Tema 5. Presentación de datos por pantalla Tema 5. Presentación de datos por pantalla Laboratorio de Estructura de Computadores I. T. Informática de Gestión / Sistemas Curso 2008-2009 Transparencia: 2 / 24 Índice El registro de flags del i8086

Más detalles

Examen de teoría (5 puntos)

Examen de teoría (5 puntos) Examen de Estructura de Computadores. Septiembre de 25 Bien: Mal: No contestadas: Examen de teoría (5 puntos) El examen constará de dos partes: El examen tendrá una duración total de 2 horas. La nota final

Más detalles

SISTEMAS BASADOS EN MICROPROCESADORES

SISTEMAS BASADOS EN MICROPROCESADORES SISTEMAS BASADOS EN MICROPROCESADORES Grado en Ingeniería Informática Escuela Politécnica Superior UAM COLECCIÓN DE PROBLEMAS DE LOS TEMAS 5.5 A 7.2 P1. Escribir una rutina de ensamblador que se quede

Más detalles

Pregunta correcta= 0,3 Pregunta no contestada= 0 Pregunta incorrecta (tipo test)= -0,15

Pregunta correcta= 0,3 Pregunta no contestada= 0 Pregunta incorrecta (tipo test)= -0,15 Pregunta correcta= 0,3 Pregunta no contestada= 0 Pregunta incorrecta (tipo test)= -0,15 Sistemas operativos, arquitectura von Neumann, configuración del PC (3 puntos) 1) Señale la opción correcta: [_]

Más detalles

INT 21H Función 02H Salida de Carácter LLAMADA: AH = 02H DL = Código ASCII a enviar al dispositivo de salida. DEVUELVE: NADA.

INT 21H Función 02H Salida de Carácter LLAMADA: AH = 02H DL = Código ASCII a enviar al dispositivo de salida. DEVUELVE: NADA. INT 21H La mayoría de servicios ó funciones del sistema operativo MS-DOS se obtienen a través de la interrupción software 21H. Es por esto que se le denomina DOS-API: DOS-APPLICATION-PROGRAM-INTERFACE

Más detalles

Tema 1. Fundamentos del lenguaje ensamblador

Tema 1. Fundamentos del lenguaje ensamblador Tema 1. Fundamentos del lenguaje ensamblador Laboratorio de Estructura y Organización de Computadores Grados en Ingeniería Informática e Ingeniería de Computadores Curso 2012-2013 Índice Estructura del

Más detalles

Tema 2. Presentación de datos por pantalla. La ROM-BIOS

Tema 2. Presentación de datos por pantalla. La ROM-BIOS Tema 2. Presentación de datos por pantalla. La ROM-BIOS Laboratorio de Estructura y Organización de Computadores Grados en Ingeniería Informática e Ingeniería de Computadores Curso 2012-2013 Tema 2: Presentación

Más detalles

Ingeniería en Sistemas. Sistemas Operativos. Trabajo Práctico: Repaso de Interrupciones, direccionamiento de memoria y registros del procesador.

Ingeniería en Sistemas. Sistemas Operativos. Trabajo Práctico: Repaso de Interrupciones, direccionamiento de memoria y registros del procesador. Sistemas Operativos Trabajo Práctico: Repaso de Interrupciones, direccionamiento de memoria y registros del procesador. Modalidad: Obligatorio. Objetivos: Abordar la materia Sistemas Operativos desde el

Más detalles

Buses y Periféricos 2006/2007 Práctica 3. Ensamblador

Buses y Periféricos 2006/2007 Práctica 3. Ensamblador Calculadora Descripción El objetivo de esta práctica es utilizar las interrupciones de BIOS y MSDOS para presentar una pequeña calculadora en pantalla. Se pretende programar una calculadora que opere en

Más detalles

Tema 4. Lenguaje máquina y lenguaje ensamblador

Tema 4. Lenguaje máquina y lenguaje ensamblador Enunciados de problemas Tema 4. Lenguaje máquina y lenguaje ensamblador Estructura de Computadores I. T. Informática de Gestión / Sistemas Curso 2008-2009 Tema 4: Hoja: 2 / 28 Tema 4: Hoja: 3 / 28 Base

Más detalles

(3) Unidad 3. Interfaz del ensamblador con el lenguaje C SISTEMAS BASADOS EN MICROPROCESADORES. Grado en Ingeniería Informática EPS - UAM

(3) Unidad 3. Interfaz del ensamblador con el lenguaje C SISTEMAS BASADOS EN MICROPROCESADORES. Grado en Ingeniería Informática EPS - UAM Unidad 3 Interfaz del ensamblador con el lenguaje C SISTEMAS BASADOS EN MICROPROCESADORES Grado en Ingeniería Informática EPS - UAM Índice 3. Interfaz del ensamblador con el lenguaje C. 3.1. Características

Más detalles

Iniciación del mouse El servicio utilizado es el 00, este servicio inicializa el controlador del mouse como sigue:

Iniciación del mouse El servicio utilizado es el 00, este servicio inicializa el controlador del mouse como sigue: Esta es una interrupción de DOS y ayuda a controlar el uso del mouse. Se puede establecer el uso del ratón en modo texto y en modo gráfico. Para hacer uso del mouse se debe establecer el modo de video,

Más detalles

Tema 5.2: Segmentación y modos de direccionamiento

Tema 5.2: Segmentación y modos de direccionamiento Tema 5.2: Segmentación y modos de direccionamiento Segmentación Modos de direccionamiento Direccionamiento relativo Instrucciones de desplazamiento Instrucciones lógicas Ejemplo de acceso a una cadena

Más detalles

Intel 8086 modelo básico (primera parte) Registros:

Intel 8086 modelo básico (primera parte) Registros: Intel 8086 modelo básico (primera parte) Registros: Uso general: AX, BX, CX, DX, SI, DI, BP. Uso con direccionamento especial: SP, IP. Registros de segmento: CS, SS, DS, ES. Modelo de los registros: 20

Más detalles

PROGRAMACIÓN DE UN PROGRAMA DE DIBUJO

PROGRAMACIÓN DE UN PROGRAMA DE DIBUJO Pedro A. Castillo Valdivieso Dpto. ATC. UGR 2007-2008 1 PROGRAMACIÓN DE UN PROGRAMA DE DIBUJO Objetivo de la práctica: Desarrollar un programa en ensamblador para hacer dibujos vectoriales en la pantalla,

Más detalles

EXAMEN ORDINARIO DE ORGANIZACIÓN DE COMPUTADORES

EXAMEN ORDINARIO DE ORGANIZACIÓN DE COMPUTADORES 11 de febrero de 2010 16h. Escuela Técnica Superior de Ingeniería Informática Camino del Cementerio s/n. 47011 Valladolid EXAMEN ORDINARIO DE ORGANIZACIÓN DE COMPUTADORES NOTA: Los alumnos con las prácticas

Más detalles

Tema 6. Segmentación y modos de direccionamiento

Tema 6. Segmentación y modos de direccionamiento Tema 6. Segmentación y modos de direccionamiento Laboratorio de Estructura de Computadores I. T. Informática de Gestión / Sistemas Curso 2008-2009 Transparencia: 2 / 21 Índice Segmentación Modos de direccionamiento

Más detalles

Arquitectura de Computadores II 8086 Parte II

Arquitectura de Computadores II 8086 Parte II 8086 Parte II Facultad de Ingeniería Universidad de la República Instituto de Computación Contenido Funciones recursivas Manejadores de dispositivos Rutinas recursivas(1/10) Introducción Salvar contexto.

Más detalles

SISTEMAS BASADOS EN MICROPROCESADORES

SISTEMAS BASADOS EN MICROPROCESADORES SISTEMAS BASADOS EN MICROPROCESADORES Grado en Ingeniería Informática ENUNCIADO PROBLEMA 1 A continuación se incluye el código de una aplicación formada por un programa principal escrito en lenguaje C,

Más detalles

PROCESAMIENTO DE LOS DATOS. Procesamiento de datos ascii a binario y de binario a ascii

PROCESAMIENTO DE LOS DATOS. Procesamiento de datos ascii a binario y de binario a ascii PROCESAMIENTO DE LOS DATOS Procesamiento de datos ascii a binario y de binario a ascii En ensamblador el tipo de dato es un carácter, por lo tanto es necesario procesar este dato y convertir de su correspondiente

Más detalles

PROGRAMACIÓN EN ASSEMBLER SIMULADOR MSX88

PROGRAMACIÓN EN ASSEMBLER SIMULADOR MSX88 PROGRAMACIÓN EN ASSEMBLER SIMULADOR MSX88 REPASO CONCEPTO DE PROGRAMA ANTES se tenían sistemas cableados Datos Secuencia de funciones aritmético/lógicas Resultados Programación en hardware: cuando cambiamos

Más detalles

Interrupciones por hardware Interrupciones por so?ware

Interrupciones por hardware Interrupciones por so?ware Assembler Una interrupción es muy similar a una llamada a subru0na: implica la suspensión del programa en ejecución y la bifurcación hacia una ru0na especial de atención a la interrupción Existen dos 0pos

Más detalles

Trabajo Práctico Nro 3: Assembler

Trabajo Práctico Nro 3: Assembler Año 28 Banderas Nombre Estado = Estado = 1 Desbordamiento: Indica cuando el resultado de una operación con NV-No hubo OV-Desborde signo a excedido la capacidad del up. desborde Dirección: Controla la selección

Más detalles

62/8&,21(6$/(;$0(1'( /$%25$725,2'((6758&785$6'(/26&20387$'25(6 &8562)(%5(52

62/8&,21(6$/(;$0(1'( /$%25$725,2'((6758&785$6'(/26&20387$'25(6 &8562)(%5(52 62/8&,21(6$/(;$0(1'( /$%25$725,2'((6758&785$6'(/26&20387$'25(6 &8562)(%5(52 3DUWHGH06'26 1º) En el disco fijo de un ordenador se dispone de cuatro programas de aplicación: un procesador de textos (TEXTOS.EXE)

Más detalles

Comparaciones en lenguaje ensamblador

Comparaciones en lenguaje ensamblador Comparaciones en lenguaje ensamblador Objetivo: Entender cómo se realizan las comparaciones de datos en lenguaje ensamblador En lenguaje ensamblador no existe la instrucción IF como se trabaja en otros

Más detalles

Programas Residentes En Lenguaje Ensamblador

Programas Residentes En Lenguaje Ensamblador UNIVERSIDAD DEL VALLE DE GUATEMALA Facultad de Ingeniería Programas Residentes En Lenguaje Ensamblador Trabajo de investigación presentado por Hugo Chinchilla Luis Monteros Josué Rendón Estrada i INDICE

Más detalles

Examen de teoría (5 puntos)

Examen de teoría (5 puntos) Examen de Estructura de Computadores. 4 de Septiembre de 24 Bien: Mal: No contestadas: Examen de teoría (5 puntos) El examen constará de dos partes: ª parte: Test, con una puntuación de 5 puntos y 3 minutos

Más detalles

Transferir datos por medio del puerto paralelo utilizando un lenguaje de bajo nivel. (Lenguaje ensamblador auxiliándose del macroensamblador MASM)

Transferir datos por medio del puerto paralelo utilizando un lenguaje de bajo nivel. (Lenguaje ensamblador auxiliándose del macroensamblador MASM) Microprocesadores. Guía 7 1 Facultad: Ingeniería. Escuela: Electrónica. Asignatura: Microprocesadores. Lugar de ejecución: Microprocesadores (Edificio 3, 2da planta). PUERTO PARALELO. Objetivos específicos

Más detalles

PROBLEMAS DE ESTRUCTURA DE LOS COMPUTADORES LENGUAJE MÁQUINA Y ENSAMBLADOR

PROBLEMAS DE ESTRUCTURA DE LOS COMPUTADORES LENGUAJE MÁQUINA Y ENSAMBLADOR PROBLEMAS DE ESTRUCTURA DE LOS COMPUTADORES EJERCICIO 1: Se tiene la siguiente instrucción del i80x86: MOV AL, Numero: S Se sabe que el contador de programa IP vale 6. S La instrucción ocupa 3 bytes. S

Más detalles

Tema 4. Lenguaje máquina y lenguaje ensamblador

Tema 4. Lenguaje máquina y lenguaje ensamblador Soluciones a los problemas impares Tema 4. Lenguaje máquina y lenguaje ensamblador Estructura de Computadores I. T. Informática de Gestión / Sistemas Curso 2008-2009 Tema 4: Hoja: 2 / 36 Tema 4: Hoja:

Más detalles

ESTRUCTURA DE COMPUTADORES I (Capítulo 16:El Teclado) 1/5 16-EL TECLADO

ESTRUCTURA DE COMPUTADORES I (Capítulo 16:El Teclado) 1/5 16-EL TECLADO ESTRUCTURA DE COMPUTADORES I (Capítulo 16:El Teclado) 1/5 16-EL TECLADO 16.1 INTRODUCCIÓN: El teclado se comunica con la BIOS a través de puertos de comunicación controlados por las interrupciones de la

Más detalles

INSTRUCCIONES. LA ENERGIA DE LA MAQUINA Fundamentos de Computadores Capítulo segundo

INSTRUCCIONES. LA ENERGIA DE LA MAQUINA Fundamentos de Computadores Capítulo segundo INSTRUCCION LA ENERGIA DE LA MAQUINA Fundamentos de Computadores Capítulo segundo Departamento de Automática. Area de Arquitectura y Tecnología de Computadores. INTRODUCCION Computador: se limita a ejecutar

Más detalles

INTRODUCCIÓN AL EMU8086.

INTRODUCCIÓN AL EMU8086. Microprocesadores. Guía 1 1 Facultad: Ingeniería. Escuela: Electrónica. Asignatura: Microprocesadores. Lugar de ejecución: Microprocesadores (Edificio 3, 2da planta). INTRODUCCIÓN AL EMU8086. Objetivos

Más detalles

Desarrollo de Programas Residentes en base a un TSR genérico

Desarrollo de Programas Residentes en base a un TSR genérico Desarrollo de Programas Residentes en base a un TSR genérico Ing. Eduardo Vega Alvarado Jefe del Departamento de Laboratorios Ligeros del CINTEC-IPN E l presente artículo inicia una serie de trabajos sobre

Más detalles

Primera pregunta (1 punto) Segunda pregunta (1 punto) Tercera pregunta (2 puntos) PRIMERA PARTE (SIN LIBROS) Duración: 45 minutos

Primera pregunta (1 punto) Segunda pregunta (1 punto) Tercera pregunta (2 puntos) PRIMERA PARTE (SIN LIBROS) Duración: 45 minutos Duración: 45 minutos PRIMERA PARTE (SIN LIBROS) Responda en la hoja de respuestas que se adjunta Primera pregunta (1 punto) Cuáles son las dos razones principales por las que Algorítmez, pese a tener sólo

Más detalles

Lectura y escritura de un caracter

Lectura y escritura de un caracter Lectura y escritura de un caracter Trabajando con cadenas en Debug Herramientas Entorno Dos y Windows Masm es el ensamblador mas usado en DOS y Windows, desarrollado por Microsoft, puede utilizarse para

Más detalles

HISPANOAMERICANO SCHOOL COMPUTING TEACHER: JHONATTAN MARTINEZ COURSE: 6 th JUEGO DE LA BRUJA EN SCRATCH. Seleccionando personajes

HISPANOAMERICANO SCHOOL COMPUTING TEACHER: JHONATTAN MARTINEZ COURSE: 6 th JUEGO DE LA BRUJA EN SCRATCH. Seleccionando personajes HISPANOAMERICANO SCHOOL COMPUTING TEACHER: JHONATTAN MARTINEZ COURSE: 6 th JUEGO DE LA BRUJA EN SCRATCH Seleccionando personajes En primer lugar, como no queremos trabajar con el gato de Scratch, vamos

Más detalles

FUNCIONES EN EXCEL III

FUNCIONES EN EXCEL III FUNCIONES EN EXCEL III UTILIZANDO REFERENCIAS ABSOLUTAS Y RELATIVAS En Excel puedes especificar tres tipos de referencias: relativas, absolutas y mixtas. Al utilizar el tipo de referencia adecuado nos

Más detalles

SISTEMAS BASADOS EN MICROPROCESADORES

SISTEMAS BASADOS EN MICROPROCESADORES SISTEMAS BASADOS EN MICROPROCESADORES Grado en Ingeniería Informática Escuela Politécnica Superior UAM COLECCIÓN DE PROBLEMAS DE LOS TEMAS 2.7 A 5.4 P1. Si SP=0006h y FLAGS=0210h al inicio de la ejecución

Más detalles

Examen de teoría (4 puntos)

Examen de teoría (4 puntos) Examen de Estructura de Computadores. Septiembre de 2. Examen de teoría (4 puntos) El examen constará de dos partes: S ª parte: Test, con una puntuación de 4 puntos y 3 minutos de tiempo S 2ª parte: Ejercicios

Más detalles

PROGRAMAS PARA LA CLASSPAD MANAGER.

PROGRAMAS PARA LA CLASSPAD MANAGER. PROGRAMAS PARA LA CLASSPAD MANAGER. BUSCA DIVISORES Vamos a preparar un programa sencillo, cuya misión es buscar los divisores de un número. Primero lo prepararemos con el Classpad Manager del ordenador,

Más detalles

LABORATORIOS DE: DISPOSITIVOS DE ALMACENAMIENTO Y DE ENTRADA/SALIDA. MEMORIAS Y PERIFÉRICOS. PRÁCTICA #9 EL RATÓN DE UNA COMPUTADORA

LABORATORIOS DE: DISPOSITIVOS DE ALMACENAMIENTO Y DE ENTRADA/SALIDA. MEMORIAS Y PERIFÉRICOS. PRÁCTICA #9 EL RATÓN DE UNA COMPUTADORA LABORATORIOS DE: DISPOSITIVOS DE ALMACENAMIENTO Y DE ENTRADA/SALIDA. MEMORIAS Y PERIFÉRICOS. PRÁCTICA #9 EL RATÓN DE UNA COMPUTADORA OBJETIVO DE LA PRÁCTICA Conocer y emplear el ratón de una computadora,

Más detalles

Introducción al EMU8086

Introducción al EMU8086 Introducción al EMU8086 Facultad: Estudios Tecnologicos. Escuela: Electrónica. Asignatura: Microprocesadores Objetivo General Utilizar el programa emulador EMU8086 y relacionarlo con los elementos básicos

Más detalles

Memoria Estática Punteros, Vectores y Matrices

Memoria Estática Punteros, Vectores y Matrices Memoria Estática Punteros, Vectores y Matrices Organización del Computador II 1 o Cuatrimestre 2017 28 de Marzo Organización del Computador II Memoria Estática / Punteros / Vectores / Matrices 1 / 29 Repaso

Más detalles

Memoria Estática Punteros, Vectores y Matrices

Memoria Estática Punteros, Vectores y Matrices Memoria Estática Punteros, Vectores y Matrices Organización del Computador II 2 o Cuatrimestre 2017 29 de Agosto Organización del Computador II Memoria Estática / Punteros / Vectores / Matrices 1 / 31

Más detalles

USO DE MEMORIA Y PERIFÉRICOS CON EMU8086. Kervin Sánchez Herrera.

USO DE MEMORIA Y PERIFÉRICOS CON EMU8086. Kervin Sánchez Herrera. USO DE MEMORIA Y PERIFÉRICOS CON EMU8086 Kervin Sánchez Herrera. Estructura del Computador MEMORIA Uso de Memoria La memoria ROM ya está escrita y contiene el programa BOOT de inicio, este programa se

Más detalles

LENGUAJE ENSAMBLADOR PRÁCTICA 10 PRÁCTICA 10

LENGUAJE ENSAMBLADOR PRÁCTICA 10 PRÁCTICA 10 PRÁCTICA 10 USO DE MENÚS PARA MODIFICAR ARCHIVOS DE CONFIGURACIÓN 1 INTRODUCCIÓN Esta práctica ayudará a familiarizarse con el uso de menús, para modificar archivos de configuración. La implementación

Más detalles

Se puede asignar formato a las entradas de las celdas a fin de que los datos queden alineados u

Se puede asignar formato a las entradas de las celdas a fin de que los datos queden alineados u MICROSOFT EXCEL NIVEL MEDIO DE EXCEL MAS ACERCA DE EXCEL ALINEACION DE CONTENIDOS Y CELDAS Se puede asignar formato a las entradas de las celdas a fin de que los datos queden alineados u orientados de

Más detalles

La función CONCATENAR

La función CONCATENAR La función CONCATENAR La función CONCATENAR en Excel nos permite unir dos o más cadenas de texto en una misma celda. Sintaxis de la función CONCATENAR La función CONCATENAR tiene una sintaxis muy sencilla

Más detalles

UNIVERSIDAD TECNOLÓGICA NACIONAL FACULTAD REGIONAL SAN NICOLÁS INGENIERIA EN ELECTRÓNICA

UNIVERSIDAD TECNOLÓGICA NACIONAL FACULTAD REGIONAL SAN NICOLÁS INGENIERIA EN ELECTRÓNICA UNIVERSIDAD TECNOLÓGICA NACIONAL FACULTAD REGIONAL SAN NICOLÁS INGENIERIA EN ELECTRÓNICA TÉCNICAS DIGITALES III TRABAJO PRÁCTICO N 3 ENLACE DE RUTINAS DE ASSEMBLER EN UN LEGUAJE DE ALTO NIVEL COMO C AÑO

Más detalles

ENSAMBLADOR. M.C. Laura Cuayahuitl Romero MODO DE DIRECCIONAMIENTO DIRECTO

ENSAMBLADOR. M.C. Laura Cuayahuitl Romero MODO DE DIRECCIONAMIENTO DIRECTO ENSAMBLADOR M.C. Laura Cuayahuitl Romero MODO DE DIRECCIONAMIENTO DIRECTO IMPORTANTE: LEE CON MUCHO CUIDADO TODO LO ESCRITO EN ESTAS PÁGINAS Y ANALIZA BIEN LOS EJEMPLOS! EL DIA VIERNES 16 DE JUNIO REALIZARÉ

Más detalles

TEMA 7: INICIO A LA PROGRAMACIÓN CON SCRATCH

TEMA 7: INICIO A LA PROGRAMACIÓN CON SCRATCH TEMA 7: INICIO A LA PROGRAMACIÓN CON SCRATCH Scrath es un entorno de programación visual y multimedia destinado a la realización de secuencias animadas con o sin sonido y al aprendizaje de la programación.

Más detalles

2 de septiembre de 2010 Hoja: 1 / 10. Solamente existe una opción válida en las preguntas de respuesta múltiple.

2 de septiembre de 2010 Hoja: 1 / 10. Solamente existe una opción válida en las preguntas de respuesta múltiple. 2 de septiembre de 2 Hoja: / Normas del examen: Solamente existe una opción válida en las preguntas de respuesta múltiple. No se podrá emplear documentación adicional a la del examen. No se podrá emplear

Más detalles

Ejercicios Práctica 4 Primer Cuatrimestre de de abril de 2008

Ejercicios Práctica 4 Primer Cuatrimestre de de abril de 2008 Ejercicios Práctica 4 Primer Cuatrimestre de 2008 Departamento de Computación, FCEyN,Universidad de Buenos Aires. 8 de abril de 2008 Ejercicio 2 Considere el siguiente programa escrito en Assembler de

Más detalles

LENGUAJE ENSAMBLADOR 80386 PRÁCTICA 16 PRÁCTICA 16

LENGUAJE ENSAMBLADOR 80386 PRÁCTICA 16 PRÁCTICA 16 PRÁCTICA 16 PROGRAMA RESIDENTE QUE PUEDE USAR FUNCIONES DE DOS PARA CAPTURAR LA SALIDA A IMPRESORA 1. INTRODUCCIÓN La práctica está dedicada a ilustrar el método para hacer programas residentes en memoria

Más detalles

OPENOFFICE IMPRESS. Creación básica de presentaciones digitales

OPENOFFICE IMPRESS. Creación básica de presentaciones digitales OPENOFFICE IMPRESS Creación básica de presentaciones digitales Qué es OpenOffice Impress? Es la herramienta que nos ofrece OpenOffice para realizar presentaciones Las presentaciones permiten comunicar

Más detalles