3
clave=200 data segment mensaje db 'mundo' valor=($-mensaje) variable1 db 'Felix' valor1=($-variable1) variable2 db valor1 dup() dato1 db -10,20h,30,40 dato2 dw 10,20,30h,40h,5,6,7,8,9 dato3 dd 12,61001934h,5556h,78 dato4 dw ?,? data ends code segment assume cs:code,ds:data inicio: mov ax,data ;0710 ; AX= 0710 mov ds,ax ; DS=0710 mov cx,valor ; CX=0005 mov si,offset mensaje ; SI= ‘mundo’ l1: and byte ptr mensaje[si],0Cfh ; 0cfh=011001111b , elimina el 5to bit en cada iteración realizada Almacena CF inc si ; SI=0001 loop l1 ; CX=0004 iterando 4 veces hacia “l1”,CX decrementa en 1 bit por

Clave

Embed Size (px)

DESCRIPTION

claves

Citation preview

Page 1: Clave

clave=200

data segment

mensaje db 'mundo'

valor=($-mensaje)

variable1 db 'Felix'

valor1=($-variable1)

variable2 db valor1 dup()

dato1 db -10,20h,30,40

dato2 dw 10,20,30h,40h,5,6,7,8,9

dato3 dd 12,61001934h,5556h,78

dato4 dw ?,?

data ends

code segment

assume cs:code,ds:data

inicio:

mov ax,data ;0710 ; AX= 0710

mov ds,ax ; DS=0710

mov cx,valor ; CX=0005

mov si,offset mensaje ; SI= ‘mundo’

l1:

and byte ptr mensaje[si],0Cfh ; 0cfh=011001111b , elimina el 5to bit en cada iteración realizada Almacena CF

inc si ; SI=0001

loop l1 ; CX=0004 iterando 4 veces hacia “l1”,CX decrementa en 1 bit por cada loop, mientras que SI aumenta en 1 por cada loop, quedando

CX2=0003 CX3=0002 CX4=0001 CX5=0000

SI2=0002 SI3=0003 SI4=0004 SI5=0005

Page 2: Clave

sub cx,cx ; CX=0000

sub si,si ; SI=0000

mov bx,valor1+1 ; BX=0006

mov di,si ; DI=0000

l2:

xor variable1[si],clave ; clave=200=C8h ; variable1=’Felix’=46656C6978h

variable1[si]=

mov ah,variable1[si] ; AH=8E

xor variable1[di],clave ;

mov variable2[di],ah ; variable2[di]=

inc di ; DI=0001

inc si ; SI=0001

dec bx ; BX=0005

cmp bx,0 ; Compara Si BX=0000

jnz l2 ; Si No es cero, salta a l2, iterará 5 veces ya que BX se irá decrementando en 1 bit hasta que cumpla la condición de jnz y pueda continuar.

mov ah,dato1 ; AH=8E

mov bh,byte ptr dato2 ; BH=B0

add ah,bh ; AH=3E

mov byte ptr dato4,ah ; AH=62h byte ptr dato4

mov bl,byte ptr dato3 ; BL=0C

add byte ptr dato4,bl ; BL=12h byte ptr dato4

mov cx,offset variable 1 ; CX=0001

not cx ; CX=FFFE

code ends

end inicio