又是寄存器空间的问题,?

RuanJianRenAtMSN 2009-01-05 11:29:09
//16进制字符串,转换成16进制数值
void charToHexIP(unsigned char *ch,char *sch,int pnum)
{
_asm
{
PUSH EAX
PUSH ESI
PUSH EDI
MOV ESI,sch
MOV EDI,ch
MOV BYTE PTR[EDI],0
MOV BYTE PTR[EDI+1],0
MOV EAX,pnum
TEST EAX,1
JZ lop1
TEST EAX,2
JZ lop2
TEST EAX,3
JZ lop3
TEST EAX,4
JZ lop4
JMP lope
lop1:
MOV AL,BYTE PTR[ESI]
TEST AL,57
JB lop12
SUB AL,55
MOV BYTE PTR[EDI+1],AL
JMP lope
lop12:
SUB AL,48
MOV BYTE PTR[EDI+1],AL
JMP lope
lop2:
MOV AL,BYTE PTR[ESI]
TEST AL,57
JB lop22
SUB AL,55
SHL AL,4
MOV BYTE PTR[EDI+1],AL
JMP lop23
lop22:
SUB AL,48
SHL AL,4
MOV BYTE PTR[EDI+1],AL

lop23:
MOV AL,BYTE PTR[ESI+1]
TEST AL,57
JB lop24
SUB AL,55
OR BYTE PTR[EDI+1],AL
JMP lope
lop24:
SUB AL,48
OR BYTE PTR[EDI+1],AL
JMP lope
lop3:
MOV AL,BYTE PTR[ESI]
TEST AL,57
JB lop31
SUB AL,55
MOV BYTE PTR[EDI],AL
JMP lop32
lop31:
SUB AL,48
MOV BYTE PTR [EDI],AL
lop32:
MOV AL,BYTE PTR [ESI+1]
TEST AL,57
JB lop321
SUB AL,55
SHL AL,4
MOV BYTE PTR[EDI+1],AL
JMP lop322
lop321:
SUB AL,48
SHL AL,4
MOV BYTE PTR[EDI+1],AL
lop322:
MOV AL,BYTE PTR[ESI+2]
TEST AL,57
JB lop323
SUB AL,55
OR BYTE PTR[EDI+1],AL
JMP lope
lop323:
SUB AL,48
OR BYTE PTR[EDI+1],AL
JMP lope
lop4:
MOV AL,BYTE PTR[ESI]
TEST AL,57
JB lop41
SUB AL,55
SHL AL,4
MOV BYTE PTR[EDI],AL
JMP lop42
lop41:
SUB AL,48
SHL AL,4
MOV BYTE PTR[EDI],AL
lop42:
MOV AL,BYTE PTR[ESI+1]
TEST AL,57
JB lop43
SUB AL,55
OR BYTE PTR[EDI],AL
JMP lop44
lop43:
SUB AL,48
OR BYTE PTR[EDI],AL
lop44:
MOV AL,BYTE PTR[ESI+2]
TEST AL,57
JB lop45
SUB AL,55
SHL AL,4
MOV BYTE PTR[EDI+1],AL
JMP lop46
lop45:
SUB AL,48
SHL AL,4
MOV BYTE PTR[EDI+1],AL
lop46:
MOV AL,BYTE PTR[ESI+3]
TEST AL,57
JB lop47
SUB AL,55
OR BYTE PTR[EDI+1],AL
JMP lope
lop47:
SUB AL,48
OR BYTE PTR[EDI+1],AL
lope:
POP EDI
POP ESI
POP EAX
}
}

错误提示:error C2443: operand size conflict
...全文
75 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
RuanJianRenAtMSN 2009-01-07
  • 打赏
  • 举报
回复
感谢Killbug兄弟,.
killbug2004 2009-01-05
  • 打赏
  • 举报
回复
void charToHexIP(unsigned char *dch,char *sch,int pnum) 
{
_asm
{
PUSH EAX
PUSH ESI
PUSH EDI
MOV ESI,sch
MOV EDI,dch


第一个参数的形参名不要用ch,这样有冲突
cnzdgs 2009-01-05
  • 打赏
  • 举报
回复
编译出错也不把报错的行指出来,给大家节约点时间。

21,459

社区成员

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

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