当前位置: 代码迷 >> 汇编语言 >> 将带有小写标点的一句话转换成大写,请问
  详细解决方案

将带有小写标点的一句话转换成大写,请问

热度:5070   发布时间:2013-02-26 00:00:00.0
将带有小写标点的一句话转换成大写,请教!
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]
------解决方案--------------------------------------------------------
在串内检查需要的条件,然后进行替换即可。
  相关解决方案