汇编语言 LODS 指令
LODS 指令从存储器加载。如果操作数是一个字节,则将其加载到 AL 寄存器中;如果操作数是一个字,则将其加载到 AX 寄存器中,并将双字加载到 EAX 寄存器中。
在密码术中,凯撒密码是最简单的已知加密技术之一。在这种方法中,要加密的数据中的每个字母都被替换为字母下方固定数量位置的字母。
在这个实例中,让我们通过简单地将其中的每个字母替换为两个字母来加密数据,因此 a 将被 c,b 替换为 d 等。我们使用 LODS 将原始字符串 'password' 加载到内存中。
section .textglobal _start ;must be declared for using gcc_start: ;tell linker entry pointmov ecx, lenmov esi, s1mov edi, s2loop_here:lodsbadd al, 02stosbloop loop_herecldrep movsbmov edx,20 ;message lengthmov ecx,s2 ;message to writemov ebx,1 ;file descriptor (stdout)mov eax,4 ;system call number (sys_write)int 0x80 ;call kernelmov eax,1 ;system call number (sys_exit)int 0x80 ;call kernelsection .datas1 db 'password', 0 ;sourcelen equ $-s1section .bsss2 resb 10 ;destination
结果如下:
rcuuyqtf