zoukankan      html  css  js  c++  java
  • 汇编读取CMOS RAM端口程序

    题目:按照主程序与子程序的结构,输入并编写读出CMOS RAM端口程序,以“年/月/日 时:分:秒”的格式,显示当前时间。

    源程序:

    assume cs:code,ds:data
    data segment
    	db 9,8,7,4,2,0				;储存各时间位置
    	db "yy/mm/dd hh:mm:ss",0	;输出格式
    data ends
    
    code segment
    start:	mov ax,data
    		mov ds,ax	;data段挂载到ds
    		mov bx,0	;bx初始化为零
    		mov si,6	;类似于指针,指向输出格式
    		mov cx,6	;循环6次
    s:		push cx		;将循环次数入栈保存
    		mov al,[bx]	;将ds:[bx]的数据传给al
    		out 70h,al	;将al的值传到70h端口,找到端口地址
    		in al,71h	;将71h存的值传给al,得到对应时间
    		mov ah,al	;保存al的值
    		mov cl,4	;循环四次,为下一行右移做准备
    		shr ah,cl	;二进制右移cl位,得到十位数
    		add ah,30h	;加30h,得到ASCII码
    		and al,0fh	;与00001111做与运算,得到个位数
    		add al,30h	;加30h,得到ASCII码
    		mov [si],ah	;将ah的值传给ds:[si],例如yy的第一个y
    		mov [si+1],al	;将al的值传给下一位,yy的第二个y
    		inc bx		;bx加一,指向第二个时间位置
    		add si,3	;跳到下一个位置,yy到mm需要跳三次
    		pop cx		;将保存的循环次数传回cx
    		
    		loop s		;循环cx次
    		mov si,6	;类似于指针,指向输出格式
    		mov dl,12	;保存行数,12行
    		mov dh,20	;保存列数,20列
    		mov cl,17h	
    		call show	
    		mov ax,4c00h
    		int 21h
    		
    		;按格式输出
    show:	push es
    		push bx
    		push cx
    		push si
    		push ax
    		mov ax,0b800h	
    		mov es,ax	
    		mov al,160	
    		mul dh		
    		mov bx,ax	
    		mov al,2	
    		mul dl		
    		add bx,ax	
    		mov al,cl	
    m0:		mov cl,[si]	
    		mov ch,0	
    		jcxz m1		
    		mov es:[bx],cl	
    		mov es:[bx+1],al	
    		inc si		
    		add bx,2	
    		loop m0
    		
    		jmp m1	
    m1:		pop ax
    		pop si
    		pop cx
    		pop bx
    		pop es
    		ret
    code ends
    end start
    
    

    运行结果截图:

  • 相关阅读:
    caffe BUG
    Ubuntu安装低版本gcc
    OpenCV的CV :: findHomography运行时错误
    opencv中使用 SURF算法匹配的遇到的问题
    C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法 --转
    SIFI与surf
    opencv复习
    opencv老版本的IplImage使用
    python学习笔记-对象持久化保存与恢复
    Styles and Themes
  • 原文地址:https://www.cnblogs.com/godfriend/p/10981990.html
Copyright © 2011-2022 走看看