Ensamblador - Ayuda con ensamblador

 
Vista:

Ayuda con ensamblador

Publicado por Rastor (5 intervenciones) el 12/04/2007 12:42:19
Por favor alguien me puede decir por que este codigo al compilarlo no da ningun error y despues al ejecutarlo me da un error.

El error es:
Subsitema MS_DOS 16bits

LA CPU NTVDM ha encontraso una instruccion no permitida
CS:0000 IP:0026 OP:63 05 3a 9c



.model small
.stack 100h
CODE_SEG SEGMENT
ASSUME CS:CODE_SEG
ORG 100h
TEST_WRITE_HEX PROC FAR
MOV DL,3Fh
CALL WRITE_HEX
INT 20h
TEST_WRITE_HEX ENDP
PUBLIC WRITE_HEX
;---------------------------------------------------------------------------;
; Este procdimiento convierte el byte que se halla en el registro DL ;
;en hexAdeximal, y escribe los dos digitos hexadeximales en la posicion ;
; actual del cursor ;
; ;
; DL Byte que se va a cionvertir en hexadeçximal. ;
; ;
;Usa: WHITE_HEx-DIGIT ;
;---------------------------------------------------------------------------;

WRITE_HEX PROC NEAR
PUSH CX
PUSH DX
MOV DH,DL
MOV CX,4
SHR DL,CL
CALL WRITE_HEX_DIGIT
MOV DL,DH
AND DL, 0Fh
CALL WRITE_HEX_DIGIT
POP DX
POP CX
RET
WRITE_HEX ENDP
PUBLIC WRITE_HEX_DIGIT
;---------------------------------------------------------------;
;Este procedimineto convierte los 4 bits de DL en un digito ;
;hexadeximal, y lo imprime en la pantalla ;
; ;
; DL los 4 bits bajos contienen el numero que se va a ;
; imprimir en hexadeximal ;
; ;
;Usa: WRITE_CHAR ;
;---------------------------------------------------------------;

WRITE_HEX_DIGIT PROC NEAR
PUSH DX
CMP DL,10
JAE HEX_LETTER
ADD DL, "0"
JMP Short WRITE_DIGIT
HEX_LETTER:
ADD DL, "A"-10
WRITE_DIGIT:
CALL WRITE_CHAR
POP DX
RET
WRITE_HEX_DIGIT ENDP
PUBLIC WRITE_CHAR
;-------------------------------------------------------------------;
;Este procedimiento imprime un caracte en la pantalla usando la lla_;
;mada de funcion del DOS. ;
; ;
; DL el byte que se va a imprimir en la pantalla. ;
;-------------------------------------------------------------------;

WRITE_CHAR PROC NEAR
PUSH AX
MOV AH,2
INT 21h
POP AX
RET
WRITE_CHAR ENDP
CODE_SEG ENDS
END TEST_WRITE_HEX
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