标签:14 ah RAM al mov si ax ds 王爽
1) 思路:
- 可以仿照 实验13 的第 3 个例子 的编程思想
- 将要显示的时间格式预先定义好,从 CMOS RAM 中获取到的 BCD 码,将其转换成对应的 ASCII 码字符后,再替换输出格式中的某些字符
- 将 CMOS RAM 中,存放当前时间的地址信息先列出来(年、月、日、时、分、秒 的存放单元) ,方便代码遍历的去获取相关的信息
2) 代码实现1:
文件名:exp14.asm
方法:调用 BIOS 和 DOS 提供的中断例程,显示字符串
assume cs:code
code segment
db 'yy/MM/dd HH:mm:ss', '$'
address: db 9,8,7,4,2,0
start:
mov ax, cs
mov ds, ax
mov si, 0
mov di, offset address ; CMOS RAM 中地址信息的索引
mov cx, 6
s:
push cx
mov al, ds:[di]
out 70h, al
in al, 71h ; 从 CMOS RAM 读取 BCD 码
mov ah, al
mov cl, 4
shr ah, cl
and al, 00001111b
add ah, 30h
add al, 30h ; 将读取到的 BCD 码经过一系列的转换,转为对应的 ASCII 码字符(显存中识别的是 ASCII 码)
mov ds:[si], ah
mov ds:[si+1], al ; 将转换后的 ASCII 码字符放入预先定义好的字符串中
add si, 3
inc di
pop cx
loop s
mov ah, 2 ; 置光标
mov bh, 0 ; 第 0 页
mov dh, 13 ; dh 中放行号
mov dl, 32 ; dl 中放列号
int 10h
mov dx, 0 ; 设定要读取的字符串地址,ds:dx 指向字符串的首地址 data:0
mov ah, 9
int 21h ; 调用 BIOS 和 DOS 提供的中断例程,显示字符串
mov ax, 4c00h
int 21h
code ends
end start
3) 代码实现2:
文件名:exp14-2.asm
方法:将要显示的字符送入到显卡上的显存中,显示字符串
assume cs:code
data segment
db 'yy/MM/dd HH:mm:ss'
db 9,8,7,4,2,0
data ends
code segment
start:
mov ax, data
mov ds, ax
mov si, 0
mov di, 17 ; CMOS RAM 中地址信息的索引
mov cx, 6
s:
push cx
mov al, ds:[di]
out 70h, al
in al, 71h ; 从 CMOS RAM 读取 BCD 码
mov ah, al
mov cl, 4
shr ah, cl
and al, 00001111b
add ah, 30h
add al, 30h ; 将读取到的 BCD 码经过一系列的转换,转为对应的 ASCII 码字符(显存中识别的是 ASCII 码)
mov ds:[si], ah
mov ds:[si+1], al ; 将转换后的 ASCII 码字符放入预先定义好的字符串中
add si, 3
inc di
pop cx
loop s
mov ax, data
mov ds, ax
mov si, 0
mov cx, 17
mov ax, 0b800h
mov es, ax
mov di, 160 * 13 + 32 * 2 ; 将二进制数送到显存缓冲区(显卡上的显存中),显卡会用 ASCII 码的规则解释显存中的内容,会立即在显示器上显示出来
show_str:
mov al, ds:[si]
mov ah, 02h ; 字符属性
mov es:[di], ax
inc si
add di, 2
loop show_str
mov ax, 4c00h
int 21h
code ends
end start
标签:14,ah,RAM,al,mov,si,ax,ds,王爽 来源: https://www.cnblogs.com/wanghuizhao/p/16313137.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。