CPU对外设的寻址为什么会分这两种,编址的实现到底是怎么样的一个概念?
独立和统一这两种编址形式,在系统启动以后是不是已经由CPU同时设定好,然后再根据用户使用的指令,临时决定使用哪种编址来寻址??
刚看有朋友说独立编址情况,需外围芯片支持,端口地址存在外围芯片中,那么统一编址的情况下是指外设接口中的寄存器被当作内存来使用吗?我可以用MOV等指令对其任意操作??
独立编址就是外设与内存分开来,例:1111H 这16个地址全给内存,可用MOV等指令访问,外设另外有地址,CPU用专用的指令访问外设。
2:这个是由CPU自动设置的,这俩种只可选其中一种,并不是人为的。
独立和统一这两种编址形式,在系统启动以后是不是已经由CPU同时设定好,然后再根据用户使用的指令,临时决定使用哪种编址来寻址??
刚看有朋友说独立编址情况,需外围芯片支持,端口地址存在外围芯片中,那么统一编址的情况下是指外设接口中的寄存器被当作内存来使用吗?我可以用MOV等指令对其任意操作??
自学中,诸多不解,请各路侠客指教~
独立编址就是外设与内存分开来,例:1111H 这16个地址全给内存,可用MOV等指令访问,外设另外有地址,CPU用专用的指令访问外设。
2:这个是由CPU自动设置的,这俩种只可选其中一种,并不是人为的。
3:并不是当作内存来使用,而是像访问内存一样来访问外设。
cpu有一根线,叫io/mem,这一根线,就控制了输出的地址是io地址,还是mem的地址。
当译码的时候,把这一根线加上就是了。
当然,你如果想把一个器件(外围设备)的编址,编到内存里也可以,那时候就要用mov来访问了。
那是一样的。
把内存编到io地址空间,也可以用in ,out 指令来访问。都是一个样子的。