【发布时间】:2014-02-03 04:57:48
【问题描述】:
我正在尝试实现一个函数,它现在将小写字母转换为大写字母,而不影响标点符号或数字。但这段代码似乎不起作用。请帮忙谢谢!
void capital(char *x)
{
__asm
{
PUSH EAX
PUSH EBX
PUSH ECX
PUSH EDX
PUSH ESI
PUSH EDI
mov ebx, string
next_char:
lodsb
test al, al
jz done
cmp al, 'a'
bl next_char
cmp al, 'z'
bg next_char
sub al, 'a'-'A'
mov [esi-1], al
jmp next_char
POP EDI
POP ESI
POP EDX
POP ECX
POP EBX
POP EAX
}
【问题讨论】:
-
在高级语言中使用内联汇编有充分的理由吗?
-
你能修复你的粘贴并添加“完成”标签吗? (或者这是问题所在?:D)
-
你用的是什么编译器?
-
bl和bg指令有效吗?我愿意假设汇编器决定bg是一个标签(如果您没有启用足够的警告),但bl是一个寄存器名称,不应该被(英特尔语法)汇编器接受.