鍍金池/ 教程/ Java/ Assembly匯編 STOS指令
Assembly 變量聲明
Assembly匯編 STOS指令
Assembly 條件
Assembly 尋址模式和MOV指令
Assembly匯編教程
Assembly - 什么是匯編語言
Assembly 循環(huán)
Assembly 內(nèi)存段
Assembly匯編 宏
Assembly 寄存器
Assembly匯編 遞歸
Assembly匯編 CMPS指令
Assembly匯編 內(nèi)存管理
Assembly匯編 LODS指令
Assembly 基本語法
Assembly匯編 過程
Assembly匯編 文件管理
Assembly匯編 數(shù)組
Assembly匯編 SCAS指令
Assembly 算術(shù)指令
Assembly 環(huán)境設(shè)置
Assembly匯編 字符串處理
Assembly 數(shù)字
Assembly 常量
Assembly匯編 MOVS指令
Assembly 邏輯指令
Assembly 系統(tǒng)調(diào)用

Assembly匯編 STOS指令

STOS指令使用AL(字節(jié) - STOSB),AX(字 - STOSW)或EAX(對于雙 - STOSD的)數(shù)據(jù)復(fù)制目標(biāo)字符串,在內(nèi)存中通過ES:DI指向。

下面的示例演示使用LODS和STOS指令,其小寫值轉(zhuǎn)換為大寫字符串:

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

上面的代碼編譯和執(zhí)行時(shí),它會產(chǎn)生以下結(jié)果:

hello, world