鱼C论坛

 找回密码
 立即注册
查看: 3495|回复: 5

求助!求助!

[复制链接]
发表于 2011-2-14 20:40:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 china0008 于 2011-2-14 21:08 编辑
assume cs:a,ds:b
    b segment

  db '54156ibm'
  db '5413354abc'
  db '354  dos'
  db '25454sdfvax'

    b ends


   a segment

w:   mov ax,b
     mov ds,ax
     mov cx,3
     mov bx,5
s1:   mov al,[bx+0]
      and al,11011111b
      mov [bx+0],al
      inc bx
     loop s1


      mov cx,3
      mov bx,7
s2:   mov al,[bx+10h]
      and al,11011111b
      mov [bx+10h],al
      inc bx
     loop s2

     mov cx,3
     mov bx,5
s:   mov al,[bx+20h]
     and al,11011111b
     mov [bx+20h],al
     inc bx
     loop s

     mov cx,3
     mov bx,8
s3:  mov al,[bx+30h]
     and al,11011111b
     mov [bx+30h],al
     inc bx
     loop s3

   mov ax,4c00h
   int 21h
    a ends
  end w   
这段代码的目的是把定义的4段字符数据最后三个字母变成大写的。 可我编译后,只能将ibm,dos变成大写。自己弄了好久,搞不定。问题到底出在哪了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-2-14 21:13:20 | 显示全部楼层
本帖最后由 china0008 于 2011-2-14 21:15 编辑

按你现在的思路  s1  s2  s3 处的 [xxxx]中的值没有正确指向数据的位置。你再想想。呵呵。不明白咱再来讨论。

搞定准去的数据位置,试试把你的 转换放到一个 循环中  只需要循环3次就可以搞定9个字符的转换了。提示:找找循环中的共同点,什么是可以不变的?需要变的东西有怎么能适用到3行不同的位置。呵呵。程序的效率会大大提高。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-2-14 21:26:40 | 显示全部楼层
本帖最后由 china0008 于 2011-2-14 21:28 编辑

源码贴给你看看,我是在你的源码基础上,按你的思路修改的。注释我就不写了,你自己分析。整理出思路了,回帖说说看。让大家也分享你思考的成功,大家一起进步。
assume cs:a,ds:b

b segment
  db '54156ibm'   ;8字节
  db '5413354abc' ;10字节
  db '354  dos'   ;8字节
  db '25454sdfvax';11字节
b ends

a segment
w:   mov ax,b
     mov ds,ax
     mov cx,3
     mov bx,0
         
s1:  mov al,[5+bx]
     and al,11011111b
     mov [5+bx],al
         
     mov al,[15+bx]
     and al,11011111b
     mov [15+bx],al
         
     mov al,[23+bx]
     and al,11011111b
     mov [23+bx],al
         
     mov al,[34+bx]
     and al,11011111b
     mov [34+bx],al
         
         inc bx
         
     loop s1
   mov ax,4c00h
   int 21h
a ends
end w   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-2-14 22:13:37 | 显示全部楼层
呵呵,完全把数组的概念忘了。(昨天才看小甲鱼老师的教程呢},只要把数据看成是4个数组,这样只要正确定位数组的起始地址,就只要3次循环就搞定了。:loveliness:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-2-14 22:37:11 | 显示全部楼层
回复 4# a89361461


    如果不修改原先[XXXX]中的值,只要将数据用空格都补成16个字节,也可以实现。但是效率不高,呵呵。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-2-14 22:38:13 | 显示全部楼层
嗯嗯。很好。本节,你毕业了。特发此证。哈哈哈哈。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-17 03:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表