第 14 章:端口

检测点 14.1

(1)编程,读取 CMOS RAM 的 2 号单元的内容。

assume cs:code

code segment
start:
    mov al,2    ; (al)=2,2 号单元
    out 70h,al  ; 选中端口 70h 的 2 号单元
    in  al,71h  ; 从端口 71h 读出 2 号单元,送入 al

    mov ax,4c00h
    int 21h
code ends

end start

(2)编程,向 CMOS RAM 的 2 号单元写入 0 。

assume cs:code

code segment
start:
    mov al,2    ; (al) = 2,2 号单元
    out 70h,al  ; 将 al 送入端口 70h,选中 2 号单元
    mov al,0    ; (al) = 0,写入端口
    out 71h,al  ; 将 (al)=0 写入到 71h 的 2 号单元
    mov ax,4c00h
    int 21h
code ends

end start

使用 debug 测试时。我们发现 in 和 out 指令都不支持单步中断。

检测点 14.2

编程,用加法和移位指令计算 (ax)=(ax)10。

提示,(ax)10=(ax)2+(ax)8 。

参考链接

实验 14 访问 CMOS RAM

编程,以“年/月/日 时:分:秒”的格式,显示当前的日期、时间。

注意:CMOS RAM 中存储着系统的配置信息,除了保存时间信息的单元外,不要向其他的单元中写入内容,否则将引起一些系统错误。

程序执行结果(需 Alt + Enter 进入全屏才能看到)

参考链接

Last updated