Algoritmia - assembler

 
Vista:

assembler

Publicado por victor (3 intervenciones) el 11/12/2009 02:34:49
hola amigos necesito ayuda en un codigo de assembler q es un menu pro cuando pongo la opcion crear archivo y si m lo crea pero me genera errores como mostrando caracteres raros o cm cuelga..cual es el porblema xfa..

.model small

.data
DATOS SEGMENT PARA PUBLIC

nombre DB 'BY VICTOR SOLORZANO $'
PRESENTACION DB 'PROYECTO DE ASSEMBLER $'
MENU DB '----->MEMNU DE OPCIONES<----$'
CREAR_ARCHIVO DB 'Crear Archivo $'
ESC_ARCHIVO DB 'Escribir en un Archivo $'
ELIM_ARCHIVO DB 'Eliminar Archivo$'
MENU_SALIR DB 'Salir $'
EscriboMensaje2 db 0AH,0DH,'INTRODUZCA EL NOMBRE DEL FICHERO DE SALIDA: $'
EscriboMensaje8 db '!!!EL ARCHIVO HA SIDO CREADO!!!.', 0dh,0ah,'$'
Avanza db 0dh,0ah,'$'
BufferDeEntradaTeclado db ?
FicheroDeSalida db ?
FILEENTRADA DB 'TEXTO.TXT',0 ;ARCHIVO DE ENTRADA DE TEXTO
FILESALIDA DB 'TEXTCOD.TXT',0 ;ARCHIVO DONDE QUEDARAN LOS DATOS CODIFICADOS
MESA DB 'CODER. Codificador de 20Kbytes de texto','$'

MESC DB 'Leyendo TEXTO.TXT','$'
MESE DB 'Guardando TXTCOD.TXT','$'
TALLA DW 20000
MENSAJE DW 0
TXTDEC DB 20000 DUP(?) ;BUFFER TEXTO DECODIFICADO
TXTCOD DB 20000 DUP(?) ;BUFFER TEXTO CODIFICADO
CONTADOR DB 0


p DB 5 dup(?)
nom DB 10 dup(?)
OPCION_ACTUAL DB 0
itemX1 DB 0
itemX2 DB 0
itemY1 DB 0
itemY2 DB 0

TECLA_LEFT EQU 75
TECLA_RIGHT EQU 77
TECLA_UP EQU 72
TECLA_DOWN EQU 80
TECLA_ESC EQU 27
TECLA_ENTER EQU 13
TECLA_TAB EQU 9

OPCION_ARCHIVO EQU 0

OPCION_EDICION EQU 1
OPCION_OPCIONES EQU 2
OPCION_SALIR EQU 3

opcion DB ?

DATOS ENDS


CODIGO SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:CODIGO, DS:DATOS, SS:PILA, ES:DATOS
mov ax,seg nombre
mov ds, ax


QUIT MACRO
MOV AH,4CH
INT 21H
ENDM

READKEY_SINECO MACRO TECLA
MOV AH,8H
INT 21H
MOV TECLA,AL
ENDM

SHOWTEXT MACRO TEXTO
mov ah,9h

; ESTAS DOS LINEAS SON LO MISMO
;mov dx,offset TEXTO
LEA DX,TEXTO

INT 21H
ENDM

; PINTAR UN CUADRO EN LA PANTALLA DE ACUERDO A LA COORDENADA X1, Y1, X2, Y2
; CON EL ATRIBUTO ESPECIFICACO EN A

DRAWBOX MACRO A,X1,Y1,X2,Y2
MOV AH,06H ; SERVICIO 6H
MOV AL,0 ; PAGINA DE VIDEO - MONOCROMO
MOV BH,A ; ATRIBUTO 4 BITS BACKGROUND 4 BITS FOREGROUND
MOV CH,Y1 ; POSICION Y1
MOV CL,X1 ; POSICION X1
MOV DH,Y2 ; POSICION Y2
MOV DL,X2 ; POSICION X2
INT 10H ; INTERRUPCION 10H
ENDM

GOTOXY MACRO X1,Y1
MOV AH,2H
MOV BH,0
MOV DH,Y1
MOV DL,X1
INT 10H
ENDM

MAINPROG:

DRAWBOX 3FH,0,0,79,24 ; PINTA EL FONDO DE COLOR CYAN
DRAWBOX 1FH,30,04,60,04 ; PINTA EL MENU AZUL EN LA LINEA CERO
DRAWBOX 4FH,0,24,79,24 ; PINTA LA LINEA DE ESTADO

PINTAR:
mov itemY1,0
mov itemY2,0

CMP OPCION_ACTUAL,OPCION_ARCHIVO
JE posicion0

CMP OPCION_ACTUAL,OPCION_EDICION
JE posicion1

CMP OPCION_ACTUAL,OPCION_OPCIONES
JE posicion2

CMP OPCION_ACTUAL,OPCION_SALIR
JE posicion3

JMP posicionFin

