|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
汇编语言上天之路67-18(端口)
CPU可以从三个地方直接读写数据:
1.CPU内部寄存器
2.内存单元
3.端口
对端口只能用in(读取数据),out(写入数据)指令
在in和out指令中,只能用ax(16位端口)或al(8位端口)来存放端口读入或要发送到端口中的数据
0-255内的端口:
in al,20h
out 20h,al
256-65535(端口号放在dx中):
mov dx,3f8h
in al,dx
out dx,al
CMOS RAM芯片:
0-dh存放时间信息,两个端口,70h,71h,向70h写入地址信息,71h读出数据信息
shl:逻辑左移命令(数据左移,将最后移出的一位写入CF中,移位用0填充)
1.shl al,1
则是将al二进制位像左移1(相当于x2)
2.如果左移位数大于1,要用cl存放移动位数
shl:逻辑右移命令(数据右移,将最后移出的一位写入CF中,移位用0填充)
1.shl al,1
则是将al二进制位像右移1(相当于÷2)
2.如果右移位数大于1,要用cl存放移动位数
实验14:
- assume cs:code
- stack segment
- db " " ;8字节的栈空间
- stack ends
- code segment
- start:
- mov ax,stack
- mov ss,ax
- mov sp,8
-
- mov ah,0
-
- mov al,0
- out 70h,al
- in al,71h
- push ax
-
- mov al,2
- out 70h,al
- in al,71h
- push ax
-
- mov al,4
- out 70h,al
- in al,71h
- push ax
-
- mov al,7
- out 70h,al
- in al,71h
- push ax
-
- mov al,8
- out 70h,al
- in al,71h
- push ax
-
- mov al,9
- out 70h,al
- in al,71h
- push ax
-
- mov ax,0b800h
- mov ds,ax
- mov si,160*12+40*2
- mov cx,6
- s:
- mov bx,cx
- pop ax
- mov ah,al
- mov cl,4
- shr ah,cl
- and al,00001111b
-
- add ah,30h
- add al,30h
-
- mov byte ptr [si],ah
- mov byte ptr [si+1],02h
- mov byte ptr [si+2],al
- mov byte ptr [si+3],02h
- mov byte ptr [si+4],20h
- add si,6
- mov cx,bx
- loop s
-
- mov ax,4c00h
- int 21h
- code ends
- end start
复制代码
|
评分
-
查看全部评分
|