Assembly-programming-assembly-lods-instruction

提供:Dev Guides
移動先:案内検索

アセンブリ-LODS命令

暗号化において、シーザー暗号は最も単純な既知の暗号化技術の1つです。 この方法では、暗号化されるデータ内の各文字は、アルファベットの下の一定数の位置の文字に置き換えられます。

この例では、データ内の各アルファベットを2つのアルファベットのシフトに置き換えるだけでデータを暗号化するため、 acbd などに置き換えられます。

LODSを使用して、元の文字列「パスワード」をメモリにロードします。

section .text
   global _start         ;must be declared for using gcc

_start:                  ;tell linker entry point
   mov    ecx, len
   mov    esi, s1
   mov    edi, s2

loop_here:
   lodsb
   add al, 02
   stosb
   loop    loop_here
   cld
   rep     movsb

   mov     edx,20        ;message length
   mov     ecx,s2        ;message to write
   mov     ebx,1         ;file descriptor (stdout)
   mov     eax,4         ;system call number (sys_write)
   int     0x80          ;call kernel

   mov     eax,1         ;system call number (sys_exit)
   int     0x80          ;call kernel

section .data
s1 db 'password', 0 ;source
len equ $-s1

section .bss
s2 resb 10               ;destination

上記のコードをコンパイルして実行すると、次の結果が生成されます。

rcuuyqtf