رمز گذاری یک عدد - یعنی یک عدد را میدهیم و بعد یک عدد کلیدی می دهیم سپس آنرا تبدیل به کد میکند و یک رمز میدهد که با اولی کلی فرق دارد و برای رمز گذاری یک متن میتوان بکار برد .

ضمنا در آن از دستور 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