第10幸中断和输入/输出程设计 10.1.1O指令ⅣN和OUT 1.格式 输入指令: in OPl, OP2 I AL, imm IN AX, imm IN EAX, imm IN AL, DX IN AX, X IN EAX, DX
第10章 中断和输入/输出程序设计 10.1.1 I/O指令IN和OUT 1.格式 输入指令: IN OP1, OP2 IN AL, imm8 IN AX, imm8 IN EAX, imm8 IN AL, DX IN AX, DX IN EAX, DX
第10幸中断和输入/输出程设计 输出指令: OUT OPI, OP2 out imma, AL oUt imm8, AX out imm, EAX OUT DX, AL OUT DX, AX OUT DX, EAX
第10章 中断和输入/输出程序设计 输出指令: OUT OP1, OP2 OUT imm8, AL OUT imm8, AX OUT imm8, EAX OUT DX, AL OUT DX, AX OUT DX, EAX
第10幸中断和输入/输出程设计 2.功能: I/O指令ⅠN和OUT用于在IO端口和AL、AX或EAX累加器 之间交换数据。输入指令ⅠN完成从O到CPU的信息传送;输出 指令OUT完成从CPU到I/O的信息传送。 3.端口访问方法 80486有16条Ⅰ/O地址线,I/0端口范围是64K。访问端口方 法有两种: ①用1字节立即数指定的方法,可以访问0~255的端口; ②采用DX寄存器间接寻址方法,可以访问0~(64K-1)个 端口中的任一端口
第10章 中断和输入/输出程序设计 2.功能: I/O指令IN和OUT用于在I/O端口和AL、AX或EAX累加器 之间交换数据。输入指令IN完成从I/O到CPU的信息传送;输出 指令OUT完成从CPU到I/O的信息传送。 3.端口访问方法 80486有16条I/O地址线,I/O端口范围是64 K。访问端口方 法有两种: ① 用1字节立即数指定的方法,可以访问0~255的端口; ② 采用DX寄存器间接寻址方法,可以访问0~(64 K-1)个 端口中的任一端口
第10幸中断和输入/输出程设计 4.举例 NAL,OFAH;从端口OFAH输入8位数到AL IN EAX, 28H 将端口28H、29H、2AH和2BH的32位数送EAX MOV DX,3AEH;IO地址大于255时,应通过DX间接寻址 In AX, DX ;从DX指出的端口输入16位数到AX OUT21H,AL;将8位数从A输出到端口21H OUT DX,EAX;将32位数从EAX输出到DX指出的端口
第10章 中断和输入/输出程序设计 4.举例 IN AL, 0FAH ;从端口0FAH输入8位数到AL IN EAX,28H ;将端口28H、29H、2AH和2BH的32位数送EAX MOV DX, 3AEH ;I/O地址大于255时,应通过DX间接寻址 IN AX, DX ;从DX指出的端口输入16位数到AX OUT 21H,AL ;将8位数从AL输出到端口21H OUT DX, EAX ;将32位数从EAX输出到DX指出的端口
第10幸中断和输入/输出程设计 5.说明 在保护方式下,当处理器遇到一条ⅠO指令时,它首先检 查现行任务的特权级是否高于或等于ⅣO特权级,即是否 CPL<IOP1。若是,则执行IO操作;否则,处理器检查IO允 许位图,若IO允许位图不允许访问,则会发生异常13
第10章 中断和输入/输出程序设计 5.说明 在保护方式下,当处理器遇到一条I/O指令时,它首先检 查现行任务的特权级是否高于或等于I/O特权级,即是否 CPL≤IOP1。若是,则执行I/O操作;否则,处理器检查I/O允 许位图,若I/O允许位图不允许访问,则会发生异常13