Ensamblador - german

 
Vista:

german

Publicado por Problema al convertir en .com (2 intervenciones) el 12/04/2007 20:27:26
porqueno puede convertir este fichero exe en un fichero com
.model tiny
CODE_SEG SEGMENT
ASSUME CS:CODE_SEG
ORG 100h
TEST_WRITE_DECIMAL PROC NEAR
MOV DX,12345
CALL WRITE_DECIMAL
INT 20h
TEST_WRITE_DECIMAL ENDP
PUBLIC WRITE_DECIMAL
;---------------------------------------------------------------------------;
; Este procdimiento convierte los 2 byte que se hallan en el registro Dx ;
;en decimal, y los escribe en la posicion actual del cursor ;
; ;
; ;
; DX regitro que se va a convertir en hexadeçximal. ;
; ;
;Usa: WHITE_HEX-DIGIT ;
;---------------------------------------------------------------------------;

WRITE_DECIMAL PROC NEAR
PUSH AX
PUSH CX
PUSH DX
PUSH SI
MOV AX,DX
MOV SI, 10
XOR CX, CX :pone cx a cero
NOM_ZERO:
XOR DX,DX
DIV SI ;divide entre 10 para sacar cada cifra
PUSH DX
INC CX
OR AX,AX
JNE NOM_ZERO
WRITE_DIGIT_LOOP:
POP DX
CALL WRITE_HEX_DIGIT
LOOP WRITE_DIGIT_LOOP
END_DECIMAL:

POP SI
POP DX
POP CX
POP AX
RET
WRITE_DECIMAL ENDP
PUBLIC WRITE_HEX_DIGIT
;---------------------------------------------------------------;
;Este procedimineto convierte los 4 bits de DL en un digito ;
;hexadeximal, y lo imprime en la pantalla. Tambien sirve para ;
;imprimir numeros en decimal ;
; 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_DECIMAL
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