汇编之输入输出指令

    科技2026-01-21  7

    汇编之输入输出指令

    输入输出指令in输入指令应用实例 out输出指令应用实例 综合应用


    输入输出指令

    在8086中,所有的I/O端口和CPU之间的通信都由IN和OUT完成。 CPU只能用累加器(AL或AX)接收或发送信息。 也就是说,8086中,CPU对外设的操作只能通过IN和OUT这两条专门的端口读写指令来实现。在IN和OUT指令中出现的“数”只能是地址。 IN和OUT实际上是纯传数指令,可以传字节也可以传字。 IN和OUT都是对CPU而言的 IN是外设给CPU传数,OUT是CPU给外设传数。 IN和OUT都不影响标识位。

    in输入指令

    外设地址有16位的也有8位的,要根据地址长短选择使用不同的指令。 port为8位地址,DX可指定16位地址。这里的地址说的就是外设的地址。 IN指令的接收传过来的数的位置是固定的,就是AX或AL。 长指令短指令的长短指的是指令在内存中的长度。

    注意传送的是字还是字节是由指令前半部分的AX或AL决定的! 而地址的长度反映在指令的后半部分,看是直接用8位端口地址还是用DX中存储的地址

    应用实例

    IN AL,21H;表示从21H端口读取一字节数据到AL IN AX,21H;表示从端口地址21H读取1字节数据到AL,从端口地址22H读取1字节到AH

    MOV DX,379H IN AL,DX ;从端口379H读取1字节到AL

    out输出指令

    应用实例

    OUT 21H,AL;将AL的值写入21H端口 OUT 21H,AX;将AX的值写入端口地址21H开始的连续两个字节(port[21H]=AL,port[22h]=AH) OUT 5,AL;从AL输出一个字节到端口5

    MOV DX,378H OUT DX,AX ;将AH和AL分别写入端口379H和378H

    综合应用

    把端口28H和29H读到的数据经过AX送到内存 DATA_WORD是一个标号,指向数据段中偏移地址为DATA_WORD的区域。 (没有特别说明则默认在数据段)

    Processed: 0.016, SQL: 10