Vous êtes sur la page 1sur 6

Programa de cdigo acii

TITLE P17ASCRD (EXE) Lee un archivo ASCII .MODEL SMALL ;DEFINE EL MODELO DE MEMORIA .STACK 64 ;DEFINE EL SEGMENTO DE PILA Y TAMAO

;------------------------------------------------------.DATA ;Define el segmento de datos ;area de despliegue ;Indicador del fin del proceso ;Manejador del archivo

DISAREA DB 120 DUP(' ') ENDCDE DW 00 HANDLE DW 0

OPENMSG DB '*** Open error ***' ; PATHNAM DB 'FILE3.TXT',0 ROW DB 00 ;

;compara hilera de pantalla ;area de entrada

SECTOR DB 512 DUP (' ')

;------------------------------------------------------.CODE BEGIN PROC FAR MOV MOV MOV MOV AX,@data DS,AX ES,AX AX,0600h ;inicio de codigo ;Procedimiento principal ;inicializa ;registros de ;segmento ;mueve el acumulador a esa direccion de memoria ;Limpia la pantalla ;coloca el cursor ;abre archivo ;Apertura valida?

CALL Q10SCR CALL Q20CURS CALL E10OPEN CMP JNE A20LOOP: CALL R10READ CMP ENDCDE,00 ENDCDE,00 A90

;no, salir ;si continuar ;Lee el primer sector del disco ;fin del archivo, no hay datos?

Cdigo en lenguaje ensamblador

Pgina 1

Programa de cdigo acii


JE A90 ;si, salir ;despliega y lee

CALL G10XFER

A90: MOV MOV INT MOV INT

AH,3Eh BX,HANDLE

;peticion para cerrar archivo ;

21h

;fin del programa ;mueve el acumolador a la direccion ...sale al dos

AX,4C00h 21h

; fin de programa o cierre de programa

BEGIN ENDP ; ;

; comienza

Abre archivo en disco: ______________________ ;procedimiento principal ;peticion para abrir ;Solo lectura ;colocar el cursor en direccion

E10OPEN PROC NEAR MOV MOV LEA INT JNC AH,3Dh AL,00

DX,PATHNAM 21h E20

;cierre de programa ;examinar bandera de acarreo ;si esta en uno error ;saltos, ciclos, procedimientos del ip HANDLE,AX ;guarda manejador

CALL X10ERR RET E20: MOV RET E10OPEN ENDP

;saltos,ciclos,procedimieto del ip ;terimina o cierre de ENDP

; ;

Transfiere datos a la lnea de despliegue: ____________________________ ;Procedimiento principal

G10XFER PROC NEAR

Cdigo en lenguaje ensamblador

Pgina 2

Programa de cdigo acii


CLD LEA G20: LEA G30: LEA CMP JNE ;de izquierda a derecha SI,SECTOR DI,DISAREA ;colocar el cursor en direccion al registro indice fuente ;colocar el cursor en dirreccion al registo de destino

DX,SECTOR+512 ;colocar el cursor en direccion al registro de datos SI,DX G40 ;fin del sector indice fuentecon el registro de datos ;no, pasar ;si, lee el siguiente ;fin del archivo

CALL R10READ CMP JE LEA G40: LEA CMP JB MOV ENDCDE,00 G80

;si, salir ;colocar el cursor en dirrecion al registro indice fuente

SI,SECTOR

DX,DISAREA+80 ;colocar el cursor en direccion al registro de datos DI,DX ;fin del sector registro indice destino de registro de datos ;no , pasar ;si, colocar cr/lf ;fijar la linea anterior al video normal ;reinicializar ;[si] a AL, inc si ;almacena bytes y establece los indicadores de consecuencia de nivel mas

G50

[DI],0D0Ah

CALL H10DISP LEA DI,DISAREA

G50: LODSB STOSB bajo low CMP JE CMP JNE AL,1Ah G80 AL,0Ah G30

;fin del sector low.. fin de archivo ;si, salir ;avanza linea ;no repetir el ciclo ;fijar la linea anterior al video normal ;salto o bifurcacion a la direccion ;fijar la linea anterior al video normal

CALL H10DISP JMP G20

G80: CALL H10DISP G90: RET

;saltos, ciclos, prodcedimientos del ip

Cdigo en lenguaje ensamblador

Pgina 3

Programa de cdigo acii


G10XFER ENDP despliegue ; ; Despliega lnea: ________________ ;procedimiento principal ;mueve el nivel alto a la direccion ;mueve el registro base ;reinicializa ;verifica que la entrada de datos, fin de archivo, fin de area, fin de

H10DISP PROC NEAR MOV MOV LEA NEG ADD LEA INT CMP JAE INC JMP AH,40h BX,01 CX,DISAREA CX CX,DI DX,DISAREA 21h ROW,22 H20 ROW H90

;niega al registro contador ;modifica el registro contador porregistro indice destino ;coloca el cursor en el destino

;fin del programa ;compara el renglon ala parte inferior de la pantalla ;no salir ;inicia comparacion ; salta la direccion ;mueve el acumulador ala direccion para un recorrido ;limpia la pantalla (trasfiere el control del programa) ;coloca el cursor ;saltos, ciclos, procedimientos del ip ;DESPLEGAR Y CERRAR ENDP

H20: MOV

AX,0601h

CALL Q10SCR CALL Q20CURS H90: RET H10DISP ENDP ; ;

Recorre la pantalla: ____________________ ;procedimiento principal ;mueve y asigna atributo ;mueve registro contador a direccion ;mueve el registro de datos

Q10SCR PROC NEAR MOV MOV MOV INT BH,1Eh CX,0000 DX,184Fh 10h

;fin de programa Pgina 4

Cdigo en lenguaje ensamblador

Programa de cdigo acii


RET Q10SCR ENDP ; ; Coloca el cursor: _________________ ;procedimiento principal ;mueve el bite mas alto ;mueve el cursor ;mueve el renglon y compara ;invierte el seguro ;fin del programa ;saltos, ciclos, procedimientos del ip ;cierre y despliegue ; saltos, ciclos, procedimientos del ip ;cieere y despliegue de endp

Q20CURS PROC NEAR MOV MOV MOV MOV INT RET Q20CURS ENDP ; ; AH,02h BH,00 DH,ROW DL,00 10h

Lee sector del disco: _____________________ ;procedimiento principal ;mueve el bite mas alto y `peticion de lectura ;mueve el cursos del dispositivo ;mueve el registro contador a una longitud ;buffer... memoria de almacenamiento temporal

R10READ PROC NEAR MOV MOV MOV LEA INT MOV RET R10READ ENDP ; ; AH,3Fh BX,HANDLE CX,512 DX,SECTOR 21h

;fin del programa ;mueve lalectura al acumulador del registro

ENDCDE,AX

;saltos,ciclo, procedimientos del ip ; cierre y despliegue

Despliega mensaje de error de disco: __________________________

X10ERR PROC NEAR

;procedimiento principal

Cdigo en lenguaje ensamblador

Pgina 5

Programa de cdigo acii


MOV MOV MOV LEA INT MOV RET X10ERR ENDP END BEGIN AH,40h BX,01 CX,18 ;mueve el bite mas alto y peticion del despliegue ;mueve elmanejador ;mueve el contador de registro con longitud ;coloca mensaje de error

DX,OPENMSG 21h

;termina el programa ;mueve el indicador de error

ENDCDE,01

;saltos, ciclos, procedimientos del ip ;cierre o despligue ;cierre de begin(comenzar)

Cdigo en lenguaje ensamblador

Pgina 6