رمز گذاری یک عدد
رمز گذاری یک عدد - یعنی یک عدد را میدهیم و بعد یک عدد کلیدی می دهیم سپس آنرا تبدیل به کد میکند و یک رمز میدهد که با اولی کلی فرق دارد و برای رمز گذاری یک متن میتوان بکار برد .
ضمنا در آن از دستور Rotate هم استفاده میشود .
.model small
.stack 64
.data
n db ?
yekan db ?
strlist label byte
max db 80
len db ?
buf db 80 dup("$")
strlist1 label byte
ma1 db 80
len1 db ?
buf1 db 80 dup("$")
linef db 13,10,"$"
.code
newline proc
mov ah,9
lea dx,linef
int 21h
ret
newline endp
main proc far
mov ax,@data
mov ds,ax
;get strlist
mov ah,0ah
lea dx,strlist
int 21h
;new line
call newline
;get strlist1
mov ah,0ah
lea dx,strlist1
int 21h
;new line
call newline
cmp len1,1
jz l1
lea bx,buf1
mov al,[bx]
sub al,48
mov cl,10
mul cl
add al,[bx+1]
sub al,48
mov ah,[bx+1]
sub ah,48
mov yekan,ah
jmp l2
l1:
lea bx,buf1
mov al,[bx]
sub al,48
mov yekan,al
l2:
mov n,al
lea bx,buf
mov ch,0
l3:
cmp ch,len
jz l4
mov al,[bx]
add al,n
mov cl,yekan
ror al,cl
mov ah,2
mov dl,al
int 21h
inc bx
inc ch
jmp l3
l4:
mov ah,8
int 21h
mov ax, 4c00h
int 21h
main endp
end main
.data
n db ?
yekan db ?
strlist label byte
max db 80
len db ?
buf db 80 dup("$")
strlist1 label byte
ma1 db 80
len1 db ?
buf1 db 80 dup("$")
linef db 13,10,"$"
.code
newline proc
mov ah,9
lea dx,linef
int 21h
ret
newline endp
main proc far
mov ax,@data
mov ds,ax
;get strlist
mov ah,0ah
lea dx,strlist
int 21h
;new line
call newline
;get strlist1
mov ah,0ah
lea dx,strlist1
int 21h
;new line
call newline
cmp len1,1
jz l1
lea bx,buf1
mov al,[bx]
sub al,48
mov cl,10
mul cl
add al,[bx+1]
sub al,48
mov ah,[bx+1]
sub ah,48
mov yekan,ah
jmp l2
l1:
lea bx,buf1
mov al,[bx]
sub al,48
mov yekan,al
l2:
mov n,al
lea bx,buf
mov ch,0
l3:
cmp ch,len
jz l4
mov al,[bx]
add al,n
mov cl,yekan
ror al,cl
mov ah,2
mov dl,al
int 21h
inc bx
inc ch
jmp l3
l4:
mov ah,8
int 21h
mov ax, 4c00h
int 21h
main endp
end main
+ نوشته شده در ۱۳۹۱/۰۹/۲۳ ساعت 10:33 توسط مجید
|