SoloCodigo

Programación General => ASM (Ensamblador) => Mensaje iniciado por: caith_sit en Lunes 30 de Abril de 2007, 23:55

Título: Ayuda!!! Interrupciones
Publicado por: caith_sit en Lunes 30 de Abril de 2007, 23:55
hola a todos!!
pues tengo que hacer que al oprimir impPnt en lugar de que se guarde la pantalla se ejecute un programa (con la interrupcion 5h), estoy probando que solo imprima un caractér (al menos asi seria mas simple no???) pero pues ni eso hace, en realidad no hace nada, alguien me puede decir en donde anda mal mi programa???  porfavoooooorr!!!!

DATASEG SEGMENT PARA 'DATA'

DIRECC LABEL WORD ;DWORD
HOFFSET DW 0
LOFFSET DW 0

DATASEG ENDS

STACKSEG SEGMENT PARA STACK 'STACK'
STACKSEG ENDS

CODESEG SEGMENT PARA 'CODE'
PRINCIPAL PROC FAR
ASSUME CS:CODESEG, DS:DATASEG, SS:STACKSEG
PUSH DS
XOR AX, AX
PUSH AX
MOV AX, DATASEG
MOV DS, AX

MOV AH, 35h
MOV AL, 05h
INT 21h
MOV WORD PTR HOFFSET, BX
MOV WORD PTR LOFFSET, ES

MOV AX, DATASEG
MOV DS, AX

LEA DX, NEWINT5
MOV AH, 25h
MOV AL, 05h
INT 21h
JMP FINE

;*********************************************************
NEWINT5 PROC NEAR

STI

PUSH AX
PUSH BX
PUSH CX
PUSH DX

MOV DL, 41h
MOV AH, 02
INT 21h

POP AX
POP BX
POP CX
POP DX
IRET
NEWINT5 ENDP
;NEWINT5 DUDP
;*********************************************************

FINE:MOV AH, 01
INT 21h

MOV DX, WORD PTR DIRECC
MOV AH, 25h
MOV AL, 05h
INT 21h

RET
PRINCIPAL ENDP
CODESEG ENDS
END PRINCIPAL
Título: Re: Ayuda!!! Interrupciones
Publicado por: Minako_MaY en Martes 1 de Mayo de 2007, 06:24
:P Parece ke nos dejaron algo parecido >_< d la escuela ... :blink: Si encuentras como  :lol: espero ayudes jejeje
Título: Re: Ayuda!!! Interrupciones
Publicado por: Eternal Idol en Martes 1 de Mayo de 2007, 10:24
Vos tampoco estas estableciendo bien la interrupcion, lee las recomendaciones que le di a Minako_MaY en cuanto a depurar el codigo aca (http://foros.solocodigo.com/index.php?showtopic=28371) (la parte en negrita no te incumbe).

En cuanto a tu codigo:
MOV AX, DATASEG  ;no funciona
mov ax, seg newint5 ;funciona
MOV DS, AX
LEA DX, NEWINT5
MOV AH, 25h
MOV AL, 05h
INT 21h
int 05h ;asi si depuras el codigo al darle a t veras el codigo de la funcion NEWINT5

PD. Con esas dos lineas conseguis que imprima la A.