求汇编语言80x86高手,这句话是什么意思啊。。
mov ax,0b800h mov es,ax mov di,12*160+36*2;设置es:di指向显存空间的中间位置 就是这个注释看不懂,这个怎么与显存挂钩了啊;题目原要求是,有一段字符串,要求将它输在屏幕中间的位置
追问:我搞不明白es:di指向显存空间的中间位置,他怎么就指向显存了。。这方面我是一点也不懂,你可以给我讲讲吗?
mov ax,0b800h mov es,ax mov di,12*160+36*2;设置es:di指向显存空间的中间位置 就是这个注释看不懂,这个怎么与显存挂钩了啊;题目原要求是,有一段字符串,要求将它输在屏幕中间的位置
追问:我搞不明白es:di指向显存空间的中间位置,他怎么就指向显存了。。这方面我是一点也不懂,你可以给我讲讲吗?
其他:不是要把字符串输在屏幕中间的位置吗,es:di指向显存空间的中间位置呀,
先把es:di地址确定了,再可以输出字符了 在8086中 b8000h就是显存的起始地址,向这段内存的第一页写入的内容将会立即显示,将es段寄存器设为0b800H后再将偏移地址设为12*160+36*2就是屏幕的中间位置,每行可以显示80个字符,为什么乘以2呢?是因为显存相邻的两个字节一个表示内容,一个表示属性(包括前景,背景,字体颜色等)。打完收工~OK~~~ 其实很简单,关键词就是“IO映射”
就是把显存地址空间映射到内存的地址空间,这样就可以像操作内存一样操作显存了
我们通常是采用IO端口的方式才操作外设的,显卡比较特殊,用的是IO映射
有关IO PORT和IO MEM的信息可以自行百度 Intel 的 8088 CPU,有一套指令,机器语言以及汇编语言。它可以管理 1M空间的存储器。
IBM 用它设计制造了(一系列的) PC 机,把一部分存储器空间,分配给了显示器、把一部分分配给了硬盘、一部分分配给了ROMBIOS、...。
从 0b800h:0 开始,就是显示器的存储空间。
这些知识,在 汇编语言这个层面上,基本上是讲不清楚的,需要看有关 PC 机方面的资料。
上一个:汇编语言想要输入多个数字
下一个:汇编语言 Windows 函数 API函数 C函数 C++ 函数 Java函数之间有什么区别? 请高手指点···