Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: [Kayser] en 23 Enero 2013, 20:13 pm



Título: Duda con código de programa que convierte mayusculas a minusculas
Publicado por: [Kayser] en 23 Enero 2013, 20:13 pm
Hola gente sigo aprendiendo ensamblador o almenos intentandolo esta vez tengo dudas con el siguiente codigo que lo que hace es cambiar de mayusculas a minusculas:

Código:
segment Pila stack
    resb 64
InicioPila:
    
    ; Segmento de código
    segment Codigo

..start:
    ; preparamos DS y BX
    ; para acceder al cáracter
    ; de la fila 12 columna 2
    ; de la pantalla de texto
    mov ax, 0b800h
    mov ds, ax
    mov bx, 160*12+1*2

    ; Recuperamos el carácter en AL
    mov al, [bx]
    
    cmp al, 'A' ; Comparamos con la A
    jb Salir      ; si es inferior saltamos
    cmp al, 'Z' ; Comparamos con la Z
    ja Salir      ; si es superior saltamos

    ; Convertimos a minúscula
    add al, 32 ; sumando 32
    mov [bx], al ; y escribiendo en pantalla

Salir:
    ; en cualquier caso modificamos el atributo
    inc bx
    ;para resaltar el carácter tanto si se ha
    ;cambiado como si no
    mov byte [bx], 0fh

    ; salimos al sistema
    mov ah, 4ch
    int 21h
    

Mi duda es:
En que momento se accede a memoria y se realiza el cambio del atributo?


Título: Re: Duda con código de programa que convierte mayusculas a minusculas
Publicado por: Eternal Idol en 23 Enero 2013, 22:10 pm
mov byte [bx], 0fh

El siguiente byte despues de cada caracter es el atributo que le corresponde (por eso usa inc bx, antes bx apuntaba al caracter).