- [flash_ps] 找到问题所在了,是显卡的底部氧化了。用橡皮擦一下就行了。 09/11 12:26
- [ai_cr] 一看就知是显卡的问题。 重装下显卡驱动,如果还不行的话你就找人去修吧。 09/08 14:27
- [lwbfq] 换个别的版本的系统试试,很大可能就是硬件出了问题。 09/07 11:34
- [游客] 呵呵 就是 开学接着来啊 07/18 21:53
- [游客] 博主可以多看看书,别把学的忘记喽哦,, 07/18 18:11
- [flash_ps] 汇编差不多学完了(不打算深入研究)。再过几天放假回家没网络。故先解决这个问题先。 07/13 20:17
- [游客] 建议学汇编先 07/13 17:15
- [flash_ps] 但vc++6.0不支持很多C库函数。不像turboc中那么多函数可用。 07/13 13:29
- [a313446264] vc++6.0 可以 各种调式功能都有,单步,断点,······挺好用的 07/13 12:55
- [游客] 祝你考出理想的成绩,加油! 07/09 09:28
[2008-07-02 10:34] 实验十三(1)
code segment
start:
mov ax,cs
mov ds,ax
mov si,offset s
mov ax,0
mov es,ax
mov di,200h
mov cx,offset s2-offset s
cld
rep movsb ;以上是设置ds:si与es:di后进行复制
mov word ptr es:[4*7ch],200h ;设置7ch的入口地址
mov word ptr es:[4*7ch+2],0
mov dh,10 ;行号
mov dl,10 ;列号
mov cl,2 ;颜色
mov ax,data
mov ds,ax ;ds:si字符串首地址
mov si,0
int 7ch
mov ax,4c00h
int 21h
s: mov ax,0b800h
mov es,ax
mov bx,10*160+10*2 ;算出显示地址
mov cx,0
s0: mov cl,ds:[si]
jcxz s1
mov es:[bx],cl
mov es:[bx+1],10000010b
add bx,2
inc si
jmp s0
s1: iret
s2: nop
code ends
end start
说明:本程序本不规范。因为调用者int 7ch者并不知7ch号具体内容,只要求知道它的用途与相应的接口(如dh,dl,cl分别代表什么)就可了。本人偷懒些,不写这么多了。
对于cl(颜色)接口:如[cl=1(红色)cl=2(蓝色)cl=3(绿色)] 我们不想改变7ch号的代码(子程序也一样),但又能实现(用C语言描述cl只取 1--3)
if(cl=1) color=红;
else if(cl=2) color=蓝色;
else color=绿;
在汇编中实现上面不是很难,但颜色并不是仅有这几种,要实现的颜色越多,程序越难。不知大家有什么好的办法解决。
[ xiaochong 发表于 2008-07-02 19:11 ]
看了博主的程序,也运行了一下,很显然博主的程序并不能执行,不但少了
assume cs:code
data segment
db 'Welcome to masm',0
而且连 mov es:[bx+1], 10000010b 这句代码没有指定是否为字节,很显然,博主的意思是要传进一个字节的,但这样怎么能运行呢?起码也要这样吧
mov byte ptr es:[bx+1], 10000010b
但颜色并不是仅有这几种,要实现的颜色越多,程序越难。
---------------------
看到博主有这样的疑问,很明显没有认真看题目的要求啊,题目中已经说了,用cl来传递颜色值,而且博主也没有用dh,dl来传递行号,与列号,反而传递的是,
mov ax,data
mov ds,ax
ax来传递的为数据段的地址,
博主的这种学习态度是不值得学习的,很不认为,对自己要求也不严格,而且没有在计算机上验证自己的程序,这样对理解汇编语言是很不利的,希望博主能进一步的改正,,,
[ flash_ps 发表于 2008-07-02 22:54 ]
前面部分可能是复制只不留意造成的。
-------------------
但而且连 mov es:[bx+1], 10000010b 这句代码没有指定是否为字节,很显然,博主的意思是要传进一个字节的,但这样怎么能运行呢?起码也要这样吧
------------------
认该没错吧.这个10000010b不是也经可以说明是字了吗. 且我的编释器都可以通过运行
mov byte ptr es:[bx+1], 10000010b