Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; Programa para encender un bit dentro de un registro
- ; El ejemplo inserta E4 en el al y enciende un bit para
- ; convertirlo en F4
- ; Se debe seguir su ejecución con el debugger
- ; Solo imprime un mensaje irrelevante al finalizar de correr
- datos segment
- rotulo db "Done$"
- datos ends
- pila segment stack 'stack'
- dw 256 dup (?)
- pila ends
- codigo segment
- assume cs:codigo, ds:datos, ss:pila
- inicio: mov ax, ds
- mov es, ax
- mov ax, datos
- mov ds, ax
- xor al, al
- xor dl, dl
- mov al, 11100100b ; Pone (00E4h / 0000 0000 1110 0100b) en el ax
- mov dl, al ; Respalda el ax en el dx
- shr al, 4 ; Hace un corrimiento de 4 bits a la derecha
- ; En este punto el ax tiene (000Eh / 0000 0000 0000 1110b)
- ; Note que los tres bits 0100 del final del ax, están guardados
- ; en el dx, para no perder información
- or al, 1 ; Enciende el bit de más a la derecha del ax (0000Fh / 0000 0000 0000 1111b)
- shl al, 4 ; Ejecuta un corrimiento de 4 bits a la izquierda
- ; En este punto el ax tiene (00F0h / 0000 0000 1111 0000b)
- or al, dl ; Cargamos la información almacenada para obtener los datos previos.
- ; 0000 0000 1111 0000b
- ; or 0000 0000 1110 0100b
- ; _______________________
- ; = 0000 0000 1111 0100b
- mov ah,09h ; Mostrar mensaje de finalización.
- lea dx, rotulo
- int 21h
- mov ax, 4C00h
- int 21h
- codigo ends
- end inicio
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement