. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验1疑惑  [已解决] 回复[ 4次 ]   点击[ 463次 ]  
walkmanilove
[帖 主]   [ 发表时间:2007-11-01 11:37 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2007-10-22 22:29
书上说显存地址范围为:a0000~bffff 
我用debug在查看a0010~a001f内容为:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
我用d命令向a0010~a001f位置写入:11 3c 44 55 66 77 88 99 00 00 00 00 00 00 00 00 
显示器没反应(书上说向显存写入数据,会输出到显示器上)?!疑惑1 (是不是这个位置写没反应)

我用u命令将上面位置的机器码翻译为汇编为: 
adc     [si],di 
inc     sp 
push    bp 
db      66 
ja      ff9f 
cwd 
add     [bx+sl],al 
add     [bx+sl],al 
add     [bx+sl],al 
add     [bx+sl],al 
我用r命令,让cs=a000,ip=0010 
输入:-t 6 
cmd屏幕最后跳到: 
c:\document and settings\***>            (即刚进入cmd的显示)疑惑2 

请大家帮我解下惑,并指出我上面表现出来的误区。...
walkmanilove
[第1楼]   [ 回复时间:2007-11-01 11:53 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2007-10-22 22:29
[  Wednesday   发表于  2007-11-01 10:30  ]       [ 删除评论 ] 
计算机有多种显示模式,每一种显示模式的显示缓冲区的起始地址是不同的,因为各种模式遵循的标准不同。 

一般来说,在windows下运行command命令或进入实模式DOS操作系统后,我们看到的界面工作在80*25彩色字符模式下,而这种模式的显示缓冲区是0B8000H---0BFFFH这段32KB的内存空间。 

所以,在这种模式下博主往0A0000H处写入的数据,是不能在显示屏幕上看到任何显示的,只能向自0B8000H开始的内存单元中写。
[  Wednesday   发表于  2007-11-01 10:33  ]       [ 删除评论 ] 
一般来说,在windows下运行command命令或进入实模式DOS操作系统后,我们看到的界面工作在80*25彩色字符模式下,而这种模式的显示缓冲区是0B8000H---0BFFFFH这段32KB的内存空间。  

更正:0B8000H---0BFFFFH!
putersham
[第2楼]   [ 回复时间:2007-11-01 15:55 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2007-10-31 15:17
B800:0000---B800:0F9F(好象是这段)
不信你用
-e b800:0f9e 01 01
就是控制台最后一个能显示的格子哦
putersham
[第3楼]   [ 回复时间:2007-11-01 15:59 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2007-10-31 15:17
也可以计算出来
80*25*2=4000=FA0H
walkmanilove
[第4楼]   [ 回复时间:2007-11-01 17:55 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2007-10-22 22:29
此贴由 贴主 于 [ 2007-11-01 17:55 ] 结贴。 结贴原因:问题已解决
得分情况: 2楼(putersham):4分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved