.386.model flat,stdcall
.stack 4096
ExitProcess PROTO,dwExitCode:DWORD
tempReg TEXTEQU <eax>.data
List DWORD 1,2,3,4,5.code
main PROC
mov ecx,LENGTHOF List /2
mov esi,0
mov edi,LENGTHOF List -1
L1:
mov tempReg,List[esi * TYPE List]
xchg tempReg,List[edi * TYPE List]
mov List[esi * TYPE List],tempReg
inc esi
dec edi
loop L1
INVOKE ExitProcess,0
main ENDP
END main
3: 将字符串复制相反顺序到另一个字符串
.386.model flat,stdcall
.stack 4096
ExitProcess PROTO,dwExitCode:DWORD
.data
source BYTE "This is the source string",0
target BYTE SIZEOF source DUP('#').code
main PROC
mov target[SIZEOF target -1],0
mov esi,SIZEOF target -2
mov edi,0
mov ecx,SIZEOF target -1
L1:
mov al,source[esi]
mov target[edi],al
dec esi
inc edi
loop L1
INVOKE ExitProcess,0
main ENDP
END main
4: 数组元素移位,数组[10,20,30,40]移位后为[40,10,20,30]
.386.model flat,stdcall
.stack 4096
ExitProcess PROTO,dwExitCode:DWORD
.data
dwordList DWORD 10,20,30,40.code
main PROC
mov esi,LENGTHOF dwordList -1
mov ecx,esi
mov ebx,dwordList[esi * TYPE dwordList]
dec esi
L1:
mov edi,dwordList[esi * TYPE dwordList]
inc esi
mov dwordList[esi * TYPE dwordList],edi
sub esi,2
loop L1
mov dwordList,ebx
INVOKE ExitProcess,0
main ENDP
END main
5: PUSHFD_POPFD : 将标识寄存器入栈出栈
.386.model flat,stdcall
.stack 4096
ExitProcess PROTO,dwExitCode:DWORD
.data
saveFlags DWORD ?.code
main PROC
pushfd ;标识寄存器内容入栈
pop saveFlags ;复制给一个变量
push saveFlags ;被保存的标识入栈
popfd ;复制给标识寄存器
INVOKE ExitProcess,0
main ENDP
END main
.386.model flat,stdcall
.stack 4096
ExitProcess PROTO,dwExitCode:DWORD
.data
myWord WORD 1000h
.code
main PROC
inc myWord
mov bx,myWord
dec bx
INVOKE ExitProcess,0
main ENDP
END main