rdtmain.asm
资源名称:nasm-0.98.zip [点击查看]
上传用户:yuppie_zhu
上传日期:2007-01-08
资源大小:535k
文件大小:1k
源码类别:
编译器/解释器
开发平台:
C/C++
- ;; rdtmain - main part of test program for RDX execution.
- ;; returns true (0) if its parameter equals the phrase "hello"
- ;; "hello" is stored in the library part, to complicate the
- ;; linkage.
- ;; assemble and link with the following commands:
- ;; nasm -f rdf rdtmain.asm
- ;; nasm -f rdf rdtlib.asm
- ;; ldrdf rdtmain.rdf rdtlib.rdf -o rdxtest.rdx
- ;; run with 'rdx rdxtest.rdx [parameters]' on a Linux (or possibly
- ;; other 32 bit OS) systems (x86 architectures only!)
- ;; try using '&& echo Yes' afterwards to find out when it returns 0.
- [EXTERN _strcmp] ; strcmp is an imported function
- [EXTERN _message] ; imported data
- [SECTION .text]
- [BITS 32]
- ;; main(int argc,char **argv)
- [GLOBAL _main]
- _main:
- push ebp
- mov ebp,esp
- ;; ebp+8 = argc, ebp+12 = argv
- cmp dword [ebp+8],2
- jb error ; cause error if < 1 parameters
- mov eax, [ebp+12] ; eax = argv
- mov ebx, [eax+4] ; ebx = argv[1]
- mov ecx, _message ; ecx = "hello"
- push ecx
- push ebx
- call _strcmp ; compare strings
- add esp,8 ; caller clears stack
- pop ebp
- ret ; return return value of _strcmp
- error:
- mov eax,2 ; return 2 on error
- pop ebp
- ret