- CPU 可以直接读写以下 3 个地方的数据
- CPU 内部的寄存器
- 内存单元
- 端口
- 8086 CPU 最多可以定位 64KB 个不同的端口。端口的范围为 0~65535 对端口的读写不能使用 mov、push、pop 等内存读写指令。端口的读写指令只有两条 in 和 out,分别用于从端口读取数据和往端口写入数据
- 在 in 和 out 指令中只能使用 ax 或 al 来存放从端口读入的数据或者要发送到端口中的数据
- 对于 0~255 内的端口读写可以直接使用常量指定
- in al,20h
- out 20h,al
- 对于 256~65535 的端口进行读写时,端口号放在 dx 中
- mov dx, 3f8h
- in al,dx
- out dx,al
- 对于 0~255 内的端口读写可以直接使用常量指定
- shl 和 shr 指令
- shl 是逻辑左移指令,它的功能为:
- 将一个寄存器或内存单元中的数据向左移位
- 将最后移出的一位写入 CF 中
- 最低位用 0 补充
- 如果移动位数大于 1 时,必须将移动位数放在 cl 中
- 例子: shl al,1
- shr 是逻辑右移指令
- 将一个寄存器或内存单元中的数据向右移位
- 将最后移出的意味写入 CF 中
- 最高位用 0 补充
- 如果移动位数大于 1 时,必须将移动位数放在 cl 中
- shl 是逻辑左移指令,它的功能为:
- 编程,读取 CMOS RAM 的 2 号单元的内容
- 编程,向 CMOS RAM 的 2 号单元写入 0
编程,用加法和移位指令计算 (ax)=(ax)*10
提示:(ax)*10=(ax)*2+(ax)*8
编程,以 “年/月/日 时:分:秒” 的格式,显示当前的日期、时间。
注意:CMOS RAM 中存储着系统的配置信息,除了保存时间信息的单元外,不要向其他的单元中写入内存,否则将引起一些系统错误。