Assembler 1er laboratorio

4
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 TASM C:\ TASM ARCHIVO.TXT ó C:\TASM ARCHIVO.ASM C:\ TLINK ARCHIVO.OBJ Seguidamente verificar la ejecución con el nombre del archivo C:\ 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,13 CADENAD DB "PRUEBA DE LA COMPILACION EN TASSEMBLER",10,13 CADENAE DB "VII CICLO SEMESTRE 2014-I","$" DATOS ENDS CODIGO SEGMENT ASSUME CS:CODIGO, DS:DATOS, SS:PILA INIC: MOV AX,DATOS ; asigna a AX el desplazamineto DATOS MOV DS,AX ; asigna al registro DS la dirección inicial ;interrupción de recorrido de pantalla MOV AX,0600h ; funcion 06, valor de al=00 recorrido total MOV BH,07h ; atributo de color MOV CX,0000h ; posición inicial MOV DX,184fh ; posición final renglon 24, columna 79 INT 10h ;interrupción de posición de cursor MOV AH,02H ; función 02h MOV BH,00 ; pagina activa nº0 MOV DX,0310H ; renglon 3, columna 16 INT 10H ; interrupción BIOS ;interrupción de salida a pantalla LEA DX,CADENAB MOV AH,09H INT 21H ;interrupción de posición de cursor MOV AH,02H ; función 02h MOV BH,00 ; pagina activa nº0 MOV DX,0606H ; renglon 6, columna 6 INT 10H ; interrupción BIOS ;interrupción de salida a pantalla LEA DX,CADENAC MOV AH,09H INT 21H ;interrupción de salida al sistema operativo MOV AX,4C00h ; INT 21h CODIGO ENDS PILA SEGMENT STACK DB 160 DUP(?); separación de 160 bytes para uso de pila PILA ENDS END INIC …………………………………………………………………………………………………………………………………………………………………………… .

Transcript of Assembler 1er laboratorio

Page 1: 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

Page 2: Assembler 1er laboratorio

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

Page 3: Assembler 1er laboratorio

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