cfer 发表于 2011-11-14 23:55:37

为什么写不进显存呢,大神帮忙看看

assume        cs:code
code        segment
start:                    mov        ax,        0b800h
                mov        ds,        ax
                mov        ax,        0241h
                mov        ds:,        ax
               
                mov        ax,        4c00h
                int        21h
code        ends
end        start
就这样一段代码,可是调试的时候不知道为什么0241h没有写到b800:0处,不知道这是为什么,请大虾帮帮我。

z310394543 发表于 2011-11-15 11:37:18

100531319 发表于 2011-11-15 11:42:21

这样会显示绿色的A?真不解{:5_94:}没颜色属性, 怎么会绿色?{:5_99:}

cfer 发表于 2011-11-15 12:43:26

z310394543 发表于 2011-11-15 11:37 static/image/common/back.gif
可以的啊显示一个绿色的A

运行前先cls



为什么执行mov ds:, ax之后b800:0字单元中没有变成0241h呢?

cfer 发表于 2011-11-15 12:46:27

100531319 发表于 2011-11-15 11:42 static/image/common/back.gif
这样会显示绿色的A?真不解没颜色属性, 怎么会绿色?

我用的是字单元,02是颜色属性,可是不知道为什么b800:0 1中的内容没有变成0241h:dizzy:

z310394543 发表于 2011-11-15 12:50:00

z310394543 发表于 2011-11-15 12:51:10

z310394543 发表于 2011-11-15 12:52:23

100531319 发表于 2011-11-15 13:08:43

z310394543 发表于 2011-11-15 12:52 static/image/common/back.gif
mov      ax,      0241h
                mov      ds:,      ax



恩02是颜色属性, 41h是字符串,显示的应该是 41{:5_94:}, 但是41是两个两个字符,不分开存放,应该就变样了把 {:5_109:}不知道 对不对 !

z310394543 发表于 2011-11-15 13:45:47

cfer 发表于 2011-11-15 13:55:24

z310394543 发表于 2011-11-15 12:50 static/image/common/back.gif
应该是这样:

因为b800:0这个地址为显存


嗯嗯,真的是这样的。谢谢啦。那怎样才能在屏幕上看到A呢,如果显存这样一直更新的话。

100531319 发表于 2011-11-15 14:14:33

ascii码的41h好像是大写A , 所以才出现绿色 A

你才cmd中显示不出来 ? 那跟你系统有关系, 我win7系统就显示不出, 害的我要跑到xp系统去运行,才显示得出

等下我要去问下大神们,怎么解决

cfer 发表于 2011-11-15 14:27:32

100531319 发表于 2011-11-15 14:14 static/image/common/back.gif
ascii码的41h好像是大写A , 所以才出现绿色 A

你才cmd中显示不出来 ? 那跟你系统有关系, 我win7系 ...

是么,我也去xp试试看

cfer 发表于 2011-11-15 14:32:33

100531319 发表于 2011-11-15 14:14 static/image/common/back.gif
ascii码的41h好像是大写A , 所以才出现绿色 A

你才cmd中显示不出来 ? 那跟你系统有关系, 我win7系 ...

是的呢,用xp就可以显示

cfer 发表于 2011-11-15 14:41:19

100531319 发表于 2011-11-15 14:14 static/image/common/back.gif
ascii码的41h好像是大写A , 所以才出现绿色 A

你才cmd中显示不出来 ? 那跟你系统有关系, 我win7系 ...

我发现xp里也是刚开始打开cmd的时候运行才可以显示。

100531319 发表于 2011-11-15 15:12:43

cfer 发表于 2011-11-15 14:41 static/image/common/back.gif
我发现xp里也是刚开始打开cmd的时候运行才可以显示。

嗯静等大神们帮咱想想怎么在win7 32显存中显示出来, 等有结果了,在 分享 {:5_109:}

cfer 发表于 2011-11-15 16:39:29

100531319 发表于 2011-11-15 15:12 static/image/common/back.gif
嗯静等大神们帮咱想想怎么在win7 32显存中显示出来, 等有结果了,在 分享

是的,我刚刚用了一个emu8086感觉很不错的,它比系统自带的debug好。我感觉系统自带的环境会带来一些不必要的困惑。

100531319 发表于 2011-11-15 19:09:35

cfer 发表于 2011-11-15 16:39 static/image/common/back.gif
是的,我刚刚用了一个emu8086感觉很不错的,它比系统自带的debug好。我感觉系统自带的环境会带来一些不必 ...

{:5_98:} 你有办法在win7 32位显存中 显示出来?{:5_97:},快 分享下{:5_110:}

cfer 发表于 2011-11-15 20:58:02

100531319 发表于 2011-11-15 19:09 static/image/common/back.gif
你有办法在win7 32位显存中 显示出来?,快 分享下

如果你用系统自带的debug的话,不要单步调试,这样在屏幕上就看不到的,因为调试时显示的那些信息共享屏幕,所以你写入显存的东西会被覆盖掉。可以用g命令,一下子执行到mov ax, 4c00h处,这样就可以在屏幕上看到了。或者你也下个emu8086吧,这个显示得比较好。

100531319 发表于 2011-11-16 10:54:30

cfer 发表于 2011-11-15 20:58 static/image/common/back.gif
如果你用系统自带的debug的话,不要单步调试,这样在屏幕上就看不到的,因为调试时显示的那些信息共享屏幕 ...

{:5_99:}我没在DEBUG中显示阿,我是在CMD中直接运行,它显示不出来,{:5_107:}
页: [1] 2
查看完整版本: 为什么写不进显存呢,大神帮忙看看