汇编读取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

运行结果截图:

原文地址:https://www.cnblogs.com/godfriend/p/10981990.html

时间: 2024-10-09 03:17:30

汇编读取CMOS RAM端口程序的相关文章

汇编试验十四:访问CMOS RAM

CMOS RAM 芯片的特征: 包含一个时钟和一个有128个存储单元的RAM存储器. 该芯片靠电池供电.所以,关机后其内部的时钟仍可正常工作,RAM中的信息不丢失. 128个字节的RAM中,内部时钟占用 0~0dh  单元来保存时间信息,其余大部分单元用于保存系统配置信息,供系统启动时BIOS程序读取. 该芯片内部有两个端口,端口地址为 70h 和 71h .CPU 通过这两个端口来读写CMOS RAM. 70h 为地址端口存放要访问的 CMOS RAM 单元的地址: 71h  为数据端口,存放

理解计算机的工作方式——通过汇编一个简单的C程序并分析汇编代码

Author: 翁超平 Notice:原创作品转载请注明出处 See also:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000  本文通过汇编一个简单的C程序,并分析汇编代码,来理解计算机是如何工作的.整个过程都在实验楼上完成,感兴趣的读者可以通过上面给出的课程链接自行动手学习.以下是实验过程和结果. 一.操作步骤 1.首先在通过vim程序建立main.c文件.代码如下: 图1 2.使用如下命令将main.c编

32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数

32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数 (如果想看所有代码,请下载课堂资料,里面有所有代码,这里会讲解怎么生成一个窗口程序) 一丶32位汇编编写Windows窗口程序 首先我们知道32位汇编是可以调用Windows API的,那么今天我们就调用windowsAPI来写一个窗口程序 如果你有windows开发知识,那么就很理解了,如果没有,那么跟着我写,跟着步骤去写,那么也可以写出来 首先我们要编写一个窗口程序(使用SDKAPI编写)有几个步骤 1.设计窗口类 2.注

Java读取word文件的程序演示

完成对office文件的操作可以借助apache.poi包(我用的poi-3.10-FINAL),导入相应的jar包(最好全部导入) 下面的程序演示了一些操作word的过程,详细的函数功能可以查看此包的官方API import java.io.*; import org.apache.poi.POIXMLDocument; import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.extractor.*; import

java例题_47 读取 7 个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*

1 /*47 [程序 47 打印星号] 2 题目:读取 7 个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*. 3 */ 4 5 /*分析 6 * 1.多次读取---for循环 7 * 2.输出多个不确定数量的*-----for循环 8 * ====>两层for循环 9 * */ 10 11 package homework; 12 13 import java.util.Scanner; 14 15 public class _47 { 16 17 public static v

汇编读取PCI配置空间

学习PCI:http://blog.sina.com.cn/s/articlelist_1685243084_3_1.html 1 ;------------------------------------------------ 2 ; 3 ;程序功能: 读取PCI 配置信息,存入文件zpci_config.txt 4 ; 通过端口CF8h / CFCh 来读取 5 ;运行环境: DOS + MASM5 6 ;时间: 2015/08/25 7 ; 8 ;--------------------

实现常用的配置文件/初始化文件读取的一个C程序

在编程中,我们经常会遇到一些配置文件或初始化文件.这些文件通常后缀名为.ini或者.conf,可以直接用记事本打开.里面会存储一些程序参数,在程序中直接读取使用.例如,计算机与服务器通信,服务器的ip地址,段口号可以存储于ini文件中.这样如果我想换另外一台服务器时,直接将ini文件中的ip地址改变即可,程序源代码不需要做任何修改. 本文将分享一段常用代码,用于读取配置文件中的信息.本文中的代码为C语言编写,在ubuntu 12.04 linux系统中调试没有问题.具体操作如下: 1. 首先用记

汇编读取SMBIOS

学习SMBIOS:http://blog.csdn.net/zhoudaxia/article/details/5919699 1 ;------------------------------------------------- 2 ; 3 ;程序功能: 读取SMBIOS 4 ;运行环境: DOS + MASM5 5 ;时间: 2015/08/27 6 ; 7 ;-------------------------------------------------- 8 ; 9 echoch m

大数据-将MP3保存到数据库并读取出来《黑马程序员_超全面的JavaWeb视频教程vedio》day17

黑马程序员_超全面的JavaWeb视频教程vedio\黑马程序员_超全面的JavaWeb教程-源码笔记\JavaWeb视频教程_day17-资料源码\day17_code\day17_1\ 大数据 目标:把mp3保存到数据库中! 在my.ini中添加如下配置! max_allowed_packet=10485760 1 什么是大数据 所谓大数据,就是大的字节数据,或大的字符数据.标准SQL中提供了如下类型来保存大数据类型: 类型 长度 tinyblob 28--1B(256B) blob 216