当前位置: 首页 > news >正文

《汇编语言》第14章 端口——实验14 访问CMOS RAM

编程,以“年/月/日 时:分:秒”的格式,显示当前的日期、时间。

注意:CMOS RAM中存储着系统的配置信息,除了保存时间信息的单元外,不要向其的单元写入内容,否则将引起一些系统错误。

方法1:以中断的方式显示

;sy14_1.asmassume cs:code 
code segment 
time db 'yy/mm/dd hh:mm:ss','$'
cmos db 9,8,7,4,2,0
start:	mov ax,cs mov ds,ax mov bx,0mov si,0mov cx,6a:	push cx mov al,cmos[bx]out 70h, al 				;将al送入地址端口70上,分别为9号单元,8号单元。。。0号单元in al,71h 					;从数据端口71h处理分别读出9号单元,8号单元。。。0号单元内容 mov ah,al mov cl,4shr al,cl 					;右移4位and ah,0fh 					;al分成两个表示BCD码值的数据add ax,3030h 				;BCD码+30h=10进制数对应的ASCII码mov cs:[si],ax 				;ASCII码写入time段inc bx add si,3 pop cx loop a 
;名称:BIOS中断(int 10h)
;功能:(ah)=2置光标到屏幕指定位置、(ah)=9在光标位置显示字符
;参数:(al)=字符、(bh)=页数、(dh)=行号、(dl)=例号
;     (bl)=颜色属性、(cx)=字符重复个数mov ah,2 					;置光标mov bh,0 					;第0页mov dh,13					;dh中放行号mov dl,32 					;dl中放例号int 10h 
;名称:DOS中断(int 21h)
;功能:(ah)=9显示用'$'结束的字符串、(ah)=4ch程序返回
;参数:ds:dx指向字符串、(al)=返回值mov dx,0 mov ah,9int 21h ;结束 mov ax,4c00h int 21h code ends 
end start

运行结果:

方法二:以字符串的数据格式显示

;sy14_2.asm   方法2assume cs:codesg 
codesg segment 
start:	mov ax,0mov al,9mov si,0mov cx,6s:	push cx push ax out 70h,al 				;将al送入端口70h,设置写入70h端口的al号单元in al,71h 				;从端口71处理读出单元内容mov ah,al mov cl,4 shr ah,cl and al,00001111b		;al分成两个表示BCD码值的数据add ah,30hadd al,30h 				;BCD码+30h=10进制数对应的ASCII码mov bx,0b800h mov es,bx mov byte ptr es:[160*12+40*2][si],ah 		;显示十位数码mov byte ptr es:[160*12+40*2+2][si],al 		;显示个位数码pop ax dec ax 						;指向前一数据单元jmp s1 s0:	pop cx add si,6 loop s mov ax,4c00h int 21h s1:	cmp ax,10ja s0cmp ax,0je s0cmp ax,6ja s2 						;ax>6,为年/月/日je s3 						;ax=6,为日结尾jb s4 						;ax<6,为时:分:秒s2:	mov byte ptr es:[160*12+40*2+4][si],'/'  		;添加 '/'jmp s0 s3:	sub ax,2 jmp s0 s4:	sub ax,1 mov byte ptr es:[160+12+40*2+4][si],':'        ;添加 ':jmp s0 
codesg ends 
end start 

运行效果:

相关文章:

  • OpenCV C++ 心形雨动画
  • 灰狼优化算法MATLAB实现,包含种群初始化和29种基准函数测试
  • 从零开始:用Tkinter打造你的第一个Python桌面应用
  • JVMTI 在安卓逆向工程中的应用
  • 解决 WebAssembly 错误:Incorrect response MIME type (Expected ‘application/wasm‘)
  • 【已解决】电脑端 划词时出现腾讯元宝弹窗问题
  • SQL 中 NOT IN 的陷阱?
  • 固定ip和非固定ip的区别是什么?如何固定ip地址
  • AI助力Java开发:减少70%重复编码,实战效能提升解析
  • Python多线程与多进程
  • 那些Java 线程中断的实现方式
  • Git的使用技巧
  • qt的智能指针
  • MuLogin浏览器如何使用Loongproxy?
  • 深入解析 Java ClassLoader:揭开 JVM 动态加载的神秘面纱
  • 海康网络摄像头实时取帧转Opencv数组格式(h,w,3),已实现python、C#
  • intense-rp-api开源程序是一个具有直观可视化界面的 API,可以将 DeepSeek 非正式地集成到 SillyTavern 中
  • 【多线程初阶】wait() notify()
  • Spring AI 项目实战(五):Spring AI + DeepSeek + Redis 实现聊天应用上下文记忆功能(附完整源码)
  • OpenCV 自带颜色表实现各种滤镜
  • 仪器网站模板/网络营销的常用方法
  • 资兴做网站公司/手机系统流畅神器
  • 网站开发小结/廊坊关键词排名优化
  • 丰都网站建设价格/广州疫情最新情况
  • 照明网站建设/优化关键词排名外包
  • 网站建设智能优化/企业网站搜索引擎推广方法