汇编入门学习笔记 (十二)—— int指令、端口
时间:11-09
来源:互联网
点击:
v bh,0 mov dh,5 mov dl,12 int 10h mov ax,data mov ds,ax mov dx,0 ;ds:dx指向字符串的首地址 data:0 mov ah,9 int 21h mov ax,4c00h int 21h code endsend start
二、端口
各种芯片(网卡,显卡等)都有一组可以由CPU读写的寄存器。CPU可以通过这些寄存器读取数据,或者操控芯片。CPU把这些寄存器当做端口,对这些寄存器进行统一编址。每个端口宅地址空间中都有一个地址。
1. in和out指令
访问端口用in和out
如果:
in al,60h ; 从60h端口读取数据放到al中
注意:只能用ax或者al来存放从端口中读入的数据或要发送到端口的数据。
对0~255以内的端口进行读写时:
in al,20h
out 20h,al
对256~65535的端口进行读写时,端口号放在dx中:
mov dx,3f8h
in al.dx
ou dx,al
2. shl和shr指令
shl:左移指令,最低位补0,将移出的追后以为写入CF中
如果是移1位就:
shl al,1
如果移动大于1位,必须将移动的位数放在cl中
mov cl,3
shl al,cl
shr是右移,其他与shl一样
3. CMOS RAM芯片
PC中有一个靠电池供电CMOS RAM芯片,它包含一个实时种和一个有128个存储单元的RAM存储器。
它有两个端口:
70h:保存要读取内存单元的地址
71h:读取内存单元
CMOS RAM中存储的时间信息
0:秒;2:分;
4:时;7:日;
8:月;9:年;
例子:在屏幕显示月份。
assume cs:codecode segmentstart:mov al,8out 70h,alin al,71hmov ah,almov cl,4shr ah,cland al,00001111badd ah,30h ;0 的ASCII值add al,30hmov bx,0b800hmov es,bxmov byte ptr es:[160*12+40*2],ahmov byte ptr es:[160*12+40*2+2],almov ax,4c00hint 21hcode endsend start
汇编入门int指令端 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)