8086汇编-端口(14)
引言
CPU可以直接读取3个地方的数据
1 | 1.CPU内部的寄存器 |
1.端口的读写
端口的读写不能用 mov
1.只能用in out
访问内存
1 | mov ax,ds:[8] |
访问端口
in是读,out是写
in al,60h
1 | 从60H号端口读入一个字节 |
执行的时候操作
1 | 1.CPU通过地址将地址信息60h发出 |
2.注意
1 | 在in 和 out 指令中,只能使用ax或al 来存从端口中读入的数据或要发送到端口中的数据。访问8位端口的时候,用al,访问16位端口的时候,用ax |
3.对0~255以内的端口进行读写
1 | in al,20h ;从20h端口读入一个字节,放到al中 |
4.对256~65535的端口进行读写的时,端口号放在dx中
1 | mov dx,3f8h ;将端口号3f8送入dx中 |
2.CMOS RAM 芯片
PC机中有一个CMOS RAM芯片
1 | 1.包含一个实时钟和一个有128个存储单元的RAM寄存器 |
2.bios也提供了相关的程序,使我们可以在开机的时候,配置CMOS RAM种的系统会给信息
1 | 改芯片内部有2个端口,端口地址是70H和71H |
比如:读CMOS RAM 的2号单元
1 | 1.将2送入端口70h |
3.shl和shr指令
1.shl和shr是逻辑位移指令,后面的课程中我们要用到位移指令
2.shl是逻辑左移
1 | 1.将一个寄存器或者内存单元中的数据向左移位 |
比如
1 | mov al,01001000b |
如果移动位数大于1的时候,必须将移动位数放在cl中
比如
1 | mov al,01010001b |
可以看出,将x逻辑左移一位,相当于执行x=x*2
3.shr就是shl的反向操作
1 | 移出的最后一个存入cf中 |
逻辑右移一位,相当于x=x/2
4.CMOS RAM中存储的时间信息
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Safety-Blog!