逆流杀 发表于 2014-9-12 21:19:22

得不到想要的图片效果

这个是小甲鱼老师在讲汇编实验九时,讲的颜色变化的实验,我将答案中程序在cmd中搞了一下,没有显示出想要的效果图,具体图片如下,我就想问,是不是我啥地方操作错了,但是我对着视屏搞了 ,好几遍,还是那样子,源代码在下面,那位大神给运行后,能达到效果图的,请指导我一下,谢了
实验9 显示三行welcome to masm(三个程序)编程:在屏幕中间分别显示绿色,绿底红色,白色蓝底的字符串’welcome to masm!’效果图 程序一:最保守的方法先实现实验要求(三个循环)assume cs:code,ds:data,es:tabledata segment   db 'welcome to masm!'data endstable segment   dw 4000 dup (0)table endscode segmentstart:   mov ax,data   mov ds,ax   mov ax,0b800h   mov es,ax   mov bx,0   mov si,0   mov cx,16 s0:mov ax,   mov es:,ax   mov al,2   mov es:,al   inc bx   inc si    loop s0    mov bx,0   mov cx,16   mov si,160s1:mov ax,   mov es:,ax   mov al,36   mov es:,al   inc bx   inc si   loop s1    mov bx,0   mov cx,16   mov si,320s2:mov ax,   mov es:,ax   mov al,113   mov es:,al   inc bx   inc si   loop s2    mov ax,4c00h   int 21hcode endsend start

1236 发表于 2014-9-12 21:19:23

不知道你到底想实现什么效果,毕竟颜色你已经显示出来了。如果是闪缩效果,必须在实模式下才能看出来,你可以用bochs来查看,我试过,可以成功,CMD已经处于保护模式下了,肯定无法显示了,不知道你要问的是不是这个!

漩涡鸣人 发表于 2014-9-14 21:20:59

本帖最后由 漩涡鸣人 于 2014-9-14 21:32 编辑

您这样的话用debug一步一步过就能显示,貌似ml.exe无参数编译出来的程序不支持直接命令行执行,会被直接覆盖掉
用masm+link编译出来就没这问题了

逆流杀 发表于 2014-9-14 21:47:41

漩涡鸣人 发表于 2014-9-14 21:20
您这样的话用debug一步一步过就能显示,貌似ml.exe无参数编译出来的程序不支持直接命令行执行,会被直接覆 ...

试了 好行也不行,我找了很汇编论坛,很幸运找到了同样问题,有人是这样解释 的,【】【】大部分人都是在cmd 中运行程序.一般来说没什么.但是在操作显存的时候十之八九不太会如意(显示不出)
错就错在进入了cmd.exe运行的这个程序, 正确的应该是从开始-运行-Command.com进入Command.com运行, 则不会有问题。
command.com是ms-dos的应用程序,(严格地说,是内部命令处理程序)是所有内部命令的集合,调入内存后可以接受键入的内部命令,并按照dos的规定的功能执行命令,cmd.exe是基于windows系统运行的程序,只是为习惯dos操作提供的一个命令提示符窗口。
另外:cmd下会恢复一些用户已经更改的中断向量。Command.com下不恢复

逆流杀 发表于 2014-9-14 21:48:50

1236 发表于 2014-9-14 21:07
不知道你到底想实现什么效果,毕竟颜色你已经显示出来了。如果是闪缩效果,必须在实模式下才能看出来,你可 ...

谢了,有资料解释是大部分人都是在cmd 中运行程序.一般来说没什么.但是在操作显存的时候十之八九不太会如意(显示不出)
错就错在进入了cmd.exe运行的这个程序, 正确的应该是从开始-运行-Command.com进入Command.com运行, 则不会有问题。
command.com是ms-dos的应用程序,(严格地说,是内部命令处理程序)是所有内部命令的集合,调入内存后可以接受键入的内部命令,并按照dos的规定的功能执行命令,cmd.exe是基于windows系统运行的程序,只是为习惯dos操作提供的一个命令提示符窗口。
另外:cmd下会恢复一些用户已经更改的中断向量。Command.com下不恢复
页: [1]
查看完整版本: 得不到想要的图片效果