Ensamblador - interrupciones

 
Vista:

interrupciones

Publicado por roberto (2 intervenciones) el 01/05/2007 06:19:09
Hola, mi problemita es este... Bueno tengo ke hacer un programita ke a la hora d pulsar la tecla Print Screen aparesca en pantalla mi programa, bueno una serie de programas ke hice en forma d menu y pues la vdd estoy muy confundida pues, cuando lo ejecuto no m marca errores pero cuando ia kiero correrlo m aparece este error
La cpu ntvdw error en cs:0000 ip:3761 op:ff d9 19 04 00
y no hace nada, aki dejo mi codigo, espeor m puedan ayudar es algo urgente por ke es mi proyecto >_<

DSEG SEGMENT PARA 'DATA'

CONT DB 0
CONTU DB 0
CONTD DB 0
CONTC DB 0
CAD1 DB (?)
CAD2 DB (?)
COL1 DB 00H
COL2 DB 4FH
RENG DB 01H
VECES DB 0H
RENGLON DB 02H
NUEZ DB 02H

CADENA DB "PRESIONE 1 PARA CONTINUAR, O CUALQUIER TECLA PARA SALIR","$"
MENSAJE DB 'OPRIME :<<PRINT SCREEN>> Y DESPUES PRESIONA <<ENTER>>', '$'

ETIQ LABEL DWORD
PTEA DW ?
PTEB DW ?
DSEG ENDS

SSTACK SEGMENT PARA STACK
DW 256 DUP(?)
SSTACK ENDS

CSEG SEGMENT PARA 'CODE'

CUADRO PROC FAR

ASSUME CS:CSEG, DS:DSEG,SS:SSTACK
PUSH DS;
XOR AX,AX
PUSH AX
MOV AX,DSEG
MOV DS,AX

;OBTENEMOS LA DIRECCION ORIGINAL DEL VECTOR DE LA INTERRUPCION 5

MOV AL,05H
MOV AH,35H
INT 21H

MOV WORD PTR PTEA,BX
MOV WORD PTR PTEB,ES

POP DS
POP ES
POP BX
;CARGA LA DIRECCION DEL SEGMENTO MOD_REV
MOV AX, SEG PROGRAMA
MOV DS, AX
MOV AX, OFFSET PROGRAMA

PUSH BX
PUSH ES
PUSH DS

;ESTABLECEMOS LA NUEVA RUTINA DE SERVICIO

MOV AH, 25H
MOV AL, 05H
INT 21H

POP DS
POP ES
POP BX

;INSTRUCCION QUE ESPERA Y LEE UN SOLO CARACTER

MOV AH, 0H
INT 16H

;CARGA EL REGISTRO DEL SEGMENTO DE DATOS

LDS AX,DWORD PTR ETIQ

;DIRECCIONES: APUNTADOR A NUEVO MANEJADOR DE INSTRUCCIONES

MOV CX, ES
MOV DS, CX
MOV DX, BX

PUSH BX
PUSH ES
PUSH DS

;REESTABLECEMOS LA DIRECCION ORIGINAL DE LA INT 5
MOV DS,PTEA
MOV BX,PTEB
MOV AL,05H
MOV AH,25H
INT 21H

RET
CUADRO ENDP

;******************************************

IMPAS PROC NEAR
ASC: MOV AH, 02H
MOV DH, RENGLON
MOV DL, 020H
INT 10H ;APUNTAMOS EL CURSOR
CALL IMPRIMIRASCII
CALL ESPACIO
CALL ESPACIO
CALL IMPRIMIRHEXADECIMAL
CALL ESPACIO
CALL ESPACIO
CALL IMPRIMIRDECIMAL
CALL ESPACIO
INC RENGLON
INC CONT
INC VECES
CMP VECES, 0AH
JNA ASC ;CICLO DE IMPRECION ASCCI
SUB VECES, 0AH
ADD RENGLON, 02H
MOV AH, 02H
MOV DH, RENGLON
MOV DL, 0CH
INT 10H
RET
IMPAS ENDP
;******************************************
PREGUNTA PROC NEAR
LEA DX, CADENA
MOV AH, 09H
INT 21H
INC RENGLON
MOV AH, 02H
MOV DH, RENGLON
MOV DL, 024H
INT 10H

RET
PREGUNTA ENDP
;******************************************
CLEAR PROC NEAR
MOV AX,0600H
MOV BX,0A01H
MOV CX,0000H
MOV DX,184FH
INT 10H
RET
CLEAR ENDP
;******************************************
IMPRIMIRDECIMAL PROC NEAR

