He2toN 发表于 2012-7-25 11:42:25

大家帮忙看看这个程序哪里有问题,谢谢了

assume cs:codesg,ds:datasg
datasg segment
db '1. file         '
db '2. edit         '
db '3. search       '
db '4. view         '
db '5. options      '
db '6. help         '
datasg ends

codesg segment
start:
       mov ax,datasg
       mov ds,ax
       mov cx,6
    mov bx,0
   
   s: mov al,
    and al,11011111b
    add bx,16
    loop s
    mov ax,4c00h
    int 21h
codesg ends
end start
这是视频中的一个题目, 要求是把数据中第一个字母改为大写,但是不知道为什么用debug检查之后,没有修改成功,请各位高手帮忙看看。。

メ㊣逆ご帅☆ 发表于 2012-7-25 11:42:26

本帖最后由 メ㊣逆ご帅☆ 于 2012-7-25 13:26 编辑

无语,你AND完后没把它放进内存,-D当然看不到了。。。你放在寄存器没放进内存,一直在覆盖
我刚刚也没注意,后面DEBUG,看见一开始是066H,and完后是044h,值是正确的,为什么不显示?我才想起来我刚刚查看的是内存不是寄存器。。。

lukelqz 发表于 2012-7-25 13:47:14

楼上正解and al,11011111b
这句完了,你没把al的值放回内存,就bx+16,跳到下一行了。内存当然没变化咯

He2toN 发表于 2012-7-25 15:50:32

lukelqz 发表于 2012-7-25 13:47 static/image/common/back.gif
楼上正解这句完了,你没把al的值放回内存,就bx+16,跳到下一行了。内存当然没变化咯

谢谢了,我看下面一个视频的时候突然发现了这个问题,现在解决了。

He2toN 发表于 2012-7-25 15:51:09

メ㊣逆ご帅☆ 发表于 2012-7-25 13:25 static/image/common/back.gif
无语,你AND完后没把它放进内存,-D当然看不到了。。。你放在寄存器没放进内存,一直在覆盖
我刚刚也没注意 ...

谢谢了,我看下面一个视频的时候突然发现了这个问题,现在解决了。
页: [1]
查看完整版本: 大家帮忙看看这个程序哪里有问题,谢谢了