- 端口的读写指令:int 、out
- 只能使用ax或al存放信息
- 从端口读取:int
- int al,60h(从60h号硬件端口读入一个字节)
- 往端口写入:out
- out 21h,al
- 执行时与总线相关的操作:
- CPU通过地址线将地址信息60h发出
- CPU通过控制线发出端口读命令,选中端口所在芯片,通知它将要从中读取数据;
- 端口所在芯片将60h端口中的数据通过数据线送入CPU
- 对0~255以内的端口进行读写:int al,60h
- 对256~65535的端口进行读写,端口号放在dx中
- mov dx,03f8h
- in al,dx
CMOS RAM芯片
逻辑移位指令
- shl:逻辑左移,X=X*2
- mov al,01001000b
- shl al,1
- (al)=10010000b,CF=0
- 1)将一个寄存器或内存单元中的数据向左移位,将最后移出的一位写入CF中;
- 2)最低位用0补充。
- mov al,01010001b
- mov cl,3
- shl al,cl
- (al)=100010000,CF=0
- shr:逻辑右移
- 1)将一个寄存器或内存单元中的数据向右移位,将最后移出的一位写入CF中;
- 2)最高位用0补充。
- 从CMOS RAM的8号单元中读取一个字节,分成BCD码的数据(两位)
mov al,8
out 70h,al ;读取8号单元的月份
in al,71h ;将读取的数据写入al
mov ah,al
mov cl,4
shr ah,cl ;ah中存放十位
and al,00001111h ;al中存放个位