首页
社区
课程
招聘
[旧帖] [求助]Win32汇编中的一个标号问题,不见其跳转 0.00雪花
发表于: 2011-9-26 20:00 1443

[旧帖] [求助]Win32汇编中的一个标号问题,不见其跳转 0.00雪花

2011-9-26 20:00
1443
_FormatText    proc    uses esi _lpData,_dwSize,_hFile
        local    @szBuffer[128]:byte,@dwBytesWrite

        mov    esi,_lpData
        mov    ecx,_dwSize
        lea    edi,@szBuffer
        xor    edx,edx
        cld
_LoopBegin:
        or    ecx,ecx   ;判断ecx是否为0,or之后zf相应变化,以配合后面的jz指令 (如果ecx值为0,zf置位)
        jz    _WriteLine ;zf值为1则跳转
        lodsb        ;将esi 放入al 比较,esi 减少
        dec    ecx
        cmp    al,0dh        ;遇到0dh则丢弃
        jz    _LoopBegin
        cmp    al,0ah        ;遇到0ah则扩展为0dh,0ah
        jz    _LineEnd
        stosb        ;al 拷贝到edi处
        inc    edx
        cmp    edx,sizeof @szBuffer-2
        jae    _WriteLine    ;行缓冲区满则保存
        jmp    _LoopBegin
_LineEnd:
        mov    ax,0a0dh
        stosw
        inc    edx
        inc    edx
_WriteLine:
        push    ecx
        .if    edx
            invoke    WriteFile,_hFile,addr @szBuffer,edx,addr @dwBytesWrite,NULL
        .endif
        lea    edi,@szBuffer
        xor    edx,edx
        pop    ecx
        or    ecx,ecx
        jnz    _LoopBegin ;ecx不为0则跳转
        ret

_FormatText    endp

那个_LoopBegin:标号是在哪里被调用的,求赐教,不胜感激

[培训]传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
haw
2

若ecx不为0,就跳到_LoopBegin,然后再写文件,直到ecx=0,文件写完
上传的附件:
2011-9-26 20:25
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢,再问下那个你说的跳转的那段代码不是属于_WriteLine:这个标号里面的代码吗?请问下怎样判断标号代码是否已经结束
2011-9-26 20:35
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
haw
4
_WriteLine只是一个标号,一个地址,它没有范围。
2011-9-26 20:49
0
雪    币: 2503
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
看看逛逛 学习学习 格格!
2011-9-26 20:49
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
haw
6
我是个新手,这只是我的理解~~~
2011-9-26 20:55
0
雪    币: 96
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
看不懂
2011-9-27 19:53
0
游客
登录 | 注册 方可回帖
返回