- Assembly code
include io32.inc.data bvar byte 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' bvar1 byte 'Delligence is the path,the indispensable one,to happiness'.codestart: mov ecx,lengthof bvar1again:;判断下限 mov eax,offset bvar1 sub bvar1[ecx],61h ;不能用基址变址寻址做减法???如sub [eax+ecx],61h mov ebx,[eax+ecx] js disp;判断上限 mov eax,offset bvar1 sub bvar1[ecx],7Ah mov ebx,[eax+ecx] jns disp;小写转大写 mov eax,offset bvar1 sub bvar1[ecx],61h mov ebx,offset bvar xlatdisp:call dispcloop againexit 0end start
显示错误,找了蛮久不知错误在哪?而且不能用基址变址寻址做减法吗?请教!
------解决方案--------------------------------------------------------
如果是比较应该用cmp指令吧,sub会把对比源的值修改掉!我觉得应该象下面这样是不是好一点!
[code=Assembly][/code]mov eax, offset bvar1
.again:
cmp [eax+ecx], 61h
jb .next
cmp [eax+ecx], 7ah
ja .next
sub [eax+ecx], 20h
.next:
loop .again[code=Assembly][/code]
------解决方案--------------------------------------------------------
在串内检查需要的条件,然后进行替换即可。