posicion0:
mov itemx1,33
mov itemx2,49
mov itemy1,10
mov itemy2,10
JMP posicionFin

posicion1:
mov itemx1,33
mov itemx2,49
mov itemy1,11
mov itemy2,11

JMP posicionFin

posicion2:
mov itemx1,33
mov itemx2,49
mov itemy1,12
mov itemy2,12

JMP posicionFin

posicion3:
mov itemx1,33
mov itemx2,49
mov itemy1,13
mov itemy2,13

JMP posicionFin

posicionFin:
DRAWBOX 5FH,itemX1,itemY1,itemX2,itemY2

ESCRIBE: ; ESCRIBE LOS TEXTOS DE LOS MENUS
GOTOXY 33,04
SHOWTEXT PRESENTACION
GOTOXY 33,07
SHOWTEXT MENU
GOTOXY 33,10
SHOWTEXT CREAR_ARCHIVO
GOTOXY 33,11
SHOWTEXT ESC_ARCHIVO
GOTOXY 33,12
SHOWTEXT ELIM_ARCHIVO
GOTOXY 33,13
SHOWTEXT MENU_SALIR
GOTOXY 45,20
SHOWTEXT NOMBRE


LEER: ; LEER LA TECLA PULSADA POR EL USUARIO

READKEY_SINECO OPCION

CMP opcion,TECLA_DOWN
JE mov1

CMP opcion,TECLA_UP
JE mov2

CMP OPCION, TECLA_ESC
JE label4

CMP OPCION,TECLA_ENTER
JE LABEL0
JMP LEER

LABEL0:
CMP OPCION_ACTUAL,0
JE CARCHIVO
JMP LABEL1

LABEL1:
CMP OPCION_ACTUAL,1

JMP LABEL2

LABEL2:
CMP OPCION_ACTUAL,2

JMP LABEL3

LABEL3:
CMP OPCION_ACTUAL,3
JE label4
JMP LEER

MOV1:
JMP MOVDW
MOV2 :
JMP MOVARR


CARCHIVO:


mov ax,@DATA
MOV DS,AX


DRAWBOX 3FH,0,0,79,24
GOTOXY 33,04
push ax

pop ax
mov es,ax

mov ah,9
mov dx,offset EscriboMensaje2
int 21h

mov ah,0ah ;Lee una cadena de la entrada standard en un buffer
mov dx,offset BufferDeEntradaTeclado
int 21h
mov ah,9
mov dx,offset Avanza
int 21h


cld
mov cl,[BufferDeEntradaTeclado+1]
xor ch,ch ;Hacemos 0 a ch
mov si,offset BufferDeEntradaTeclado+2
mov di,offset FicheroDeSalida
rep movsb
xor al,al
stosb


mov ah,3ch
mov dx,Offset FicheroDeSalida
int 21h
MOV AH,3EH
INT 21H

READKEY_SINECO OPCION
cmp opcion,TECLA_ENTER
jmp mainprog


EXIT:
JMP SALIR


movarr: ; REALIZA LOS MOVIMIENTOS HACIA ABAJO

CMP OPCION_ACTUAL,OPCION_ARCHIVO
JE MOVER_OPCION_SALIR

CMP OPCION_ACTUAL,OPCION_EDICION
JE MOVER_OPCION_ARCHIVO

CMP OPCION_ACTUAL,OPCION_OPCIONES
JE MOVER_OPCION_EDICION

CMP OPCION_ACTUAL,OPCION_SALIR
JE MOVER_OPCION_OPCIONES
;JE QUIT

JMP LEER


movdw: ; REALIZA LOS MOVIMIENTOS HACIA ABAJO

CMP OPCION_ACTUAL,OPCION_ARCHIVO
JE MOVER_OPCION_EDICION

CMP OPCION_ACTUAL,OPCION_EDICION
JE MOVER_OPCION_OPCIONES

CMP OPCION_ACTUAL,OPCION_OPCIONES
JE MOVER_OPCION_SALIR

CMP OPCION_ACTUAL,OPCION_SALIR
JE MOVER_OPCION_ARCHIVO

JMP LEER

MOVER_OPCION_ARCHIVO:
MOV OPCION_ACTUAL,0
JMP mainprog

MOVER_OPCION_EDICION:
MOV OPCION_ACTUAL,1
JMP mainprog

MOVER_OPCION_OPCIONES:
MOV OPCION_ACTUAL,2
JMP mainprog

MOVER_OPCION_SALIR:
MOV OPCION_ACTUAL,3
JMP mainprog


jmp mainprog
SALIR:
QUIT

CODIGO ENDS

PILA SEGMENT PARA STACK 'stack'
DB 200 DUP(0)
PILA ENDS

END
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:assembler

Publicado por eduardo (55 intervenciones) el 14/01/2010 02:33:20
Este es un foro de Algoritmia mas no de Assembler. Deberías solicitar la ayuda en el foro respectivo.

Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar