编程,用加法和移位指令计算ax=ax10
提示,ax10=ax2+ax8
1 | mov al,00000001b |
CMOS RAM中,存放着当前的时间:年、月、日、时、分、秒。这6个信息的长度都为1个字节,存放单元为:
秒:0 分:2 时:4 日:7 月:8 年:9,这些数据以BCD码的方式存放
编程,在屏幕中间显示当前的月份
分析,这个程序主要做以下两部分工作
1.从CMOS RAM的8号单元读出当前月份的BCD码,应首先向地址端口70h写入要访问的单元的地址
mov al,8
out 70h,al
然后从数据端口71h中取得指定单元的数据
in al,71h
2.将BCD码表示的月份以十进制的形式显示到屏幕上
BCD码值 = 十进制数码值,则BCD码值+30h=十进制对应的ASCII码
从CMOS RAM的8号单元读出的一个字节中,包含了用两个BCD码表示的两位十进制数
高4位BCD码表示十位,低4位BCD码表示个位。
比如 00010100b表示 14
我们需要进行两步工作
将CMOS RAM的8号单元中读出一个字节,分为两个表示BCD码值的数据
mov ah,al ;al中为从CMOS RAM的8号单元中读出数据
mov cl,4
shr ah,cl ;ah中为月份的十位数码值
and al,00001111b ;al中为月份的个数数码值
显示ah+30h 和 al+30h 对应的ASCII码字符
1 | assume cs:code |
编程,以“年/月/日 时:分:秒”的格式,显示当前的日期、时间
注意:CMOS RAM 中存储着系统的配置信息,除了保存时间信息的单元外,不要向其他单元写入内容,否则将引起一些系统错误
在CMOS RAM中,存放着当前的时间:年、月、日、时、分、秒。这6个信息的长度为1个字节,存放单元为:
秒:0 分:2 时:4 日:7 月:8 年:9
0000 0000 0000 0010 0000 0100 0000 0111 0000 1000 0001 0000
1 | assume cs:code,ds:data,ss:stack |