请问一下MASM代码如何转换成NASM代码

lvqinhai 2008-12-10 10:30:52
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 取指定位置的命令行参数
; argv 0 = 执行文件名
; argv 1 = 参数1 ...
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_argv proc _dwArgv,_lpReturn,_dwSize
local @dwArgv,@dwFlag

pushad
inc _dwArgv
mov @dwArgv,0
mov edi,_lpReturn

invoke GetCommandLine
mov esi,eax
cld
_argv_loop:
;********************************************************************
; 忽略参数之间的空格
;********************************************************************
lodsb
or al,al
jz _argv_end
cmp al,CHAR_BLANK
jz _argv_loop
;********************************************************************
; 一个参数开始
; 如果和要求的参数符合,则开始复制到返回缓冲区
;********************************************************************
dec esi
inc @dwArgv
mov @dwFlag,FALSE
mov eax,_dwArgv
cmp eax,@dwArgv
jnz @F
mov @dwFlag,TRUE
@@:
_argv_loop1:
lodsb
or al,al
jz _argv_end
cmp al,CHAR_BLANK
jz _argv_loop ;参数结束
cmp al,CHAR_DELI
jz _argv_loop2
cmp _dwSize,1
jle @F
cmp @dwFlag,TRUE
jne @F
stosb
dec _dwSize
@@:
jmp _argv_loop1 ;继续处理参数内容

_argv_loop2:
lodsb
or al,al
jz _argv_end
cmp al,CHAR_DELI
jz _argv_loop1
cmp _dwSize,1
jle @F
cmp @dwFlag,TRUE
jne @F
stosb
dec _dwSize
@@:
jmp _argv_loop2
_argv_end:
xor al,al
stosb
popad
ret

_argv endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 转换字符串的值
; 参数:字符串地址,进制(缺省为10进制)
; 返回:数值
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_GetStringValue proc _lpString,_dwBase
local @dwValue

pushad
mov ebx,_dwBase
.if ebx == 0
mov ebx,10
.endif

xor eax,eax
mov esi,_lpString
_GSV_Loop:
mov cl,[esi]
inc esi
or cl,cl
jz _GSV_LoopEnd
; cmp cl,20h
; jz _GSV_Loop
cmp cl,'0'
jb _GSV_LoopEnd
cmp cl,'9'
ja _GSV_Check1
sub cl,'0'
jmp _GSV_CheckOK
_GSV_Check1:
or cl,20h
cmp cl,'a'
jb _GSV_LoopEnd
cmp cl,'f'
ja _GSV_LoopEnd
sub cl,'a'-10
_GSV_CheckOK:
movzx ecx,cl
cmp ecx,ebx
jae _GSV_LoopEnd

mul ebx
add eax,ecx
jmp short _GSV_Loop
_GSV_LoopEnd:
mov @dwValue,eax
popad
mov eax,@dwValue
ret

_GetStringValue endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
...全文
226 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunjor 2009-01-06
  • 打赏
  • 举报
回复
这也能得分?惭愧····
sunjor 2008-12-17
  • 打赏
  • 举报
回复
NASM是什么?

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