1、这么些貌似可以读出,因为你的readdate是整形,能够存放地址值,但是估计使用起来比较麻烦,而且你可以强制类型转换int为指针。
2、SEG * 10H + OFFSET 这个取到的都是绝对的地址值,也就是物理地址,但是其实你能够通过软件或者IDE查看到的都是逻辑的虚拟地址。所以你感觉是1M,其实通过段页式内存管理,加上你硬盘上的虚拟内存,应该是你物理内存的两倍大小。
3、内存和I/O,在x86上是相互独立的编址,虽然使用起来一样,但是有一个字节(记不清楚了,应该是第一个字节),内存的是0,外设的是1,这样就可以很容易的区分他们,并且还可以在此基础上做今后的扩展。不过有些系统上可以完成统一编址,因为操作相同,所以不区分,只在程序中注意即可。
4、直接访问I/O就是从I/O读取数据和写入数据,映射方式就是借用一下系统内存,访I/O内存我不是特别理解,应该是类似显卡的显存或者硬盘光驱的缓存这样的“I/O内存”吧,其实都是CPU和外设交互,你搞清楚这些也没用,前人做了无数的封装,除非你是开发底层,否则真的没必要了解
5、I/O port就是端口,也就是说,你需要进行通讯的时候(假如是UART)你需要有一个发送Tx和一个接收Rx端口,可以用一个,也可以用多个,同时多个可以进行双工/半双工通讯。
累死我了,全都是自己敲的。。。不懂可以给我邮件:
mcg890414@163.com
2 DOS设计问题,他能最大直接访问的内存就只有1M,后来才加了点什么EMM386对扩展内存进行访问。
4 端口映射到内存,看到比较多的就是系统完成I/O口的读写操作,只需要访问相应的内存就可以完成读写操作
5 I/O Port Input/Output Port 输入输出端口,就是可以控制电平高低,可以读取电平高低的东西都可以叫I/O Port
用DPMI 一切搞定
你试试看吧