PRÁCTICA 1
PRÁCTICA 1 PRÁCTICA 1
LENGUAJE ENSAMBLADOR 80386 PRÁCTICA 1 3.10 Procedimientos para conversiones. %TITLE "RUTINAS DE CONVERSIÓN DE BINARIO A ASCII Y VICEVERSA" ; EQUs IDEAL DOSSEG MODEL small ASCnulo EQU 0 ;ASCII de carácter nulo %NEWPAG CODESEG PUBLIC DigitoHex, NumAsc, BinAscDec ;DigitoHex CONVIERTE VALOR DE 4 BITS A DÍGITO HEXADECIMAL ASCII ; ;Entrada: DL = valor binario (nibble alto = 0) ;Salida: DL = ASCII del dígito hexadecimal equivalente) ;Registros: DL PROC DigitoHex @@5: cmp dl,10 ;DL < 10 (es decir hex 'A')? jb @@5 ;Sí, brinca add dl, 'A'-10 ;No, convertir A, B, C, D, E o F ret add dl,'0' ;Convierte a dígitos 0 a 9 ret ;Retorna ENDP DigitoHex ;NumAscr CONVIERTE BINARIO NO SIGNADO A ASCII ; ;Entrada: AX = valor de 16 bits a convertir ; BX = base del resultado (2 = binario, 10 = decimal, 16 = hexadecimal) ; CX = número mínimo de dígitos de salida ; DI = dirección de cadena para resultados ; Si CX = 0 y AX = 0, largo de la cadena es cero ; Si CX = 1 y AX = 0, la cadena tendrá ‘0’ ;Salida: Ninguna ;Registros: AX, CX PROC NumAsc push dx ;Entrada normal AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS 1-8
LENGUAJE ENSAMBLADOR 80386 PRÁCTICA 1 push di ;Salva registros push si ; SI controla los dígitos guardados en la pila @@10: @@20: @@30: @@40: xor si,si ;Contador de dígitos a cero jcxz @@20 ;Si CX = 0 brinca a ponerlo a 1 xor dx,dx ;Extiende AX a 32 bits div bx ;AX = DX. AX/BX, DX = residuo call DigitoHex ;Convierte DL a dígito hexadecimal push dx ;Salva dígito en la pila inc si ;Cuenta dígitos salvados loop @@10 inc cx ;Pone CX = 1 por si no se hizo or ax,ax ;AX = 0? (todos los dígitos) jnz @@10 ;Si AX > 0 continua la conversión mov cx,s ;CX = contador de caracteres en pila jcxz @@40 ;Omite sgte bucle si CX=0000 cld ;Autoincrementa DI en STOSB pop ax ;Trae siguiente dígito en AL stosb ;Pone dígito en cadena y avanza DI loop @@30 ;Repite el bucle mov [byte di],ASCnulo ;Pone cero al fin de cadena pop si di dx ;Repone registros ret ;Regresa ENDP NumAsc ;BinAscDec CONVIERTE VALOR BINARIO A CADENA ASCII DECIMAL ; ;Entrada: Misma que BinAscHex ;Salida: Ninguna ;Registros: AX, CX (indirectamente) PROC BinAscDec push bx ;Salva BX en la pila mov bx,10 ;Base para conversión call NumAsc ;Pasa a ASCII pop bx ;Repone BX ret ;Regresa a programa fuente AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS 1-9
- Page 1 and 2: LENGUAJE ENSAMBLADOR 80386 PRÁCTIC
- Page 3 and 4: LENGUAJE ENSAMBLADOR 80386 PRÁCTIC
- Page 5 and 6: LENGUAJE ENSAMBLADOR 80386 PRÁCTIC
- Page 7: LENGUAJE ENSAMBLADOR 80386 PRÁCTIC
- Page 11 and 12: LENGUAJE ENSAMBLADOR 80386 PRÁCTIC
- Page 13 and 14: LENGUAJE ENSAMBLADOR 80386 PRÁCTIC
- Page 15 and 16: LENGUAJE ENSAMBLADOR 80386 PRÁCTIC
LENGUAJE ENSAMBLADOR 80386 <strong>PRÁCTICA</strong> 1<br />
3.10 Procedimientos para conversiones.<br />
%TITLE "RUTINAS DE CONVERSIÓN DE BINARIO A ASCII Y VICEVERSA"<br />
; EQUs<br />
IDEAL<br />
DOSSEG<br />
MODEL small<br />
ASCnulo EQU 0 ;ASCII de carácter nulo<br />
%NEWPAG<br />
CODESEG<br />
PUBLIC DigitoHex, NumAsc, BinAscDec<br />
;DigitoHex CONVIERTE VALOR DE 4 BITS A DÍGITO HEXADECIMAL ASCII<br />
;<br />
;Entrada: DL = valor binario (nibble alto = 0)<br />
;Salida: DL = ASCII del dígito hexadecimal equivalente)<br />
;Registros: DL<br />
PROC DigitoHex<br />
@@5:<br />
cmp dl,10 ;DL < 10 (es decir hex 'A')?<br />
jb @@5 ;Sí, brinca<br />
add dl, 'A'-10 ;No, convertir A, B, C, D, E o F<br />
ret<br />
add dl,'0' ;Convierte a dígitos 0 a 9<br />
ret ;Retorna<br />
ENDP DigitoHex<br />
;NumAscr CONVIERTE BINARIO NO SIGNADO A ASCII<br />
;<br />
;Entrada: AX = valor de 16 bits a convertir<br />
; BX = base del resultado (2 = binario, 10 = decimal, 16 = hexadecimal)<br />
; CX = número mínimo de dígitos de salida<br />
; DI = dirección de cadena para resultados<br />
; Si CX = 0 y AX = 0, largo de la cadena es cero<br />
; Si CX = 1 y AX = 0, la cadena tendrá ‘0’<br />
;Salida: Ninguna<br />
;Registros: AX, CX<br />
PROC NumAsc<br />
push dx ;Entrada normal<br />
AUTOR: PROFESOR SALVADOR SAUCEDO FLORES<br />
EDICIÓN: PROFESOR PABLO FUENTES RAMOS<br />
1-8