Assembly彙編 STOS指令

STOS指令使用AL(字節 - STOSB),AX(字 - STOSW)或EAX(對於雙 - STOSD的)數據複製目標字符串,在內存中通過ES:DI指向。

下面的示例演示使用LODS和STOS指令,其小寫值轉換爲大寫字符串:

section .text global _start ;must be declared for using gcc
_start: ;tell linker entry yiibai
mov ecx, len
mov esi, s1
mov edi, s2
loop_here: lodsb or al, 20h 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 'HELLO, WORLD', 0 ;source
len equ $-s1
section .bss
s2 resb 20 ;destination

上面的代碼編譯和執行時,它會產生以下結果:

hello, world