第14章 端口

本系列博客参考《汇编语言》 作者 王爽

重点掌握
(1)IO端口的含义
(2)IO端口的读写控制


1 端口介绍
计算机的端口,或者说这里指的是IO端口,并非计算机通信的端口。

**1.1 什么是I/O端口? CPU使用什么指令与外设进行数据交换? **
  答:CPU与I/O设备通过硬件接口或控制器相连接,这些接口或控制器都有数量不等的端口,这些端口有统一的地址编码,CPU通过这些端口使用输入输出指令IN、OUT与外设进行数据交换。( 来自:关于IO端口和编址方式的知识)

1.2 CPU为什么不能用MOV指令进行I/O数据传输?   
答:在80x86微机系统中,I/O端口编址在一个独立的地址空间中,它和存储器是完全分离的。因此,对于存储器的存取操作使用MOV指令,而与端口进行信息交换的操作使用专门的I/O指令,二者不能混淆。( 来自:关于IO端口和编址方式的知识)

1.3 IO的编址方式
统一编制和独立编址并不是影响了真正的空间大小。
他们在于影响了,可以编址的空间大小。编址空间是由地址线的条数决定的。
然而,真正的物理空间的大小,是存储体决定的。
影响我们内存的使用,既包括地址线的个数,也包括真正的存储体大小
如果你对IO端口的编址方式感兴趣的话,可以参看这篇文章:统一编址和独立编址

2 实验相关知识点

  • in和out只能用ax或者al来存放从端口读(写)的数据
  • out是写指令。给地址端口写入地址
  • in为读指令方向是相对与cpu
  • shr(l),移动不止一位的时候,移动位数必须放在cl中
  • BCD码 + 30h = 十进制对应的ASCII码

3 实验
编程,以“年/月/日 时:分:秒”的格式,显示时间。

;--------------------------------------------------
;编程,以年//日 时:分:秒 的格式显示当前的时间  
; dacao 2019/5/3
;--------------------------------------------------

assume cs:code

data segment
    port: db 0,2,4,7,8,9
    part: db "//  :: "  ;这里用了两个空格表示转义???(如果愿意的话,可以仔细调试一下。)
data ends

code segment 
start:mov ax,data
    mov ds,ax
    mov si,offset port    ;ds:si指向不同的端口
    mov bx,offset part    ;ds:bx指向不同的间隔符号
    mov ax,0b800h
    mov es,ax
    mov di,160*12+40*2    ;es:di指向显存
      
    mov cx,6
show_date:
    push cx    
    mov al,ds:[si]     ;in和out只能用ax或者al来存放从端口读(写)的数据 
    out 70h,al       ;out是写指令。给地址端口写入地址
    in al,71h        ;in为读指令。  方向是相对与cpu
    
    mov ah,al
    mov cl,4      ;shl(r),移动不止一位的时候,移动位数必须放在cl中
    shl ah,cl     ;前四位BCD码,存在ah中
    add ah,30h    ;BCD码 + 30h = 十进制对应的ASCII码
    and al,00001111b
    add al,30h
    
    mov byte ptr es:[di],ah 
    mov byte ptr es:[di+2],al
    ;mov byte ptr es:[di+4],ds:[bx]  ;逻辑和下面5行等价
    push si
    mov si,bx 
    mov al,ds:[si]
    mov byte ptr es:[di+4],al
    pop si
    
    inc si ;下一个端口
    inc bx ;下一个分隔符
    add di,6
    pop cx
    loop show_date   
    
    
    mov ax,4c00h
    int 21h


code ends
end start


在这里插入图片描述参考文章
关于I/O端口和编址方式的知识
计算机的I/O端口地址表
I/O端口编址方式:统一编址和独立编址
[转载]汇编 shl和shr指令的使用

发布了104 篇原创文章 · 获赞 134 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/sinat_38816924/article/details/89791554