汇编实验14 访问CMOS RAM

实验内容:编程,以"年/月/日 时:分:秒"的格式,显示当前的日期、时间。

assume cs:code 

data segment
	db "20xx/xx/xx xx:xx:xx",0   	;以0结尾,作为循环终止标志,跳出循环
	db 9,8,7,4,2,0    				;[20]  分别对应着年月日时分秒的存放单元 
data ends

code segment
start:
	
	;初始化数据
	mov ax,data
	mov ds,ax
	mov si,2     ;从xx开始
	mov bx,20
	mov cx,6     ;做六次循环 


		;根据bx的值挑选出时间信息,并将其放入到data数据段中
		;参数:bl  返回值:数字十位ah  数字个位al
	time:
			push cx

			;在屏幕中间显示当前时钟的
			mov al,[bx]
			out 70h,al
			in al,71h

			mov ah,al    ;暂存al的值
			mov cl,4
			shr al,cl
			and ah,00001111b    ;剥离低位
			
			add al,30h
			add ah,30h

			mov ds:[si],ax

			inc bx
			add si,3
			pop cx
			loop time

	mov ax,0b800h
	mov es,ax
	mov di,12*160+40*2
	mov si,0

	;将data数据段显示到屏幕上
	show:
		mov ch,0
		mov cl,[si]
		jcxz ok      			  ;判断字符串是否为0,是则跳出循环
		mov byte ptr es:[di],cl   ;注意字节的分配,别用两个字节
		add di,2
		inc si
		jmp short show
	ok:
		jmp short start           ;使程序一直循环,起到即时性作用

	mov ax,4c00h
	int 21h

code ends
end start

; 错误信息:operand must have size
; 编译软件不能确定是8位数的,还是16位数的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值