汇编之输入输出指令


输入输出指令

在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的区域。
(没有特别说明则默认在数据段)

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值