求助!求助!
本帖最后由 china0008 于 2011-2-14 21:08 编辑assume cs:a,ds:b
b segment
db '54156ibm'
db '5413354abc'
db '354dos'
db '25454sdfvax'
b ends
a segment
w: mov ax,b
mov ds,ax
mov cx,3
mov bx,5
s1: mov al,
and al,11011111b
mov ,al
inc bx
loop s1
mov cx,3
mov bx,7
s2: mov al,
and al,11011111b
mov ,al
inc bx
loop s2
mov cx,3
mov bx,5
s: mov al,
and al,11011111b
mov ,al
inc bx
loop s
mov cx,3
mov bx,8
s3:mov al,
and al,11011111b
mov ,al
inc bx
loop s3
mov ax,4c00h
int 21h
a ends
end w
这段代码的目的是把定义的4段字符数据最后三个字母变成大写的。 可我编译后,只能将ibm,dos变成大写。自己弄了好久,搞不定。问题到底出在哪了? 本帖最后由 china0008 于 2011-2-14 21:15 编辑
按你现在的思路s1s2s3 处的 中的值没有正确指向数据的位置。你再想想。呵呵。不明白咱再来讨论。
搞定准去的数据位置,试试把你的 转换放到一个 循环中只需要循环3次就可以搞定9个字符的转换了。提示:找找循环中的共同点,什么是可以不变的?需要变的东西有怎么能适用到3行不同的位置。呵呵。程序的效率会大大提高。 本帖最后由 china0008 于 2011-2-14 21:28 编辑
源码贴给你看看,我是在你的源码基础上,按你的思路修改的。注释我就不写了,你自己分析。整理出思路了,回帖说说看。让大家也分享你思考的成功,大家一起进步。assume cs:a,ds:b
b segment
db '54156ibm' ;8字节
db '5413354abc' ;10字节
db '354dos' ;8字节
db '25454sdfvax';11字节
b ends
a segment
w: mov ax,b
mov ds,ax
mov cx,3
mov bx,0
s1:mov al,
and al,11011111b
mov ,al
mov al,
and al,11011111b
mov ,al
mov al,
and al,11011111b
mov ,al
mov al,
and al,11011111b
mov ,al
inc bx
loop s1
mov ax,4c00h
int 21h
a ends
end w 呵呵,完全把数组的概念忘了。(昨天才看小甲鱼老师的教程呢},只要把数据看成是4个数组,这样只要正确定位数组的起始地址,就只要3次循环就搞定了。:loveliness: 回复 4# a89361461
如果不修改原先中的值,只要将数据用空格都补成16个字节,也可以实现。但是效率不高,呵呵。 嗯嗯。很好。本节,你毕业了。特发此证。哈哈哈哈。
页:
[1]