LENGUAJE ENSAMBLADOR PRÁCTICA 16 PRÁCTICA 16

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

Download "LENGUAJE ENSAMBLADOR 80386 PRÁCTICA 16 PRÁCTICA 16"

Transcripción

1 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 que sean capaces de poder acceder el disco duro a través de funciones de DOS. 2. OBJETIVOS 2.1 El alumno aprenderá a usar técnicas muy avanzadas de uso de las funciones de DOS. 2.2 Aprenderá a hacer programas que se instalan en memoria para lograr algún fin específico. Dichos programas impiden su reinstalación, una vez que ya están instalados y pueden reconfigurarse a voluntad del usuario. 2.3 Se examinan algunas técnicas para cambiar vectores de interrupción 3. DESARROLLO 3.1 Capturar el siguiente módulo y salvarlo con el nombre DESVIA.ASM. %TITLE "modulo DESVIA.ASM que captura la salida a impresora" ;ensamblar con: TASM desvia ;ligar con TLINK /t desvia ;DESVIA.COM captura salida a una impresora hacia un archivo. Su sintaxis es: ; ; DESVIA PRNn[:]=[[d:][ruta]NomArch] [/B=largo] [/C] ; ;donde PRNn especifica la impresora de la PC a enrutar (PRN1, ;PRN2 o PRN3), "NomArch" especifica el nombre del archivo, y "largo" ;especifica el tamaño del buffer interno de DESVÍA (en kilobytes). ;El "largo" por default es de 4K; Los valores aceptables son de 2K a 32K. ;Al correr DESVÍA sin parámetros en la línea de comandos, se exhibe (si hay) ;el puerto que es redirigido. Ejecutando con /C cancela la redirección. IDEAL MODEL tiny 16-1

2 CODESEG assume CS:_text,DS:_text salto: org jmp 100h inicio firma db 0,1,2,"-DESVIA-",2,1,0 ;firma del programa numeroid db? ;numero para multiplexar int08h dd? ;vector de interrupción 08h int13h dd? ;vector de interrupción 13h int17h dd? ;vector de interrupción 17h int21h dd? ;vector de interrupción 21h int25h dd? ;vector de interrupción 25h int26h dd? ;vector de interrupción 26h int28h dd? ;vector de interrupción 28h int2fh dd? ;vector de interrupción 2Fh BandError dd? ;dirección de band. de error critico BandInt db 0 ;bandera interrupción de disco EnDOS dd? ;dirección de bandera en DOS largo dw 4096 ;tamaño del buffer interno mitad dw 2048 ;mitad del buffer puntero dw 0 ;puntero del buffer SegBuf dw? ;segmento del buffer bytes dw? ;Numero de bytes en buffer contador db 91 ;contador de tiempo descendente PtoSerie db 0FEh,0 ;puerto PRN Redirigido NomArch db 128 dup (?) ;especificación del archivo LOJ manipula interrupción 08h. PROC IntReloj FAR pushf ;salva banderas call [cs:int08h] ;llama manejador previo cli ;Deshabilita interrupciones cmp [cs:contador],0 ;Brinca si contador ;llego a cero dec [cs:contador] ;Decrementa contador ;sale si no cero cmp [cs:puntero],0 ;Brinca si hay datos ;en el buffer mov [cs:contador],91 ;Repone el contador y sale jmp ;si push di ;Salva ES y DI push es cmp [cs:bandint],0 ;Brinca si hay interrupción ;de disco 16-2

3 les di,[cs:endos] ;Brinca si esta en DOS cmp [byte ptr es:di],0 jne les di,[cs:banderror] ;Brinca si el error crítico cmp [byte ptr es:di],0 ;está activo jne call vacia ;Salva buffer en archivo pop es ;Restaura ES y DI pop i IntReloj ;IntImpre manipula interrupción 17h. PROC IntImpre FAR cmp [cs:ptoserie],0ffh ;Brinca si la redirección ;está jmp [cs:int17h] ;salta a rutina del cmp dx,[word ptr cs:ptoserie] ;sale si este puerto PRN no esta ;actualmente redirigido cmp ah,03h ;sale si función trae código ;mayor que 03h push di ;Salva ES y DI push es ;Procesa interrupción 17h, función 00h (transmite carácter a impresora). or ah,ah ;Brinca si AH no es 0 mov [cs:contador],91 ;Repone contador de tics mov di,[cs:puntero] ;apunta con DI al buffer cmp di,[cs:largo] ;Error si el buffer está ;lleno mov es,[cs:segbuf] ;apunta con ES al segmento mov [es:di],al ;pone en buffer al carácter inc di ;Incrementa puntero del buffer mov [cs:puntero],di ;Salva nuevo apuntador cmp di,[cs:mitad] ;sale si el buffer esta menos ;que medio cmp [cs:bandint],0 ;Brinca si bandera de interrupción ;de disco esta puesta les di,[cs:endos] ;Brinca si bandera En DOS cmp [byte ptr es:di],0 ;está puesta 16-3

