04.06.2013 Views

PRÁCTICA 13

PRÁCTICA 13

PRÁCTICA 13

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

LENGUAJE ENSAMBLADOR 80386 <strong>PRÁCTICA</strong> <strong>13</strong><br />

fimul [int10] ;si, mantisa*10<br />

dec [exp] ;y decrementa exponente<br />

jmp @@20<br />

@@30:<br />

fcom [fp1e18] ;¿es la mantisa < 1.0e18?<br />

fstsw [status]<br />

fwait<br />

mov ax,[status]<br />

sahf<br />

jb @@40 ;si, proceder<br />

fidiv [int10] ;no, mantisa / 10<br />

inc [exp] ;e incrementa exponente<br />

jmp @@30<br />

@@40:<br />

fbstp [mant] ;salva mantisa en BCD<br />

fwait<br />

mov di,si ;direcciona cadena ASCII<br />

mov ,’+’ ;asume es positivo<br />

test [signo],200h ;verifica banderas de FXAM<br />

jz @@50 ;brinca, valor es positivo<br />

mov al,’-‘<br />

@@50:<br />

stosb ;salva símbolo + o –<br />

mov al,’0’ ;salva cero delantero<br />

stosb<br />

mov al,’.’ ;pone punto decimal<br />

stosb<br />

mov bx,8 ;apunta a últimos dígitos BCD<br />

@@60:<br />

mov al,[byte bx+mant] ;convierte byte BCD a<br />

shr al,1 ;dos dígitos ASCII<br />

shr al,1<br />

shr al,1<br />

shr al,1<br />

call digit ;convierte nibble alto<br />

mov al,[byte bx+mant]<br />

call digit ;convierte nibble bajo<br />

dec bx ;procesa valores BCD<br />

jns @@60 ;hasta convertir 18 dígitos<br />

mov al,’E’ ;pone la E para exponente<br />

stosb<br />

mov bx,[exp] ;prueba signo del exponente<br />

mov al,’+’<br />

or bx,bx<br />

jns @@70 ;brinca, exponente es positivo<br />

mov al,’-‘<br />

neg bx ;valor absoluto del exponente<br />

@@70:<br />

stosb ;salva signo del exponente<br />

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES<br />

EDICIÓN: PROFESOR PABLO FUENTES RAMOS<br />

<strong>13</strong>-8

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!