1:CPU在执行OUT DX, AL指令时,()寄存器的内容送到地址总线上
A,DL
B,DX
C,AX
D,DL
解答:B
out指令是把AL的数据输出到DX的端口,因此AL寄存器的内容送到数据总线上,DX寄存器的内容送到地址总线上,即要把DX的内容送到地址总线上以选择端口,然后再传送AX的内容。此题需要看清楚是哪条总线。
2:8086在分别执行“MOV AX,[BX]”和“IN AX,DX”指令时,8086的()引脚电平不同?
A,M/IO
B,RD
C,WR
D,MN/MX
解答:A
in/out指令用于cpu和接口之间传输,mov指令用于cpu内部传输,或cpu和内存之间传输。因此区别在于I/O和Memory是否打通。
3:给总线号为5的PCI总线的3号扩展槽 4号功能设备的基址寄存器4分配256个存储器地址空间。
解答:结果如下图。
总线号为5:由于有8位,因此是00000101
3号扩展槽:即设备号,由于有5位,因此是00011
4号功能设备:即功能号,由于有3位,因此是100
基址寄存器4:20H地址开始,即寄存器号,由于有6位,因此是10 0000
同时,使能位是1,保留为是000 0000,末尾是00,可以获得一个二进制数
因此,向EAX输入的为80051C80 H
分配256个存储器地址空间:由于是存储空间,所以使用存储空间指针,末尾为0
同时2^8=256,因此从右往左数的第8位为1,且左边的所有位均为1
因此,向EAX输入的为0FFFFFF00 H
I/O空间分配如上图,举一反三可以做出I/O空间的题目
配置地址端口寄存器(I/O地址为0CF8H~0CFBH)
配置数据端口寄存器(I/O地址为0CFCH~0CFFH)
(开头是字母,则加一个0进行区别)
综上所述,总体指令如下:(同时可以看出DX接受16位,EAX接受32位)
MOV DX,0CF8H
(将0CF8 H端口送入DX)
MOV EAX,80051C80 H
(将功能选择送入EAX)
OUT DX,EAX
(将EAX中的数据输出到DX的端口,即把功能选择送入配置地址端口寄存器)
MOV DX,OCFCH
(将0CFC H端口送入DX)
MOV EAX,0FFFFFF00 H
(将分配选择送入EAX)
OUT DX,EAX
(将EAX中的数据输出到DX的端口,即把分配选择送入配送数据端口寄存器)