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

实验要求:

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

需知:

在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

截图展示:

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值