Advertisement
Guest User

AsmShiftTesting

a guest
Mar 24th, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  ; Programa para encender un bit dentro de un registro
  2.  ; El ejemplo inserta E4 en el al y enciende un bit para
  3.  ; convertirlo en F4
  4.  
  5.  ; Se debe seguir su ejecución con el debugger
  6.  ; Solo imprime un mensaje irrelevante al finalizar de correr
  7.  
  8.  datos segment
  9.  
  10.     rotulo db "Done$"
  11.  
  12.  datos ends
  13.  
  14.  
  15.  pila segment stack 'stack'
  16.  
  17.     dw 256 dup (?)
  18.  
  19.  pila ends
  20.  
  21.  
  22.  codigo segment
  23.  
  24.     assume  cs:codigo, ds:datos, ss:pila
  25.  
  26.  
  27.  inicio: mov ax, ds
  28.          mov es, ax
  29.  
  30.          mov ax, datos
  31.          mov ds, ax
  32.  
  33.          xor al, al
  34.          xor dl, dl
  35.  
  36.          mov al, 11100100b  ; Pone (00E4h / 0000 0000 1110 0100b) en el ax
  37.          mov dl, al         ; Respalda el ax en el dx
  38.          shr al, 4          ; Hace un corrimiento de 4 bits a la derecha
  39.  
  40.                             ; En este punto el ax tiene (000Eh / 0000 0000 0000 1110b)
  41.                             ; Note que los tres bits 0100 del final del ax, están guardados
  42.                             ;   en el dx, para no perder información
  43.  
  44.          or al, 1           ; Enciende el bit de más a la derecha del ax (0000Fh / 0000 0000 0000 1111b)
  45.  
  46.          shl al, 4          ; Ejecuta un corrimiento de 4 bits a la izquierda
  47.                             ; En este punto el ax tiene (00F0h / 0000 0000 1111 0000b)
  48.  
  49.          or al, dl          ; Cargamos la información almacenada para obtener los datos previos.
  50.                             ;    0000 0000 1111 0000b
  51.                             ; or 0000 0000 1110 0100b
  52.                             ; _______________________
  53.                             ; =  0000 0000 1111 0100b
  54.  
  55.          mov ah,09h         ; Mostrar mensaje de finalización.
  56.          lea dx, rotulo
  57.          int 21h
  58.  
  59.          mov ax, 4C00h
  60.          int 21h
  61.  
  62.  
  63.  codigo ends
  64.  
  65.  end inicio
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement