| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1131 人关注过本帖
标题:嘿嘿,和C语言里面的goto(x,y)+显示字符 差不多的功能
只看楼主 加入收藏
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
结帖率:59.52%
收藏
 问题点数:0 回复次数:8 
嘿嘿,和C语言里面的goto(x,y)+显示字符 差不多的功能
程序代码:
date segment
    db 'GAO SHU WO NI SHI BU SHI CHU NAN HAO MA?','$'
date ends
code segment
assume cs:code,ds:date
start: mov ax,date
       mov ds,ax
       mov si,0

       mov dh,20   ;屏幕显示的行号
       mov dl,18   ;屏幕显示的列号
       mov cl,2    ;字符的显示颜色
       call show_str
       mov ax,4c00h
       int 21h

show_str:dec dh
         mov al,160  ;定位屏幕的输出位置公式 x为行号 y为列号  输出位置内存偏移地址 f(x,y)=x*160+2y
         mul dh
         mov bx,ax
         mov al,2
         mul dl
         add ax,bx      ;ax里面存放的是屏幕最终定位的内存偏移地址
         mov bx,0b800h   ;显存I/O地址
         mov es,bx     
         mov di,ax
         mov ah,cl  
   
      s: mov al,[si]
         cmp al,'$'
         jz over
         mov es:[di],ax
         inc si
         add di,2
         jmp s
   over: ret
code ends
     end start
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 zhu224039 于 2012-10-13 04:34 编辑 ]
搜索更多相关主题的帖子: color C语言 
2012-10-13 04:25
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
直接写屏,在新系统中是无法顺利运行的,除非你永远待在那个虚拟环境中。

授人以渔,不授人以鱼。
2012-10-13 11:41
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
回复 2楼 TonyDeng
我知道 这个又是保护模式,现在我想弄清楚的是  全局描述符表  放在哪的,怎么修改他 ,把自己写的程序 搞成全局描述符表里 具有0级特权的 嘿嘿

我要成为嘿嘿的黑客,替天行道
2012-10-13 11:47
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
0b800h,是显示卡文本模式的入口地址,硬件规定的(不同行数和列数的文本模式,计算位置的公式也会变动,不过简单点,只是二维表格那样的定位而已)。类似地,不同图形模式下的显示内存入口地址也不同,当显示卡支持的图形模式不同于标准的320*200、640*480、800*600时(这些是EGA/VGA标准图形模式),入口也不一样。入口地址是显示卡驱动程序告诉操作系统的,你也只能查阅驱动程序资料来获得那些地址。至于把数据写在程序中的什么地方,自己考虑。

[ 本帖最后由 TonyDeng 于 2012-10-13 11:56 编辑 ]

授人以渔,不授人以鱼。
2012-10-13 11:52
newdos
Rank: 9Rank: 9Rank: 9
等 级:禁止访问
威 望:6
帖 子:251
专家分:1169
注 册:2012-8-13
收藏
得分:0 
EGA/VGA 最高只支持640*480。EGA/VGA 图形模式0a0000H,统一的地址,与操作系统无关。
2012-10-13 12:46
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
回复 4楼 TonyDeng
大牛们,作为牛仔怎么才能快速成为大牛呢
迷茫的一塌糊涂

莫非 我得去学习 写驱动去?

我要成为嘿嘿的黑客,替天行道
2012-10-13 13:41
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你需要的是相关的东西的资料,特别是人家公布的技术文档,而不钻语言,这些东西与语言无关的。

授人以渔,不授人以鱼。
2012-10-13 13:44
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
回复 7楼 TonyDeng
恩,要得

我要成为嘿嘿的黑客,替天行道
2012-10-13 14:00
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
目前就知道个0b800h 也不知道为什么是他 他还有没有兄弟 反正就用他

梅尚程荀
马谭杨奚







                                                       
2012-10-13 14:08
快速回复:嘿嘿,和C语言里面的goto(x,y)+显示字符 差不多的功能
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.069132 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved