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:
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?
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).