找回密码
 注册会员
查看: 604|回复: 0

关于一个汇编编程问题的疑惑

[复制链接]
发表于 2010-4-12 13:54:38 | 显示全部楼层 |阅读模式
<p>关于一个汇编编程问题的疑惑</p>
<p><img src="http://img.baidu.com/img/iknow/icn_point.gif"> 悬赏分:5 -</p>
<p>解决时间:2010-4-12 13:53</p>
<p>程序代码如下(向显示缓冲区写入数据,并显示出来):</p>
<p>assume cs:codesg</p>
<p>codesg segment</p>
<p>start:mov ax,0b800h</p>
<p>mov ds,ax</p>
<p>mov bx,0</p>
<p>mov si,2</p>
<p>mov byte ptr [bx],41h</p>
<p>mov byte ptr [bx+si],41h</p>
<p>mov byte ptr [bx+si],41h</p>
<p>mov byte ptr [bx+si],41h</p>
<p>mov byte ptr [bx+si],41h</p>
<p>mov byte ptr [bx+si],41h</p>
<p>mov byte ptr [bx+si],41h</p>
<p>mov byte ptr [bx+si],41h</p>
<p>mov byte ptr [bx+si],41h</p>
<p>mov byte ptr [bx+si],41h</p>
<p>mov byte ptr [bx+si],41h</p>
<p>mov byte ptr [bx+si],41h</p>
<p>mov byte ptr [bx+si],41h</p>
<p>mov byte ptr [bx+si],41h</p>
<p>mov byte ptr [bx+si],41h</p>
<p>mov bx,1</p>
<p>mov cx,15</p>
<p>s1:mov byte ptr [bx],9ah</p>
<p>add bx,2</p>
<p>loop s1</p>
<p>mov ax,4c00h</p>
<p>int 21h</p>
<p>codesg ends</p>
<p>end start</p>
<p>原本我是想显示出“welcome to masm”的,但后来发现虽然背景色和字体色变了、但是显示的改变字符只能显示两个,所以我将数据区的代码全部换成了41H 即字符A的代码进行测试,但仍然只能显示出两个A,而其他的字符都是原来就在的字符,并没有改变。</p>
<p>请问这是怎么回事呢、根据我在这个问题前遇到的其他问题,我猜测要字符显示出来需要将相邻的数据区和属性区都填上才能显示出来(仅是我的猜测),既然可以显示出两个A,为什么却不能显示出余下的那些A呢?</p>
<p>请懂的朋友教下小弟。</p>
<p>提问者: 忧无醉 - 二级</p>
<p>最佳答案</p>
<p>你没有在每传送一个值之后将SI递加啊,相当于你每次都在对同一个内存单元ds:[2]赋值啊。加上之前你对ds:[0]赋了值,所以肯定就只有两个字符了…… 既然你知道用循环,试试用循环将si递加之后赋值</p>
<p>0</p>
<p>回答者:</p>
<p>天池血崩 - 二级   2010-4-12 00:05</p>
<p>我来评论>></p>
<p>提问者对于答案的评价:</p>
<p>哎  小白就是小白 这么低级的错误都发现不了、、、</p>
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|文字版|手机版|小黑屋|襄阳城

GMT+8, 2025-5-22 12:07

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表