15.05.2013 Views

PRÁCTICA 1

PRÁCTICA 1

PRÁCTICA 1

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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

push di ;Salva registros<br />

push si<br />

; SI controla los dígitos guardados en la pila<br />

@@10:<br />

@@20:<br />

@@30:<br />

@@40:<br />

xor si,si ;Contador de dígitos a cero<br />

jcxz @@20 ;Si CX = 0 brinca a ponerlo a 1<br />

xor dx,dx ;Extiende AX a 32 bits<br />

div bx ;AX = DX. AX/BX, DX = residuo<br />

call DigitoHex ;Convierte DL a dígito hexadecimal<br />

push dx ;Salva dígito en la pila<br />

inc si ;Cuenta dígitos salvados<br />

loop @@10<br />

inc cx ;Pone CX = 1 por si no se hizo<br />

or ax,ax ;AX = 0? (todos los dígitos)<br />

jnz @@10 ;Si AX > 0 continua la conversión<br />

mov cx,s ;CX = contador de caracteres en pila<br />

jcxz @@40 ;Omite sgte bucle si CX=0000<br />

cld ;Autoincrementa DI en STOSB<br />

pop ax ;Trae siguiente dígito en AL<br />

stosb ;Pone dígito en cadena y avanza DI<br />

loop @@30 ;Repite el bucle<br />

mov [byte di],ASCnulo ;Pone cero al fin de cadena<br />

pop si di dx ;Repone registros<br />

ret ;Regresa<br />

ENDP NumAsc<br />

;BinAscDec CONVIERTE VALOR BINARIO A CADENA ASCII DECIMAL<br />

;<br />

;Entrada: Misma que BinAscHex<br />

;Salida: Ninguna<br />

;Registros: AX, CX (indirectamente)<br />

PROC BinAscDec<br />

push bx ;Salva BX en la pila<br />

mov bx,10 ;Base para conversión<br />

call NumAsc ;Pasa a ASCII<br />

pop bx ;Repone BX<br />

ret ;Regresa a programa fuente<br />

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES<br />

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

1-9

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

Saved successfully!

Ooh no, something went wrong!