汇编语言上天之路67-18(端口)
汇编语言上天之路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 ,ah
mov byte ptr ,02h
mov byte ptr ,al
mov byte ptr ,02h
mov byte ptr ,20h
add si,6
mov cx,bx
loop s
mov ax,4c00h
int 21h
code ends
end start
页:
[1]