不知道哪错了(汇编实验九)
先直接上代码***********************************************************************************************
assume cs:codesg,ds:datasg
datasg segment
db 3 dup ('w e l c o n e t o m a s m ! ') ;16个+16个空白
datasg ends
codesg segment
start:
mov ax,datasg ;跟ds挂钩
mov ds,ax
mov ax,0b800h ;es跟80x25显存挂钩
mov es,ax
mov cx,16 ;16个字符,循环16次
mov di,0
mov bx,0
s: mov byte ptr ds:,02h ;用s,s1,s2循环给字节设置属性
add di,2
loop s
mov cx,16
s1: mov byte ptr ds:,24h
add di,2
loop s1
mov cx,16
s2: mov byte ptr ds:,71h
add di,2
loop s2
mov cx,16
mov bx,0
mov di,0
s3: mov ax,ds: ;用s3,s4,s5循环把设置好的字符写入80x25显存中
mov es:,ax
add bx,2
loop s3
mov cx,16
mov bx,0
s4: mov ax,ds:
mov es:,ax
add bx,2
loop s4
mov cx,16
mov bx,0
s5: mov ax,ds:
mov es:,ax
add bx,2
loop s5
mov ax,4c00h
int 21
codesg ends
end start
;段地址b800开始
;行从偏移6e0h-77fh开始 字绿色 02
; 780h-81fh 绿地红色24
; 820h-8bfh 白底蓝字71
;列从+1f开始
*****************************************************************************************************
求错处,思路是这样的:
先把字节属性给设置了,然后再把设置好的字符写入80x25的显存中.可不是为什么出来的是小脸,想看debug看原因显存时时变动看不了,去看ds段的属性觉得没问题.问题就是写入显存的时候就变成笑脸了!
求高人点明错处!
你的问题我找到了。你的思路没有错。关键是你的显存地址算错了。导致数据写入错位。附上调试图。
你再根据书本的p188仔细算算显存地址。我帮你改了第一行就立马显示对了一行。下面的两行自己改咯。
PS:你的原程序里面int 21h 写成了int 21 真坑爹啊{:5_90:}
再附上我以前写的这个题的原程序,你参考参考咯。
assume cs:code
data segment
db 'welcome to masm!'
data ends
code segment
start: mov ax,data
mov es,ax
mov ax,0b800h
mov ds,ax
mov di,0
mov si,0
mov cx,16
s: mov ah,02h
mov al,es:
mov 720h,ax
mov ah,24h
mov 7c0h,ax
mov ah,71h
mov 860h,ax
inc di
add si,2
loop s
mov ax,4c00h
int 21h
code ends
end start
路过,,没仔细学过 不懂!! 帮顶!!!! 本帖最后由 walykyy 于 2012-9-26 18:58 编辑
assume cs:codesg,ds:datasg
datasg segment
db 3 dup ('w e l c o m e t o m a s m ! ') ;16个+16个空白,以后注意点抄都抄错了
datasg ends
codesg segment
start:
mov ax,datasg ;跟ds挂钩
mov ds,ax
mov ax,0b800h ;es跟80x25显存挂钩
mov es,ax
mov cx,16 ;16个字符,循环16次
mov di,0
; mov bx,0 ;bx没用别设
s: mov byte ptr ds:,02h ;用s,s1,s2循环给字节设置属性
add di,2
loop s
mov cx,16
mov bx,0
; mov di,0 ;di没用别设
s3: mov ax,ds: ;用s3,s4,s5循环把设置好的字符写入80x25显存中
mov es:,ax
add bx,2
loop s3
mov cx,16
mov di,0
s1: mov byte ptr ds:,24h
add di,2
loop s1
mov cx,16
mov bx,0
s4: mov ax,ds:
mov es:,ax
add bx,2
loop s4
mov cx,16
mov di,0
s2: mov byte ptr ds:,71h
add di,2
loop s2
mov cx,16
mov bx,0
s5: mov ax,ds:
mov es:,ax
add bx,2
loop s5
mov ax,4c00h
int 21h ;抄都抄错了,太不认真了
codesg ends
end start
lukelqz 发表于 2012-9-23 19:43 static/image/common/back.gif
你的问题我找到了。你的思路没有错。关键是你的显存地址算错了。导致数据写入错位。附上调试图。
你再根据 ...
一目了然,赞个.不过还是有问题, lukelqz 发表于 2012-9-23 19:43 static/image/common/back.gif
你的问题我找到了。你的思路没有错。关键是你的显存地址算错了。导致数据写入错位。附上调试图。
你再根据 ...
不管显存地址是哪里,只要把welcome to masm!的字节高位都设置属性不就可以改变属性了嘛? 为什么非要偏移是720h才行? 本帖最后由 walykyy 于 2012-9-26 07:05 编辑
。。。。。。。。。。 aleiluya 发表于 2012-9-25 03:34 static/image/common/back.gif
不管显存地址是哪里,只要把welcome to masm!的字节高位都设置属性不就可以改变属性了嘛? 为什么非要偏移 ...
对的,可以不用移到720h,只是为了符合题意,当然你只要把你的6ffh+1就可以了,你的问题是奇偶地址错位,字符放偶地址,颜色放奇地址就可以了。 walykyy 发表于 2012-9-24 22:45 static/image/common/back.gif
assume cs:codesg,ds:datasg
datasg segment
db 3 dup ('w e l c o m e t o m a s m ! ') ...
帅哥你知道楼主加空格的用意吗 来逛逛我从第一课从新开始学啦。以后发帖你们要帮我详细解答哦{:5_92:} 本帖最后由 walykyy 于 2012-9-26 07:05 编辑
。。。。。。。。。。。 walykyy 发表于 2012-9-25 20:38 static/image/common/back.gif
我知道他的意图,但是不符合实验9的题意,我已经在上面说过了'welcome to masm!'是连续的,中间是没有空格 ...
题意只是要求显示连续即可,存放数据的方式没有要求的。楼主的可以做到显示连续。 本帖最后由 walykyy 于 2012-9-26 07:05 编辑
。。。。。。。。。。。 本帖最后由 lukelqz 于 2012-9-25 22:53 编辑
walykyy 发表于 2012-9-25 22:36 http://bbs.fishc.com/static/image/common/back.gif
那我只能说楼主真是神才,第一次见过这样写的,OK了吧??随便改一句把鱼币拿走了,还在这里得瑟,你看看 ...
你故意闹事是不是?什么叫我写的代码能不能运行,我把关键问题找出来了,而且调试截图正常运行,什么叫随便改一句剩下的能不能运行?有本事把不能运行的图上上来,我调试了一个小时,什么叫得瑟?做个文明人行吗?我很赞成楼主的想法,楼主写的确实复杂了一点,但是完全符合题意就可以,而且楼主自己用了功夫自己想的,不行吗?怎么了?你第一次见的东西多了,大家都是新手,看你搞的像个老师一样。一点素质都没有 本帖最后由 walykyy 于 2012-9-26 07:06 编辑
。。。。。。。。。 walykyy 发表于 2012-9-25 22:51 static/image/common/back.gif
我说那里说错了,这位仁兄指出来???我又何来闹事之举呢???
程序是调试出来的,没有人能做到一下子就写出完美的程序!况且我还是在学习中,做不到那些高效率的. 我写成这样就是想把原理弄明白,基础打结实了再把它调试成高效率的.要一步一步来嘛. lukelqz 发表于 2012-9-25 12:13 static/image/common/back.gif
对的,可以不用移到720h,只是为了符合题意,当然你只要把你的6ffh+1就可以了,你的问题是奇偶地址错位, ...
= =失策,想来想去也没想到是这里!太感谢为我解答了. 本帖最后由 walykyy 于 2012-9-26 07:07 编辑
。。。。。。。。。。 本帖最后由 walykyy 于 2012-9-26 07:09 编辑
你们俩人的代码都有压缩性,此事到此为止!!!听不听你们随便
页:
[1]
2