4 les di,[cs:banderror] ;Brinca si error critico cmp [byte ptr es:di],0 ;está activo jne call vacia ;manda buffer al disco jmp short ;y sale Procesa interrupción 17h, función 01h (inicializa impresora). cmp ah,01h ;Brinca si AH no es 1 cmp [cs:puntero],0 ;sale si el buffer ;está vacío ;lo manda al disco, si no ;Procesa interrupción 17h, función 02h (trae estado de mov di,[cs:puntero] ;trae puntero del buffer cmp di,[cs:largo] ; está el buffer lleno? ;Error si así mov ah,90h ;Retorna señal de OK en AH pop es ;Restaura ES y DI pop di i ;Retorna de la mov ah,08h ;Retorna error de E/S en AH pop es ;Restaura ES y DI pop di i ;Retorna de la interrupción IntImpre ;INTDOS manipula interrupción 21h. PROC pushf IntDOS ;Salva banderas cmp [cs:puntero],0 ;salva si el buffer está ;vacío push di push es cmp [cs:bandint],0 ;Brinca si una interrupción ;de disco está activa les di,[cs:endos] ;Brinca si bandera En DOS cmp [byte ptr es:di],0 ;está activa les di,[cs:banderror] ;Brinca si error critico cmp [byte ptr es:di],0 ;está vigente 16-4

5 call vacia ;salva el buffer en archivo pop es ;Restaura registros pop di popf ;Restaura banderas jmp [cs:int21h] ;sale a manejador original IntDOS ; INTDOSOCIOSO manipula interrupción 28h. PROC IntDOSOcioso FAR pushf ;salva banderas call [cs:int28h] ;llama manejador previo cli ;Deshabilita interrupciones cmp [cs:puntero],0 ;sale si el buffer ;está vacío cmp [cs:bandint],0 ;Brinca si una interrupción ;de disco esta activa push di ;Salva ES y DI push es les di,[cs:banderror] ;Checa el estado de bandera cmp [byte ptr es:di],0 ;de error critico pop es ;Restaura ES y DI pop di ;sale si la bandera está activa call vacia ;si no, salva i ;Retorna desde interrupción IntDOSOcioso ;INTDISCO manipula interrupción 13h. PROC IntDisco FAR pushf ;Salva banderas or [cs:bandint],02h ;pone bandera de disco popf ;Retira banderas pushf ;salva banderas call [cs:int13h] ;llama manejador previo pushf ;Salva banderas and [cs:bandint],0fdh ;limpia bandera de disco popf ;Retira banderas 2 ;Retorno con banderas intactas IntDisco ;INTLECTURAABS manipula interrupción 25h. PROC IntLecturaAbs FAR pushf ;Salva banderas or [cs:bandint],04h ;pone bandera de disco 16-5

6 popf ;Retira banderas call [cs:int25h] ;llama manejador previo pushf ;Salva banderas and [cs:bandint],0fbh ;limpia bandera de disco popf ;Retira banderas ;Retorna con banderas en pila IntLecturaAbs ;INTESCRABS manipula interrupción 26h. PROC IntEscrAbs FAR pushf ;Salva banderas or [cs:bandint],08h ;pone bandera de disco popf ;Retira banderas call [cs:int26h] ;llama manejador previo pushf ;Salva banderas and [cs:bandint],0f7h ;limpia bandera de disco popf ;Retira banderas ;Retorna con banderas en pila IntEscrAbs ; MPLEX_INT manipula interrupción 2FH. Si, de entrada, AH esta puesto con el ;numero ID de multiplexaje de DESVIA, MPLEX_INT usa el valor en AL como función ;Las funciones soportadas son: ; ; 00h Retorna FFh en AL para indicar que el programa esta instalado ; y orna la dirección de su firma en ES:DI. ; ; 01h Retorna el numero de impresora actualmente redirigida ; (0, 1, or 2) en AL, o FFh si ninguna lo esta. Si AL ; contiene 0, 1, or 2, entonces ES:DI tiene la dirección del ; nombre del archivo de salida al cual se redirige. ; ; 02h Acepta el numero de la impresora a ser redirigida (0, 1, ; o 2) en BL y la dirección de un nombre de archivo en DS:SI. FFh ; cancela la redirección. Esta función causa que el buffer de salida ; sea vaciado. PROC IntMplex far pushf ;Salva registro de banderas cmp ah,[cs:numeroid] ;Brinca si AH tiene el ;número ID de multiplexar popf ;Repone banderas jmp [cs:int2fh] ;Ejecuta la interrupción ;Funcion 00h verifica si el programa está popf ;Repone banderas or al,al ;Brinca si código de función ;es diferente a 00h mov al,0ffh ;pone AL a FFH push cs ;apunta ES:DI a firma pop es ;del programa mov di,offset firma 16-6

7 i ;Retorna de la interrupción ;Funcion 01h reporta el estatus de la redirección. cmp al,01h ;Brinca si código de función jne ;es otro que 01h mov al,[cs:ptoserie] ;pone número de impresora en AL push cs ;apunta con ES al segmento pop es mov di,offset NomArch ;apunta DI a nombre de archivo i ;Retorna de la interrupción ;Función 02h designa una nueva impresora o nombre de arch. para cmp [cs:puntero],0 ;Brinca si buffer de ;salida está vacío call vacia ;manda buffer al mov [cs:ptoserie],bl ;Salva numero de impresora cmp bl,0ffh ;Brinca si la redirección ;está cancelada push es ;Salva ES push cs ;apunta con ES a este segmento pop es mov di,offset NomArch ;apunta DI a nombre de archivo cld ;limpia bandera de movsb ;Copia un carácter cmp [byte ptr si-1],0 ; Fue un cero? ;No, entonces salta para atrás pop es ;Restaura i ;Retorna de la interrupción IntMplex ;VACIA vacia el buffer. PROC vacia push ax bx cx dx ds ;Salva registros mov ax,cs ;apunta con DS al segmento mov ds,ax ;de código asume ds:_text mov [ds:contador],91 ;Repone el contador mov ax,[ds:puntero] ;Retira puntero del buffer mov [ds:bytes],ax ;lo salva para después mov [ds:puntero],0 ;Repone el puntero sti ;permite interrupciones call AbreArch ;intenta abrir el archivo ;Brinca si falla 16-7

8 mov bx,ax ;Transfiere handle a BX mov ax,4202h ;Mueve puntero de archivo xor cx,cx ;al fin del mismo mov dx,cx mov ah,40h ;Copia buffer de salida mov cx,[ds:bytes] ;al disco xor dx,dx mov ds,[ds:segbuf] assume ds:nothing mov ah,3eh ;Cierra pop ds dx cx bx ax ;Restaura registros y sale vacia ;ABREARCH intenta abrir o crear el archivo de la redirección. ;De orno, el acarreo se limpia si el intento fue exitoso y el handle ;del archivo esta en AX. El acarreo en "1" implica que algo fallo. De ;entrada, DS debe apuntar al segmento de código. PROC AbreArch mov ax,3d01h ;intenta abrir el archivo mov dx,offset NomArch ;para escritura ;Brinca si se pudo mov ax,4301h ;intenta quitar todos los xor cx,cx ;atributos del archivo mov dx,offset NomArch mov ax,3d01h ;reintenta abrirlo mov dx,offset NomArch ;para escritura ;Brinca si lo logro mov ah,3ch ;intenta crear el archivo xor cx,cx ;como nuevo mov dx,offset NomArch ;Brinca si hecho clc ;pone bandera CF y sale ;orno ;limpia bandera de acarreo ;y sale 16-8

9 AbreArch LABEL FIN ;Datos que se descartan al quedar residente en memoria derechos db "DESVÍA 2.1 captura salida a impresora",13,10 db "De: Seminario de Lenguaje ensamblador 80386" db 13,10,13,10,"$" ayudar db "Captura salida a impresora en un archivo.",13,10,13,10 db "DESVÍA [PRNn[:]=[[d:][ruta]NomArch]] [/B=largo] " db "[/C]",13,10,13,10 db " PRNn Especifica el número de impresora.",13,10 db "/B=largo especifica el tamaño del buffer interno " db "en kilobytes (default=4k).",13,10 db "/C Cancela redirección.",13,10,13,10 db "Al correr DESVÍA sin parámetros se exhibe " db "el estado de la redirección.",13,10,"$" msjerr1 db "Sintaxis: DESVÍA [PRNn[:]=[[d:][ruta]NomArch]] " db "[/B=largo] [/C]",13,10 db "o bien:",13,10,13,10 db "DESVÍA [/?]",13,10,13,10,"$" msjerr2 db "Requiere DOS 4.0 o superior",13,10,"$" msjerr3 db "el largo del buffer permanece fijo una vez instalado" Crnl. db 13,10,"$" msjerr4 db " largo de buffer invalido (mínimo = 2, máximo = 32)" db 13,10,"$" msjerr5 db " numero de impresora invalido (debe ser PRN1, PRN2, PRN3)" db 13,10,"$" msjerr6 db "El archivo no se pudo abrir",13,10,"$" msjerr7 db "El programa no se pudo instalar",13,10,"$" msjerr8 db "Memoria insuficiente",13,10,"$" msg1 db "DESVÍA instalado",13,10,"$" msg2 db "Ningún impresora actualmente redirigida",13,10,"$" msg3 db "PRNn: esta ahora redirigida a $" instalado db 0 ;0 = No instalado DirFinL dw 0 ;dirección de fin de línea ;INICIO hace al programa residente en memoria. Assume ds:_text PROC cld inicio ;limpia bandera de dirección mov si,81h ;apunta SI a línea de comando call BuscaAyuda ;barre por la opción /? ;Brinca si no lo halla 16-9

10 mov ah,09h ;exhibe mensaje de ayuda mov dx,offset ayudar ;y sale mov ax,4c00h mov ah,09h ;exhibe mensaje de derechos mov dx,offset derechos ;Coteja versión de DOS y ve si programa ya esta instalado. mov dx,offset msjerr2 ;sale si versión de DOS mov ah,30h ;es menor que 4.0 cmp al,4 error: mov ah,09h ;exhibe mensaje de error y ;sale con ERRORLEVEL=1 mov push es ;Salva ES call coteja ;ver si copia esta instalada ;Brinca si no mov [ds:instalado],1 ;pone bandera si mov [ds:numeroid],ah ;también salva número pop ;Repone ES ;Pasa todo a mayúsculas en la línea de mov si,81h ;apunta SI a línea de comando mov cl,[ds:si-1] ;CL = Número de caracteres xor ch,ch ;Convierte byte a palabra CX ;hecho si CX = cmp [byte ptr si],"a" ;lo deja si menor que "a" cmp [byte ptr si],"z" ;lo deja si mayor que "z" and [byte ptr si],0dfh ;la hace inc si ;Avanza SI ;sigue hasta mov si,81h ;Repone SI ; analiza la línea de comando

11 call HallaCar ;Halla parámetro jnc ;Brinca si no fin de línea jmp hecho ;sale del lazo de análisis cmp [byte ptr si],"/" ;Brinca si el carácter jne ;no es una diagonal ;Procesa la opción /B. Inc si ;Avanza SI Lodsb ;obtiene carácter Cmp al,"b" ;Brinca si no es una "B" Jne Cmp [ds:instalado],0 ;Error si /B dado con el Mov dx,offset msjerr3 ;programa ya instalado Jne error lodsb ;trae siguiente carácter cmp al,"=" ;Error si no es "=" mov dx,offset msjerr1 jne error cal AscABin ;trae el número tras el "=" mov dx,offset msjerr4 ;sale si hubo error jc error ;en la conversión cmp al,2 ;Error si menor que 2 jb error cmp al,32 ;Error si mayor que 32 ja error xor ah,ah ;Computa largo del buffer mov cl,10 ;en bytes corriendo shl ax,cl ;AX a la izquierda 10 bits or ax,ax ;Brinca si no igual a 0 dec ax ;pone AX a mov [ds:largo],ax ;salva largo del buffer shr ax,1 ;Divide largo del buffer por 2 mov [ds:mitad],ax ;lo registra ;Retorna a lazo de análisis ;Procesa la opción mov dx,offset msjerr1 ;Inicia puntero de error cmp al,"c" ;Error si no es una "C" jne error1 mov [ds:ptoserie],0ffh ;Cancela redirección ;Retorna a lazo interno ;Procesa un numero PRN de mov dx,offset msjerr1 ;Inicia puntero de error mov di,offset msjerr1+18 ;Punto DI a "PRN" 16-11

12 mov cx,3 ;carga CX con cuenta repe cmpsb ;Compara cadenas jne error1 ;Error si no iguales mov dx,offset msjerr5 ;Inicia puntero de error lodsb ;trae número de puerto cmp al,"1" ;Error si menor que "1" jb error1 cmp al,"3" ;Error si mayor que "3" ja error1 sub al,31h ;Convierte a número de puerto mov [ds:ptoserie],al ;lo salva mov dx,offset msjerr1 ;Inicia puntero de error cmp [byte ptr si],":" ; es siguiente carácter dos puntos? ;No, entonces brinca cmp [byte ptr si],0dh ;Error si fin de línea je error1 inc si ;Salta dos lodsb ;trae siguiente carácter cmp al,"=" ;Error si no "=" jne error1 ;Procesa nombre de archivo que va con el número del puerto. push si ;salva dirección de cadena call HallaDelim ;halla fin de cadena ;Brinca si fin de línea mov [ds:dirfinl],si ;Salva dirección de fin de mov [byte ptr si],0 ;Convierte a cadena ASCIIZ pop si ;Retira dirección de cadena mov di,offset NomArch ;apunta DI a nombre de archivo mov ah,60h ;y lo convierte en ;nombre de archivo ;Brinca si no error error2: mov dx,offset msjerr6 ;sale si error error1: jmp call AbreArch ;intenta abrir archivo jc error2 mov bx,ax ;cierra el archivo mov ah,3eh cmp [ds:dirfinl],0 ; llegó a fin de línea? je hecho ;Si, sale del análisis 16-12

13 mov si,[ds:dirfinl] ;apunta SI a fin de NomArch inc si ;Avanza tras del byte nulo ;regresa por mas ; Aquí llega cuando el análisis termina. hecho: cmp [ds:instalado],0 ;Brinca si el programa ya ;está instalado cmp [ds:ptoserie],0feh ; número de puerto igual a FEH? Jne instala ;No, entonces ir a instalar Inc [ds:ptoserie] ;pone número de puerto a FFH jmp short instala ;ir cmp [ds:ptoserie],0feh ; número de puerto igual a FEH? ;si, entonces ya la hicimos mov ah,[ds:numeroid] ;envía nuevo no. de impresora mov al,02h ;y nombre de archivo a una mov bl,[ds:ptoserie] ;copia instalada del mov si,offset NomArch ;programa int call SacaEstado ;exhibe estado de redirección mov ax,4c00h ;sale con ERRORLEVEL=0 ;Instala el programa. instala: call mplex_id ;Busca número múltiplex ID mov dx,offset msjerr7 ;Error si ninguno disponible jc error1 mov [ds:numeroid],ah ;Salva numero ID mov ah,34h ;Trae y salva la dirección de ;la bandera En DOS mov [word ds:endos],bx mov [word ds:endos+2],es push ds ;Salva DS mov ax,5d06h ;Obtiene y salva la dirección ;de bandera de error critico mov [word ds:banderror],si mov [word ds:banderror+2],ds pop ds ;Restaura DS mov dx,offset msjerr7 ;Error si función orna jc error1 ;con acarreo en "1" mov ax,3508h ;Cambia interrupción 08h ;para IRQ0 (tic del reloj) mov [word ds:int08h],bx mov [word ds:int08h+2],es mov ax,2508h 16-13

14 mov int dx,offset IntReloj 21h mov ax,3513h ;Cambia interrupción 13h ;de servicios de disco mov [word int13h],bx ;del BIOS mov [word int13h+2],es mov ax,2513h mov dx,offset IntDisco mov ax,3517h ;Cambia interrupción 17h ;de servicios de impresora mov [word int17h],bx ;del BIOS mov [word int17h+2],es mov ax,2517h mov dx,offset IntImpre mov ax,3521h ;Cambia interrupción 21h ;de llamado a DOS mov [word int21h],bx mov [word int21h+2],es mov ax,2521h mov dx,offset IntDOS mov ax,3525h ;Cambia interrupción 25h ;de lectura absoluta mov [word int25h],bx ;a disco mov [word int25h+2],es mov ax,2525h mov dx,offset IntLecturaAbs mov ax,3526h ;Cambia interrupción 26h ;de escritura absoluta mov [word int26h],bx ;a disco mov [word int26h+2],es mov ax,2526h mov dx,offset IntEscrAbs mov ax,3528h ;Cambia interrupción 28h ;de manejo de tiempo muerto mov [word int28h],bx ;del DOS mov [word int28h+2],es mov ax,2528h mov dx,offset IntDOSOcioso mov ax,352fh ;Cambia interrupción 2Fh ;de manejo de programas mov [word int2fh],bx ;residentes 16-14

15 mov mov mov int [word int2fh+2],es ax,252fh dx,offset IntMplex 21h mov ah,49h ;trae dirección del segmento del mov es,[ds:2ch] ;bloque de ambiente ;y libera el segmento mov ah,4ah ;encoge el bloque memoria mov bx,offset FIN shr bx,4 inc bx mov cx,cs ;donde el programa está mov es,cx ;cargado mov ah,48h ;pide un nuevo bloque mov bx,[largo] ;de memoria para el buffer mov cl,4 ;de datos shr bx,cl inc bx mov dx,offset msjerr8 ;Error si no hay jnc no_error ;suficiente memoria jmp error no_error: mov [SegBuf],ax ;Salva dirección del segmento mov ah,09h ;saca mensaje certificando mov dx,offset msg1 ;la instalación call SacaEstado ;Saca estado de redirección mov ax,3100h ;Termina con función 31h mov dx,offset FIN shr dx,4 inc dx inicio ;HALLACAR avanza SI al siguiente carácter. Al ornar, el acarreo puesto ;indica que el fin de la línea fue alcanzado. PROC HallaCar Lodsb ;trae el siguiente carácter cmp al,09h ;más si es tabulador je HallaCar cmp al,20h ;más si es espacio je HallaCar cmp al,2ch ;más si es coma je HallaCar dec s ;apunta SI al carácter cmp al,0dh ;sale con acarreo puesto 16-15

16 je ;si línea fue alcanzado clc stc HallaCar ;limpia acarreo y sale ;pone acarreo y sale ;HALLADELIM avanza SI al siguiente carácter blanco. Al ornar, ;CF = "1" indica que el fin de la línea fue alcanzado. PROC lodsb HallaDelim ;trae el siguiente carácter cmp al,09h ;sale si tabulador cmp al,20h ;sale si es espacio cmp al,2ch ;sale si es coma cmp al,0dh ;hace más si fin jne HallaDelim ;de línea no alcanzado dec si ;pone acarreo y sale dec si ;limpia acarreo y sale clc HallaDelim ;BUSCAAYUDA barre la línea de comando por la opción /?. Si la halla, ;orna con 1 en CF y SI contiene sesgo de la opción. Si no lo ;haya, acarreo = "0" PROC BuscaAyuda Push si ;Salva lodsb ;trae un carácter cmp al,0dh ;sale si fin de línea cmp al,"?" ;más si no "?" cmp [byte ptr si-2],"/" ;más si no "/" add sp,2 ;limpia la pila sub si,2 ;Ajusta SI stc ;pone acarreo y sale 16-16

17 pop si ;Restaura SI clc ;limpia acarreo y sale BuscaAyuda ;COTEJA orna acarreo puesto si el programa ya esta instalado, ;o acarreo limpio si no. Si CF orna en "1", AH tiene el numero ;ID multiplex del programa. PROC coteja Mov ax,0c000h ;Inicia AH y AL Mov cx,40h ;Inicia push ax ;Salva AX y CX push cx xor di,di ;hace ES y DI cero mov es,di int 2Fh ;Interrupción 2Fh cmp al,0ffh ;nada aquí si AL no es ;igual a FFH mov si,offset firma ;ver si la firma del programa mov cx,14 ;aparece en la dirección repe cmpsb ;ornada en ES:DI ;Brinca si no está pop cx ;limpia la pila y sale pop ax ;con acarreo puesto pop cx ;Retira AX y CX pop ax inc ah ;siguiente ID de multiplex ;sigue hasta terminar clc coteja ;sale con acarreo limpio ;MPLEX_ID busca un numero ID de multiplex no usado. Si halla uno, ;lo orna en AH con el acarreo limpio. Acarreo = "1" indica que ;no hay números ID actualmente disponibles. PROC mplex_id Mov ax,0c000h ;Inicia AH y AL Mov cx,40h ;Inicia push ax ;Salva AX y CX push cx 16-17

18 int 2Fh ;Interrupción 2Fh or al,al ;Brinca si AL = 0 pop cx ;Retira AX y CX pop ax inc ah ;Incrementa numero ID ;sigue hasta acabar tc ;con CF op x ;la pila y sale op x ;acarreo limpio ic lex_id ;AscABin convierte un numero decimal entrado en forma ASCII en un valor ;binario en AL. El acarreo puesto al ornar indica que hubo error en ;la conversión. PROC AscABin xor ax,ax ;Inicia registros xor bh,bh mov mov bl,[si] ;trae un carácter inc si cmp al,09h ;sale si es tabulador cmp bl,20h ;sale si es espacio cmp bl,2ch ;sale si es coma cmp bl,0dh ;sale si es orno de carro cmp bl,"0" ;Error si carácter no es ;un número cmp bl,"9" mu dl ;Multiplica valor en AL por ;10 y sale si hay sobre flujo sub bl,30h ;ASCII => binario add ax,bx ;suma último valor a AX cmp ax,255 ;Error si suma > 255 ;más hasta dec stc ;pone acarreo y sale 16-18

19 dec si ;limpia acarreo y sale clc AscABin ;SACAESTADO exhibe el estado actual de redirección de impresoras. PROC SacaEstado Cmp [instalado],0 ;ver si programa ya instalado ;Brinca si no mov ah,[numeroid] ;Usa la interrupción multiplex mov al,01h ;(función 01h) para hallar int 2Fh ;cuál impresora (si hay) está jmp mov al,[ptoserie] ;trae número de impresora mov bx,cs ;apunta ES a este segmento mov es,bx mov di,offset NomArch ;apunta DI a nombre de cmp al,0ffh ;Brinca si una impresora está ;actualmente redirigida mov ah,09h ;saca aviso "Ninguna impresora mov dx,offset msg2 ;redirigida" ;y add al,31h ;Convierte número de impresora mov [msg3+3],al ;a ASCII y lo salva mov dx,offset msg3 ;exhibe nombre de impresora mov ah,09h call dos_out ;exhibe nombre de archivo mov ah,09h ;fin de línea mov dx,offset rcnl SacaEstado ;DOS_OUT saca la cadena ASCIIZ apuntada por ES:DI. PROC dos_out mov dl,[es:di] ;trae un carácter or dl,dl ;sale si es cero mov ah,02h ;salida usando DOS ;función 02h inc di ;Avanza DI al siguiente jmp dos_out ;sigue hasta acabar 16-19

20 ENDS end dos_out salto 3.2 Formar el programa DESVIA.COM con los siguientes comandos: C\SEM386>tasm desvia C\SEM386>tlink /t desvia 3.3 Ejecutar DESVIA enrutando la impresora 1 al archivo SALIDA.PRN mediante: C:\SEM386>desvia prn1=salida.prn /B=8 Mandar ahora un archivo tipo texto a LPT1 o ejecutar ImprPant: y al terminar exhibir SALIDA.PRN en la pantalla. 3.4 Ejecutar el programa DESVIA de nuevo, dando la opción /C para cancelar la redirección: C:\SEM386>desvia /C EJEMPLO DE CORRIDA DE DESVIA CAPTURADA CON EL MISMO DESVIA: C:\>cd sem386 C:\SEM386>del salida.prn No se encontró el archivo C:\SEM386>desvia prn1=salida.prn DESVIA 2.1 captura salida a impresora De: Seminario de Lenguaje ensamblador DESVIA instalado PRN1: esta ahora redirigida a C:\SEM386\SALIDA.PRN C:\SEM386>dir *.lib/w El volumen de la unidad C es MS-DOS_6 El número de serie del volumen es 15CF-351C Directorio de C:\SEM386 A387.LIB CASIO.LIB MYSTUFF.LIB NOR.LIB PF.LIB TAM.LIB REM.LIB 7 archivo(s) 139,046 bytes 129,130,496 bytes libres C:\SEM386>desvia DESVIA 2.1 captura salida a impresora 16-20

21 De: Seminario de Lenguaje ensamblador PRN1: esta ahora redirigida a C:\SEM386\SALIDA.PRN C:\SEM386>desvia /? Captura salida a impresora en un archivo. DESVIA [PRNn[:]=[[d:][ruta]NomArch]] [/B=largo] [/C] PRNn Especifica el número de impresora. /B=largo especifica el tamaño del buffer interno en kilobytes (default =4 K). /C Cancela redirección. Al correr DESVIA sin parámetros se exhibe el estado de la redirección. C:\SEM386>desvia /B=5 DESVIA 2.1 captura salida a impresora De: Seminario de Lenguaje ensamblador el largo del buffer permanece fijo una vez instalado C:\SEM386>desvia /c DESVIA 2.1 captura salida a impresora De: Seminario de Lenguaje ensamblador Ninguna impresora actualmente redirigida C:\SEM386>desvia DESVIA 2.1 captura salida a impresora De: Seminario de Lenguaje ensamblador Ninguna impresora actualmente redirigida C:\SEM386>desvia prn1=salida.prn DESVIA 2.1 captura salida a impresora De: Seminario de Lenguaje ensamblador PRN1: esta ahora redirigida a C:\SEM386\SALIDA.PRN C:\SEM386> C:\SEM386>desvia /c DESVIA 2.1 captura salida a impresora De: Seminario de Lenguaje ensamblador Ninguna impresora actualmente redirigida C:\SEM386>desvia DESVIA 2.1 captura salida a impresora De: Seminario de Lenguaje ensamblador Ninguna impresora actualmente redirigida C:\SEM386>desvia prn1=salida.prn DESVIA 2.1 captura salida a impresora De: Seminario de Lenguaje ensamblador PRN1: esta ahora redirigida a C:\SEM386\SALIDA.PRN C:\SEM386>desvia prn = aa.txt DESVIA 2.1 captura salida a impresora De: Seminario de Lenguaje ensamblador

22 numero de impresora invalido (debe ser PRN1, PRN2, o PRN3) C:\SEM386> 4. TAREAS 4.1 Modificar DESVIA.ASM para que sólo pueda salvar la salida a impresora en el archivo MMMDD.PRN; donde MMM es la abreviatura del mes y DD corresponde al día es decir que el nombre del archivo se forme automáticamente. 4.2 Hacer un programa,toma, que sea prácticamente una copia de DESVIA pero que, en vez de capturar la salida a impresora, capture la entrada serial de uno de sus puertos COMx

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

LENGUAJE ENSAMBLADOR 80386 PRÁCTICA 11 PRÁCTICA 11 CUATRO OPERACIONES FUNDAMENTALES EN NÚMEROS DE 8 BYTES

LENGUAJE ENSAMBLADOR 80386 PRÁCTICA 11 PRÁCTICA 11 CUATRO OPERACIONES FUNDAMENTALES EN NÚMEROS DE 8 BYTES PRÁCTICA 11 SUMA, RESTA, MULTIPLICACIÓN Y DIVISIÓN DE DOS NÚMEROS ENTEROS POSITIVOS DE HASTA 20 DÍGITOS DECIMALES 1. INTRODUCCIÓN Mediante esta práctica, trabajaremos con números binarios de hasta veinte

Más detalles

LENGUAJE ENSAMBLADOR PRÁCTICA 12 PRÁCTICA 12

LENGUAJE ENSAMBLADOR PRÁCTICA 12 PRÁCTICA 12 PRÁCTICA 12 EJECUCIÓN DE UN PROGRAMA HIJO DESDE UN PROGRAMA PADRE 1. INTRODUCCIÓN En esta práctica veremos como se puede ejecutar un programa cualquiera desde nuestro programa mediante la función EXEC

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

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

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

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

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

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

PRÁCTICA 3 OPERACIONES BÁSICAS CON DOS NÚMEROS BCD ENTEROS POSITIVOS 1. INTRODUCCIÓN 2. OBJETIVOS 3. DESARROLLO

PRÁCTICA 3 OPERACIONES BÁSICAS CON DOS NÚMEROS BCD ENTEROS POSITIVOS 1. INTRODUCCIÓN 2. OBJETIVOS 3. DESARROLLO PRÁCTICA 3 OPERACIONES BÁSICAS CON DOS NÚMEROS BCD ENTEROS POSITIVOS 1. INTRODUCCIÓN Mediante esta práctica trabajaremos con números BCD de hasta veinte dígitos y haremos las operaciones básicas, suma,

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

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

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

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

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

PRÁCTICA 7 MOUSE, EFECTOS SONOROS Y PROGRAMA QUE INFORMA DEL MICROPROCESADOR INSTALADO 1. INTRODUCCIÓN 2. OBJETIVOS 3 DESARROLLO

PRÁCTICA 7 MOUSE, EFECTOS SONOROS Y PROGRAMA QUE INFORMA DEL MICROPROCESADOR INSTALADO 1. INTRODUCCIÓN 2. OBJETIVOS 3 DESARROLLO PRÁCTICA 7 MOUSE, EFECTOS SONOROS Y PROGRAMA QUE INFORMA DEL MICROESADOR INSTALADO 1. INTRODUCCIÓN Esta práctica ayudará a familiarizarse con el MOUSE y las ventajas que se pueden tener del mismo, así

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

Intel 8086. Arquitectura. Programación en Ensamblador Ing. Marcelo Tosini - 2001

Intel 8086. Arquitectura. Programación en Ensamblador Ing. Marcelo Tosini - 2001 Intel 8086 Arquitectura Características generales Procesador de 16 bits Bus de direcciones de 20 bits : 1 Mbyte Bus de datos interno de 16 bits Bus de datos externo de 16 bits en el 8086 8 bits en el 8088

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

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 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

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 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

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

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

(2) Unidad 2. Modelo de Programación del 80x86 de Intel SISTEMAS BASADOS EN MICROPROCESADORES. Grado en Ingeniería Informática EPS - UAM

(2) Unidad 2. Modelo de Programación del 80x86 de Intel SISTEMAS BASADOS EN MICROPROCESADORES. Grado en Ingeniería Informática EPS - UAM (2) Unidad 2 Modelo de Programación del 80x86 de Intel SISTEMAS BASADOS EN MICROPROCESADORES Grado en Ingeniería Informática EPS - UAM (2) Índice 2. Modelo de programación del 80x86 de Intel. 2.1. Familia

Más detalles

LENGUAJE ENSAMBLADOR PRÁCTICA 15 PRÁCTICA 15 ENCRIPTADO DE ARCHIVOS, CLASIFICACIÓN POR MÉTODO DE PARTICIÓN / INTERCAMBIO

LENGUAJE ENSAMBLADOR PRÁCTICA 15 PRÁCTICA 15 ENCRIPTADO DE ARCHIVOS, CLASIFICACIÓN POR MÉTODO DE PARTICIÓN / INTERCAMBIO PRÁCTICA 15 ENCRIPTADO DE ARCHIVOS, CLASIFICACIÓN POR MÉTODO DE PARTICIÓN / INTERCAMBIO 1. INTRODUCCIÓN Esta práctica ayudará a familiarizarse con el encriptado de archivos y las ventajas que se pueden

Más detalles

PRÁCTICA 4 GENERACIÓN DE SONIDOS DE DIFERENTES FRECUENCIAS 1. INTRODUCCIÓN 2. OBJETIVOS 3 DESARROLLO %TITLE IDEAL DOSSEG DATASEG

PRÁCTICA 4 GENERACIÓN DE SONIDOS DE DIFERENTES FRECUENCIAS 1. INTRODUCCIÓN 2. OBJETIVOS 3 DESARROLLO %TITLE IDEAL DOSSEG DATASEG PRÁCTICA 4 GENERACIÓN DE SONIDOS DE DIFERENTES FRECUENCIAS 1. INTRODUCCIÓN Esta práctica está centrada a los sonidos que se pueden emitir en una computadora a través de un programa en LENGUAJE ENSAMBLADOR.

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

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

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

Trabajo Práctico Nro 5 Pase de Parámetros e Instrucciones de Cadena

Trabajo Práctico Nro 5 Pase de Parámetros e Instrucciones de Cadena Instrucciones de Cadena Pase de parámetros Introducción El envío de parámetros a una función de asembler es un problema que nos enfrentamos comúnmente a la hora de desarrollar un software en este lenguaje,

Más detalles

(4) Unidad 4. Recursos de Programación SISTEMAS BASADOS EN MICROPROCESADORES. Grado en Ingeniería Informática EPS - UAM

(4) Unidad 4. Recursos de Programación SISTEMAS BASADOS EN MICROPROCESADORES. Grado en Ingeniería Informática EPS - UAM (4) Unidad 4 Recursos de Programación SISTEMAS BASADOS EN MICROPROCESADORES Grado en Ingeniería Informática EPS - UAM (4) Índice 4. Recursos de programación. 4.1. Interrupciones BIOS. 4.2. Interrupciones

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 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

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

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

Resumen de las instrucciones del 8086/8088

Resumen de las instrucciones del 8086/8088 Resumen de las instrucciones del 8086/8088 En este capítulo se hace un resumen de las instrucciones del 8086/8088. Estas instrucciones se encuentran explicadas más detalladamente en otro capítulo. Se puede

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

Nombre del módulo: Instalación de Sistemas Microprocesados. Guía sobre Programación en Ensamblador usando Emulador (emu8086)

Nombre del módulo: Instalación de Sistemas Microprocesados. Guía sobre Programación en Ensamblador usando Emulador (emu8086) Nombre del Plantel: Conalep Tehuacán 150 Nombre del módulo: Instalación de Sistemas Microprocesados Guía sobre Programación en Ensamblador usando Emulador (emu8086) Ing. Jonathan Quiroga Tinoco Grupo:

Más detalles

LENGUAJE ENSAMBLADOR PRÁCTICA 8 PRÁCTICA 8 COMUNICACIÓN SERIAL DE UNA PC

LENGUAJE ENSAMBLADOR PRÁCTICA 8 PRÁCTICA 8 COMUNICACIÓN SERIAL DE UNA PC PRÁCTICA 8 COMUNICACIÓN SERIAL DE UNA PC 1. INTRODUCCIÓN Esta práctica está enfocada a la comunicación serial de un PC, interceptando la interrupción de uno de los puertos 2 OBJETIVOS 2.1 El alumno aprenderá

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 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

MICROPOCESADOR NOTAS DE CURSO (Versión 2.1)

MICROPOCESADOR NOTAS DE CURSO (Versión 2.1) MICROPOCESADOR 8086 NOTAS DE CURSO (Versión 2.1) Arquitectura de Computadores 2 Facultad de Ingeniería ÍNDICE DIRECCIONAMIENTO DE MEMORIA... 2 MODOS DE DIRECCIONAMIENTO... 3 REGISTRO... 3 VALOR o INMEDIATO...

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

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

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

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

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

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

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 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

Microprocesadores de la línea Intel - Anexo

Microprocesadores de la línea Intel - Anexo Microprocesadores de la linea Intel - Anexo por Darío Alejandro Alpern Microprocesadores de la línea Intel - Anexo Otros programas de ejemplo en modo protegido EJEMPROT.ASM (Pasaje a modo protegido y regreso

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 Microprocesador 8086

CONJUNTO DE INSTRUCCIONES Microprocesador 8086 CONJUNTO DE INSTRUCCIONES Microprocesador 8086 Clasificación: TRANSFERENCIA DE DATOS ARITMÉTICAS LÓGICAS TRANSFERENCIA DE CONTROL MANEJO DE CADENAS CONTROL DE MAQUINA ENTRADA/SALIDA El formato general

Más detalles

Instrucción De Salto Incondicional

Instrucción De Salto Incondicional INSTRUCCIONES DE CONTROL DE FLUJO Los programas que se han desarrollado hasta ahora se ejecutan en forma secuencial, esto es, el programa inicia su ejecución con la primera instrucción y continúa de arriba

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

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

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

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

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

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

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

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

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

ITT-327-T Microprocesadores

ITT-327-T Microprocesadores ITT-327-T Microprocesadores Lenguaje de Programación Ensamblador. Set de Instrucciones del 8088/8086. El set de instrucciones de un microprocesador define las operaciones básicas que el programador puede

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

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

REPERTORIO DE INSTRUCCIONES DEL MICROPROCESADOR 8086

REPERTORIO DE INSTRUCCIONES DEL MICROPROCESADOR 8086 REPERTORIO DE INSTRUCCIONES DEL MICROPROCESADOR 8086 INSTRUCCIONES DE TRANSFERENCIA: NINGUNA INSTRUCCIÓN DE TRANSFERENCIA AFECTA AL REGISTRO DE ESTADO (SALVO LAS EXPLÍCITAS CON EL REGISTRO DE ESTADO) A)

Más detalles

Comparativas del número de ciclos de ejecución de un programa en ensamblador

Comparativas del número de ciclos de ejecución de un programa en ensamblador Trabajo evaluable 1 Comparativas del número de ciclos de ejecución de un programa en ensamblador Arquitectura de Computadores I I. T. Informática de Sistemas Curso 2009-2010 Trabajo evaluable 1: Hoja:

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

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

Todos los comandos de DEBUG se invocan usando una sola letra y son los siguientes:

Todos los comandos de DEBUG se invocan usando una sola letra y son los siguientes: USO DE DEBUG Con el sistema operativo DOS (MS-DOS = Microsoft Disk Operating System) se incluye un programa para observar el comportamiento de los registros del CPU 80386. Recuérdese que los registros

Más detalles

PRACTICA #1. Aprender a programar una interrupción software empleando C y/o Ensamblador.

PRACTICA #1. Aprender a programar una interrupción software empleando C y/o Ensamblador. PRACTICA #1 Aprender a programar una interrupción software empleando C y/o Ensamblador. Aprender a manipular dispositivos externos (8253, 8255) desde C y/o ensamblador. PROCEDIMIENTO: Vamos a programar

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

LENGUAJE ENSAMBLADOR PRÁCTICA 1 PRÁCTICA 1 PROGRAMA PARA EXHIBIR EN PANTALLA EL CÓDIGO DE BARRIDO DE LA TECLA OPRIMIDA

LENGUAJE ENSAMBLADOR PRÁCTICA 1 PRÁCTICA 1 PROGRAMA PARA EXHIBIR EN PANTALLA EL CÓDIGO DE BARRIDO DE LA TECLA OPRIMIDA PRÁCTICA 1 PROGRAMA PARA EXHIBIR EN PANTALLA EL CÓDIGO DE BARRIDO DE LA TECLA OPRIMIDA 1. INTRODUCCIÓN Mediante el desarrollo de esta práctica se realizará un programa que exhiba en pantalla el código

Más detalles

Organización de Computadoras. Clase 8

Organización de Computadoras. Clase 8 Organización de Computadoras Clase 8 Temas de Clase Organización de Registros Instrucciones Notas de Clase 8 2 Organización de registros Registros visibles al usuario: son utilizados por el programador.

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

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

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

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

Repertorio de instrucciones x86-16bits Índice

Repertorio de instrucciones x86-16bits Índice Índice 1. Generalidades 2. Instrucciones de transferencia 3. Instrucciones de proceso 4. Instrucciones de bifurcación 5. Otras instrucciones 1/145 1. Generalidades No se pueden realizar operaciones donde

Más detalles

Arquitectura intel 8086. Preámbulo de OSO para alumnos formados en el procesador MIPS. Asignatura Sistemas Operativos Murcia abril de 2005

Arquitectura intel 8086. Preámbulo de OSO para alumnos formados en el procesador MIPS. Asignatura Sistemas Operativos Murcia abril de 2005 Arquitectura intel 8086 Preámbulo de OSO para alumnos formados en el procesador MIPS Asignatura Sistemas Operativos Murcia abril de 2005 página 1. Introducción 2 2.- Direccionamiento y Registros de Segmento

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

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

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

Tabla de interrupciones

Tabla de interrupciones Las principales interrupciones del 8086/8088 son las siguientes: Interrupción Hex Decimal Uso 00h 0 Generada por la CPU cuando se intenta hacer una división por cero 01h 1 Utilizada par ir paso a paso

Más detalles

Unidad II: Programación básica

Unidad II: Programación básica Unidad II: Programación básica 2.1 Ensamblador (y ligador) a utilizar Aunque todos los ensambladores realizan básicamente las mismas tareas, podemos clasificarlos de acuerdo a características. Así podemos

Más detalles

MANUAL DE PROGRAMACIÓN EN ENSAMBLADOR 8086

MANUAL DE PROGRAMACIÓN EN ENSAMBLADOR 8086 MANUAL DE PROGRAMACIÓN EN ENSAMBLADOR 8086 ALUMNO: SANTIAGO SÁNCHEZ GONZÁLEZ TITULACIÓN: I.T.I. SISTEMAS ARQUITECTURA DE COMPUTADORES I ÍNDICE: PÁGINA Introducción al ensamblador...2 Procesos para la creación

Más detalles

1. Introducción a los microprocesadores de la familia Intel 8088/8086

1. Introducción a los microprocesadores de la familia Intel 8088/8086 1. Introducción a los microprocesadores de la familia Intel 8088/8086 2 Descripción de las patas de conexión del 8088 1 2.1 Descripción de las patas en modo mínimo 2 1 Conexión en modo mínimo Vcc De lóg.

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

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

Programación en lenguaje ensamblador. Instrucciones básicas. Formatos. Direccionamientos

Programación en lenguaje ensamblador. Instrucciones básicas. Formatos. Direccionamientos TEMA 33 Programación en lenguaje ensamblador. Instrucciones básicas. Formatos. Direccionamientos Mª Luisa Garzón Villar Cuerpo de Profesores de Enseñanza Secundaria Volumen II. Informática ÍNDICE SISTEMÁTICO

Más detalles

El presente documento contiene la guia para poder construir metodos numericos en lenguaje ensamblador en este caso con FASM.

El presente documento contiene la guia para poder construir metodos numericos en lenguaje ensamblador en este caso con FASM. Introduccion: El presente documento contiene la guia para poder construir metodos numericos en lenguaje ensamblador en este caso con FASM. Se explicara paso por paso e instruccion por instruccion que se

Más detalles

Introducción al ensamblador 80x86

Introducción al ensamblador 80x86 Introducción al ensamblador 80x86 Por: Sadot Alexandres Fernández Colaboran: Carlos Rodríguez Morcillo, Javier Goyanes. Departamento de Electrónica y Automática Escuela Técnica Superior de Ingeniería Universidad

Más detalles

Buses y Periféricos. ITIS. Ensamblador y Turbo debugger

Buses y Periféricos. ITIS. Ensamblador y Turbo debugger BUSES Y PERIFÉRICOS (Práctica de introducción a ensamblador. Va acompañada del documento Ensamblador del 8086.doc. Su realización no cuenta para la nota de prácticas) Programación en ensamblador utilizando

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

Acceso Directo a Memoria

Acceso Directo a Memoria Tema 7: Acceso Directo a Memoria 7.1 El concepto Qué es una transferencia por acceso directo a memoria? El modelo de transferencia de información visto en los capítulos anteriores se denomina transferencia

Más detalles