MOV CONTC,00H
MOV CONTD,00H
MOV AL,CONT
MOV CONTU,AL
CENTEN: CMP AL,064H
JB DECEN
SUB AL,064h
INC CONTC
MOV CONTU,AL
DECEN: CMP AL,0AH
JB SIG
SUB AL,0Ah
INC CONTD
MOV CONTU,AL
JMP CENTEN
SIG: ADD CONTC,30H
MOV DL,CONTC
MOV AH,02H
INT 21H
ADD CONTD,30H
MOV DL,CONTD
MOV AH,02H
INT 21H
ADD CONTU,30H
MOV DL,CONTU
MOV AH,02H
INT 21H
RET
IMPRIMIRDECIMAL ENDP
;******************************************
IMPRIMIRHEXADECIMAL PROC NEAR
MOV AL,CONT
AND AL,0F0H
MOV CL,04H
SHR AL,CL
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
MOV AL,CONT
AND AL,0FH
ADD AL,30H
CMP AL,39H
JNA B
ADD AL,07H
B: MOV DL,AL
MOV AH,02H
INT 21H
RET
IMPRIMIRHEXADECIMAL ENDP
;******************************************
IMPRIMIRASCII PROC NEAR
MOV AL,CONT
MOV DL,AL
MOV AH,02H
INT 21H
RET
IMPRIMIRASCII ENDP
;******************************************
ESPACIO PROC NEAR

MOV DL,20H
MOV AH,02H
INT 21H

RET
ESPACIO ENDP
;******************************************
COLUMNAS PROC NEAR
MOV CL,017H
COLUMNA1:
MOV AH,02H
MOV BH,0H
MOV DH,RENG
MOV DL,COL1
INT 10H
MOV DL,0BAH
MOV AH,02H
INT 21H
INC RENG
LOOP COLUMNA1
MOV RENG,01H
MOV CL,017H
COLUMNA2:
MOV AH,02H
MOV BH,0H
MOV DH,RENG
MOV DL,COL2
INT 10H

MOV DL,0BAH
MOV AH,02H
INT 21H
INC RENG
LOOP COLUMNA2
RET
COLUMNAS ENDP
;******************************************
LINEA2 PROC NEAR
MOV AH,02H
MOV BH,00H
MOV DX,01700H
INT 10H
MOV DL,0C8H ;ESQUINA INFERIOR IZQ
MOV AH,02H
INT 21H
MOV AH,02H
MOV BH,0
MOV DX,0174FH
INT 10H
MOV DL,0BCH ;ESQUINA INFERIOR DER
MOV AH,02H
INT 21H
MOV AH,02H
MOV BH,00H
MOV DX,1701H
INT 10H
MOV CL,4EH
REPITE1:MOV DL,0CDH ;LINEA HORIZONTAL
MOV AH,02H
INT 21H
LOOP REPITE1
RET
LINEA2 ENDP
;******************************************
LINEA1 PROC NEAR
MOV AH, 02H ;POSICION DEL CURSOR
MOV BH, 00H
MOV DX, 0000H
INT 10H
MOV DL, 0C9H ;ESQUINA DEL CUADRO
MOV AH, 02H
INT 21H
MOV AH, 02H ;LINEA SUPERIOR
MOV BH, 00H
MOV DX, 0001H
INT 10H
MOV CL, 04EH ;LINEA HORIZONTAL
REPITE: MOV DL, 0CDH
MOV AH, 02H
INT 21H
LOOP REPITE
MOV AH, 02H
MOV BH, 00H
MOV DX, 0004FH
INT 10H
MOV DL, 0BBH
MOV BH, 01H
INT 21H

RET
LINEA1 ENDP

;******************************************
PROGRAMA PROC NEAR

PUSH AX
PUSH BX
PUSH DX
PUSH ES
PUSHF
MOV AX, SEG DSEG
MOV DS, AX

CALL CLEAR
CALL LINEA1
CALL COLUMNAS
CALL LINEA2
; MOV BH,00H ;PAGINA
A: CALL IMPAS
CALL PREGUNTA
MOV AH,01H
INT 21H
CMP AL, 31H
JNZ FIN
SUB RENGLON, 0DH
JMP A
FIN: CALL CLEAR

POPF
POP ES
POP DX
POP BX
POP AX

IRET

PROGRAMA ENDP

CSEG ENDS
END CUADRO
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