【发布时间】:2014-02-22 00:34:22
【问题描述】:
我在 VS 2012 中使用 x86 程序集,试图将一些旧代码转换为程序集。我遇到的问题是访问和更改数组值(这些值是字符),我不知道该怎么做。我已经包含了 cmets,所以你可以看到我的思考过程
void toUpper(char *string) {
__asm{
PUSH EAX
PUSH EBX
PUSH ECX
PUSH EDX
PUSH ESI
PUSH EDI
MOV EBX, string
MOV ECX, 0 // counter
FOR_EXPR: // for loop
CMP EBX, 0 //compare ebx to 0
JLE END_FOR // if ebx == 0, jump to end_for
CMP EBX, 97 // compare ebx to 97
JL ELSE // if ebx < 97, jump else
CMP EBX, 122 // compare ebx to 122
JG ELSE // if ebx > 122, jump else
// subtract 32 from current array value
// jump to next element
JMP END_IF
ELSE:
// jump to next element
END_IF:
JMP FOR_EXPR
END_FOR:
POP EDI
POP ESI
POP EDX
POP ECX
POP EBX
POP EAX
}
}
非常感谢任何帮助!
【问题讨论】: