Assembler 1er laboratorio
-
Upload
jose-pedro-avila -
Category
Economy & Finance
-
view
130 -
download
0
Transcript of Assembler 1er laboratorio
LABORATORIO DE TURBO ASSEMBLER. PROCESADORES DIGITALES
PRUEBA DE LAS INTERRUPCIONES BASICAS INT 10H BIOS Y 21H
Procedimiento.Ingresar el código en archivos de texto plano con extensión TXT o ASM.Compilar desde el PROMPT del Sistema Operativo con los siguientes comandos, si hubiera error corregir en el código:C:\ PATH TASMC:\ TASM ARCHIVO.TXT ó C:\TASM ARCHIVO.ASMC:\ TLINK ARCHIVO.OBJSeguidamente verificar la ejecución con el nombre del archivoC:\ ARCHIVO
1. Interrupciones de Recorrido de pantalla, posicionamiento de cursor y salida a pantalla.
DATOS SEGMENT
CADENAB DB "UNIVERSIDAD NACIONAL DE TRUJILLO","$"CADENAC DB "INGENIERIA DE SISTEMAS: ",10,13CADENAD DB "PRUEBA DE LA COMPILACION EN TASSEMBLER",10,13CADENAE DB "VII CICLO SEMESTRE 2014-I","$"
DATOS ENDS
CODIGO SEGMENTASSUME CS:CODIGO, DS:DATOS, SS:PILA
INIC:MOV AX,DATOS ; asigna a AX el desplazamineto DATOSMOV DS,AX ; asigna al registro DS la dirección inicial
;interrupción de recorrido de pantallaMOV AX,0600h ; funcion 06, valor de al=00 recorrido total MOV BH,07h ; atributo de colorMOV CX,0000h ; posición inicialMOV DX,184fh ; posición final renglon 24, columna 79INT 10h
;interrupción de posición de cursorMOV AH,02H ; función 02hMOV BH,00 ; pagina activa nº0
MOV DX,0310H ; renglon 3, columna 16INT 10H ; interrupción BIOS
;interrupción de salida a pantallaLEA DX,CADENABMOV AH,09HINT 21H
;interrupción de posición de cursorMOV AH,02H ; función 02hMOV BH,00 ; pagina activa nº0MOV DX,0606H ; renglon 6, columna 6INT 10H ; interrupción BIOS
;interrupción de salida a pantallaLEA DX,CADENACMOV AH,09HINT 21H
;interrupción de salida al sistema operativoMOV AX,4C00h ;INT 21h
CODIGO ENDS
PILA SEGMENT STACKDB 160 DUP(?); separación de 160 bytes para uso de pila
PILA ENDS
END INIC…………………………………………………………………………………………………………………………………………………………………………….………………………………………………………………………………………………………………………………………………………………………….
2. Prueba de bucles de control utilizando LOOP y el registro CX.
DATOS SEGMENT
CADENAB DB "UNIVERSIDAD NACIONAL DE TRUJILLO",10,13CADENAC DB " INGENIERIA DE SISTEMAS: ","$"CADENAD DB "PRUEBA DE LA COMPILACION EN TASSEMBLER","$"CADENAE DB " VII CICLO SEMESTRE 2014-I ","$"
POS DW 0800H
DATOS ENDS
CODIGO SEGMENTASSUME CS:CODIGO, DS:DATOS, SS:PILA
INIC:MOV AX,DATOS ; asigna a AX el desplazamineto DATOSMOV DS,AX ; asigna al registro DS la dirección inicial
;interrupción de recorrido de pantallaMOV AX,0600h ; funcion 06, valor de al=00 recorrido total MOV BH,07h ; atributo de colorMOV CX,0000h ; posición inicialMOV DX,184fh ; posición final renglon 24, columna 79INT 10h
;interrupción de posición de cursorMOV AH,02H ; función 02hMOV BH,00 ; pagina activa nº0MOV DX,0310H ; renglon 3, columna 16INT 10H ; interrupción BIOS
;interrupción de salida a pantallaLEA DX,CADENABMOV AH,09HINT 21H
MOV CX,04H
BUCL: MOV AH,02HMOV BH,00MOV DX,POSINT 10HADD DX,0206HMOV POS,DX
;interrupción de salida a pantallaLEA DX,CADENADMOV AH,09HINT 21H
LOOP BUCL
MOV AX,4C00h ;INT 21h
CODIGO ENDS
PILA SEGMENT STACKDB 160 DUP(?); separación de 160 bytes para uso de pila
PILA ENDS
END INIC
……………………………………………………………………………………………………………………………………………………………………….3. Interrupciones de Ingreso de caracteres a memoria a
través de LABEL BYTE.
DATOS SEGMENT
CADENAB DB "UNIVERSIDAD NACIONAL DE TRUJILLO","$"CADENAC DB "INGRESE UNA CADENA DE 20 CARACTERES: ","$"CADENAD DB "LA CADENA INGRESADA ES: ","$"CADENAE DB "LA CADENA INVERTIDA ES: ","$"
CADENA LABEL BYTETOTAL DB 21ACTUAL DB ?CADE DB 21 DUP(?)
DOLAR DB "$"
CADINV DB 21 DUP(?),”$”DATOS ENDS
CODIGO SEGMENTASSUME CS:CODIGO, DS:DATOS, SS:PILA
INIC:MOV AX,DATOS ; asigna a AX el desplazamiento DATOSMOV DS,AX ; asigna al DS la dirección inicial
CALL RECORRE
MOV DX,0310HCALL POSICIONLEA DX,CADENABCALL MUESTRA
MOV DX,0504HCALL POSICIONLEA DX,CADENACCALL MUESTRA
CALL INGRESO
MOV DX,0704HCALL POSICIONLEA DX,CADENADCALL MUESTRALEA DX,CADECALL MUESTRA
;&&&&&&&&&&&&&&&&&&&&&&&&&&&;interrupción de salida al sistema operativoMOV AX,4C00h ;INT 21h
RECORRE PROC NEAR;interrupción de recorrido de pantallaMOV AX,0600hMOV BH,07h ; atributo de colorMOV CX,0000h ; posición inicialMOV DX,184fhINT 10hRET
RECORRE ENDP
POSICION PROC NEAR;posicion de cursor, falta el valor de DXMOV AH,02HMOV BH,00INT 10HRET
POSICION ENDP
MUESTRA PROC NEAR;interrupción de muestra, falta el valor de DXMOV AH,09HINT 21HRET
MUESTRA ENDP
INGRESO PROC NEAR;interrupción de ingreso de cadena a buffer LABEL BYTE
MOV AH,0AHLEA DX,CADENAINT 21HRET
INGRESO ENDP
CODIGO ENDS
PILA SEGMENT STACKDB 160 DUP(?); separación de 160 bytes para uso de pila
PILA ENDS
END INIC
4. Ejemplo final con accesos indirectos a DATOS para invertir cadena de caracteres directamente en memoria
(nota: solo agregue al programa anterior en el renglón marcado con ;&&&&&&&&&&&&&&&&&&&&&)
;procedimiento que invierte la cadena hacia CADINVMOV DI,20MOV SI,0
MOV CX,0MOV CL,ACTUALSUB CX,1MOV DI,CXADD CX,1
INVI: MOV BX,OFFSET CADEMOV AL,[BX+DI]MOV BX,OFFSET CADINVMOV [BX+SI],ALINC SIDEC DILOOP INVI
MOV DX,0B04HCALL POSICIONLEA DX,CADENAECALL MUESTRALEA DX,CADINVCALL MUESTRA