ck329054222 发表于 2013-8-8 11:55:58

实验9一直不能正确显示

本帖最后由 ck329054222 于 2013-8-9 14:53 编辑

下面写了一个很简单的显示代码,麻烦帮忙看看有什么问题,谢谢!

assume cs:code

data segment
db 'welcome to masm!'
data ends

code segment
start:
mov ax,data
mov ds,ax
mov si,0 ;这三条语句设置数据段地址
mov ax,0b800h
mov es,ax
mov di,0 ;这三条设置显卡显存地址

mov bl,2h ;设置字体显示绿色
mov cx,16 ;设置循环次数
s:
mov al,ds:
mov byte ptr es:,al ;这两条语句将data段的welcome to masm!放入显存低8位
inc si
inc di

mov byte ptr es:,bl ;将颜色属性放入显存高8位
inc di

loop s

mov ax,4c00h
int 21h
code ends
end start
问题已解决:请看14楼

youmingshi 发表于 2013-8-8 13:09:34

楼主楼主,收到请回复我。。。我准备看一下这个代码。。

youmingshi 发表于 2013-8-8 13:15:42

楼主你不回复我,我就不告诉你了,哼。。。我测试了可以的,想知道,回复我。。。好没存在感。

福禄娃娃 发表于 2013-8-8 13:29:18

你又少了ds:data ,没这句编译器怎么知道哪儿是数据段

ck329054222 发表于 2013-8-8 13:29:38

youmingshi 发表于 2013-8-8 13:15 static/image/common/back.gif
楼主你不回复我,我就不告诉你了,哼。。。我测试了可以的,想知道,回复我。。。好没存在感。

你可以在左上角正确显示?我两台电脑都不行啊

ck329054222 发表于 2013-8-8 13:31:34

本帖最后由 ck329054222 于 2013-8-8 13:37 编辑

福禄娃娃 发表于 2013-8-8 13:29 static/image/common/back.gif
你又少了ds:data ,没这句编译器怎么知道哪儿是数据段

mov ax,data
mov ds,ax
这两句就告诉了ds的地址

ck329054222 发表于 2013-8-8 13:34:49

youmingshi 发表于 2013-8-8 13:15 static/image/common/back.gif
楼主你不回复我,我就不告诉你了,哼。。。我测试了可以的,想知道,回复我。。。好没存在感。

大哥,我回复了,求指导

youmingshi 发表于 2013-8-8 13:40:56

ck329054222 发表于 2013-8-8 13:29 static/image/common/back.gif
你可以在左上角正确显示?我两台电脑都不行啊

终于回复了,你是拿cmd打开文件的吧,我也是.

cmd不知道搞什么鬼,直接调用不行....

跟我来....cmd先输入debug,进入debug,然后按q,退出debug,然后再调用你的文件就可以了.

当然,cmd调用masm 和link后再调用你的文件也是可以的,不过直接调用你的程序怎么着都不行.......


楼主试试吧,成功了感谢一下我,哈哈

福禄娃娃 发表于 2013-8-8 13:48:16

这个可以assume cs:code,ds:data

data segment

   db 'welcome to masm!'

data ends

code segment

start:   mov ax,data

   mov ds,ax

   mov ax,0b800h

   mov es,ax

   mov bx,0720h                ;设置中间行中间列的首地址   

   mov si,0

   mov cx,16

s:   mov ax,

   mov ah,2h

   mov es:,ax            ;设置绿色字体

   mov ah,24h

   mov es:,ax         ;设置绿底红色

   mov ah,71h

   mov es:,ax    ;设置白底蓝色

   inc si                      ;指向下一字符

   add bx,2                  ;指向下一显存单元

   loop s

   mov ah,01h

   int 21h

code ends

end start

ck329054222 发表于 2013-8-8 13:51:37

youmingshi 发表于 2013-8-8 13:40 static/image/common/back.gif
终于回复了,你是拿cmd打开文件的吧,我也是.

cmd不知道搞什么鬼,直接调用不行....


我先cmd输入debug,进入debug,然后按q,调用masm 和link后再debug我的程序。还是不行:cry

youmingshi 发表于 2013-8-8 13:53:15

ck329054222 发表于 2013-8-8 13:51 static/image/common/back.gif
我先cmd输入debug,进入debug,然后按q,调用masm 和link后再debug我的程序。还是不行

你QQ给我................................

ck329054222 发表于 2013-8-8 13:54:54

youmingshi 发表于 2013-8-8 13:53 static/image/common/back.gif
你QQ给我................................

741973271:big

ck329054222 发表于 2013-8-8 14:02:18

福禄娃娃 发表于 2013-8-8 13:48 static/image/common/back.gif
这个可以

确实可以。我研究研究

youmingshi 发表于 2013-8-8 14:37:03

谁要同样有这个问题,也看到这里,我就来总结一下

xp下,cmd需要蛋疼的先运行debug,然后退出,然后再调用程序,才可以正常显示
         也可以debug 那个程序,用g命令运行
         如果尝试debug 那个程序,用t命令,当命令行到达底端,而显示代码还没有运行,那么就不会显示了

win7 32位下, 只能debug 那个程序,用g命令

      64位下,根本没法运行16位程序,除非使用dosbox,具体能不能显示没有试过

总结完毕,楼主来膜拜

至于没有看到这里而且不能正常显示的同学,只能说叫你不膜拜我。

youmingshi 发表于 2013-8-8 14:53:02

楼主不把我的总结放上去,木有小jj

ck329054222 发表于 2013-8-8 16:51:44

youmingshi 发表于 2013-8-8 14:53 static/image/common/back.gif
楼主不把我的总结放上去,木有小jj

怎么搞、、、不会

youmingshi 发表于 2013-8-8 16:52:55

ck329054222 发表于 2013-8-8 16:51 static/image/common/back.gif
怎么搞、、、不会

不知道。。。。。。不说了

ck329054222 发表于 2013-8-8 16:54:53

youmingshi 发表于 2013-8-8 16:52 static/image/common/back.gif
不知道。。。。。。不说了

{:5_107:}真心不会、、

南宫封清 发表于 2013-8-9 12:40:37

似乎现在我还没有这个能力

晨风吹过 发表于 2013-8-9 13:48:11

不错,学习了
页: [1] 2
查看完整版本: 实验9一直不能正确显示