大家看看这段汇编程序那里出错了?

难道数据不可以以B开头》???;在屏幕中间分别显示绿色,绿底红色、白底蓝色,的字符串,'welcometomasm!'assumecs:codesgdatasegment... 难道数据不可以以B开头》???

;在屏幕中间分别显示绿色,绿底红色、白底蓝色,的字符串,'welcome to masm!'assume cs:codesg
data segment
db 77h,6ch,63h,6fh,6dh,65h,20h,74h,6fh,20h,6dh,61h,20h,73h,6dh
data ends
codesg segment
start: mov ax,b800h
mov es,ax ;es段存放输出的数据
mov ax,data
mov ds,ax ;ds段存放定义的数据

mov bx,0
mov si,0
mov cx,15
s: mov al,[bx]
mov es:[23h+si],al
inc si
mov byte ptr es:[23h+si],02h
inc di
inc si
loop s
mov cx,15 mov bx,0
s1: mov al,[bx]
mov es:[23h+si],al
inc si
mov byte ptr es:[23h+si],28h
inc di
inc si
loop s
mov cx,15 mov bx,0
s2: mov al,[bx]
mov es:[23h+si],al
inc si
mov byte ptr es:[23h+si],B1h
inc di
inc si
loop s
mov ax,4c00h
int 21h
codesg ends
end start
展开
 我来答
逻辑错误2021
推荐于2018-05-12 · TA获得超过757个赞
知道小有建树答主
回答量:986
采纳率:0%
帮助的人:447万
展开全部
你的文件是:9.asm
错误提示: 9.asm(7):error A2009:symbol not defined:B800H 这里是未定义的符号,B800H明明是一个数字为什么会提示符号错误?说明我们写错了,导致编译器以为它是符号.应该写成:0B800H.

其实仔细看看就好了,想学汇编就必须要细心再细心.汇编的语法最简单,但是想要用来编程却显得结构非常复杂.调试汇编代码,找错有很多技巧的,比如:常用的 int 3 中断.
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
baitang3671b
2013-01-28 · TA获得超过5040个赞
知道大有可为答主
回答量:4421
采纳率:31%
帮助的人:1131万
展开全部
十六进制数前面是字母的一定要加0
改一下:
start: mov ax,0b800h
mov byte ptr es:[23h+si],0B1h
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式