王爽汇编语言 实验14 个人学习笔记

    技术2022-07-10  125

    实验要求:

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

    需知:

    在CMOS RAM中,存放年月日时分秒这六个信息的长度都为1个字节,存放单元为: 秒:0 分:2 时:4 日:7 月:8 年:9

    以BCD码存放(以4位二进制数表示十进制数码的编码方法) 十进制:0 , 1… 二进制:0000 0001… 数值26 ,用BCD码表示为 0010 0110.

    要访问CMOS RAM的信息,首先要向地址端口70h写入要访问的单元地址,例如: mov al,8 (高4位表示十位,低4位表示个位) out 70h,al 然后从数据端口71h取得指定单元中的数据: in al,71h

    实验代码

    assume cs:code data segment db 9,8,7,4,2,0 对应CMOS RAM 中的年、月、日、时、分、秒 db'00/00/00 00:00:00','$' 开辟一个内存空间用来放转化为十进制的字符 data ends code segment start: mov ax,data mov ds,ax mov si,0 单元号 mov di,6 新内存空间的偏移地址 mov cx,6 s0: mov al,[si] out 70h,al in al,71h call s s为将CMOS RAM中BCD码转化为十进制字符子程序 inc si add di,3 loop s0 mov ah,2 上一章节调用10h中2号子程序设置光标位置 mov bh,0 页 mov dh,12 行 mov dl,34 列 int 10h mov ax,data 21h中9号子程序,在光标位置显示字符串 mov ds,ax 以’$’为结束符 mov dx,6 ds:dx 指向字符串首地址 mov ah,9 int 21h s: push cx 子程序 push si push di mov ah,al mov cl,4 shr ah,cl 右移4位得到十位上的值 and al,00001111b 通过与运算得到个位上的值 add ah,30h 加30h,变为可以在屏幕上显示的字符 add al,30h mov [di],ah mov [di+1],al pop di pop si pop cx ret code ends end start

    截图展示:

    Processed: 0.009, SQL: 9