显示红底绿字的代码看看错在了哪里
本帖最后由 moshushi 于 2011-5-12 20:10 编辑assume cs:code,ds:data
data segment
msg db "hello world"
data ends
code segment
start:
mov ax,data
mov ds,ax
mov bx,0b800
mov es,bx
mov cx,11
mov si,0
movbx,0
mov ah,01000010
s:mov al,ds:
mov es:,al
mov es:,ah
inc si
add bx,2
loop s
mov ax,4coo
int 21
code ends
end 大概看了下,三处较明显的错误
1.mov ah,01000010 MASM默认是10进制,2进制要带B
2.mov ax,4coo16进制里有o吗?是4C00H,16进制还是不要忘记带单位
3.mov bx,0b800 同理,单位
如果不带单位,就会被当成10进制的来处理,程序虽然不会报错,但结果相差甚远,要多注意 呃先解决能看到的 最后面程序结束吧没有了这个 end start<--start 没有了! 还有啊 字符不是用双引号吧 而是单引号 ' xxxxxx' 本帖最后由 loop 于 2011-5-5 08:43 编辑
好了 我把程序改了一下 你自己看看程序然后在想想:assume cs:code
data segment
db 'hello world'
db 42h ;在这第十一个内存单元处存放字体属性
data ends
code segment
start:mov ax,data
mov ds,ax;定义数据段
mov ax,0b800h
mov es,ax
mov cx,11
mov si,0
mov bx,0
s: mov al,ds:;这里把字符放在AL中
mov ah,ds:;这里把字体属性放在AH中
mov es:,ax ;这里吧AX中的内容传送到显存中会在屏幕中间吧应该是
inc bx
add si,2
loop s
mov ax,4c00h
int 21h
code ends
end start 回复 Y.H 的帖子
程序可以运行,但是没有显示字体,只是一闪而过,还该怎么改 你是在CMD里面运行他 还是双击运行的? 有可能需要你把CMD窗口放为全屏 我的是WINXP的 所以全不全屏都可以 而且只要 不CLS刷新 字体就一直在那里!保证我放的程序没问题! 回复 Y.H 的帖子
为什么还得全屏才可以显示“hello world" 这个和你的系统有关吧! 用debug单步来看就可以。有或者装个虚拟机,再装个XP,就可以了。
我之前都是看不到的。 使用win7系统的朋友推荐安装虚拟机。然后装个win98来用。方便很多。 大家都详细说明一下 本帖最后由 loop 于 2011-5-10 00:28 编辑
moshushi 发表于 2011-5-8 20:28 static/image/common/back.gif
大家都详细说明一下
虚拟机安装包网站里有下,镜像文件到网上一搜一大堆。
安装完虚拟机后,加载镜像文件,剩下操作的和装系统没区别。
安装好系统,然后启用虚拟机,在虚拟机中调试你的程序就行了。
虚拟机下载地址:http://www.fishc.com/a/downloads/xitongzengqiang/.html VirtualBox-2.2.0这个虚拟机能用吗? loop 发表于 2011-5-10 00:25 static/image/common/back.gif
虚拟机安装包网站里有下,镜像文件到网上一搜一大堆。
安装完虚拟机后,加载镜像文件,剩下操作的和 ...
一定用window98吗? moshushi 发表于 2011-5-10 11:23 static/image/common/back.gif
一定用window98吗?
看你自己了,只要达到效果就行。 你每次用g命令运行.....他自己会刷新..也就是你的行数最好写多点....其实他可以打印出来了...但是给刷新到屏幕上方了... 看不懂继续努力
页:
[1]