|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 leader4 于 2018-5-30 17:52 编辑
虽然越来越难了,但感觉反而是写的越来越顺利了。
甚至翻回看之前自己遇到的难点,也都算不上是难点了。
总算感觉有一点入了编程的门了。
这个实验虽然仍旧没有一次编译通过,但大思路是没有任何问题的~
而且在编写过程中,发现需要写大量重复代码时,意识到可以使用之前例题里的方法减少书写量,一下大大缩减了代码量
这种会了的感觉真爽~
- ;要求:以“年/月/日 时:分:秒”的格式显示当前日期。
- ; 9 8 7 4 2 0
- ;思路:从CMOS RAM取数据放入内存,从内存统一写入显存
- ;
- assume cs:code
- table segment
- db 'yy/mm/dd hh:mm:ss',0
- table ends
- code segment
- site: db 9,8,7,4,2,0
- start:
- mov ax,cs
- mov ds,ax
- mov si,offset site
- mov ax,table
- mov es,ax
- mov di,0
- mov cx,6
- ok:
- ;取数据
- push cx
- mov al,[si]
- out 70h,al
- in al,71h
- ;加工数据
- ;十位
- mov ah,al
- mov cl,4
- shr ah,cl
- ;个位
- and al,00001111b
- ;ascii化
- add ah,30h
- add al,30h
- ;写入内存
- mov es:[di],ah
- mov es:[di+1],al
- inc si
- add di,3
- pop cx
- loop ok
- ;写入显存
- mov ax,0b800h
- mov ds,ax
- mov si,0
- mov di,0
- lp_start:
- mov cx,es:[di]
- jcxz lp_end
- mov al,es:[di]
- mov byte ptr [si+160*12+30*2],al
- mov al,es:[di+1]
- mov byte ptr [si+160*12+30*2+2],al
- add di,2
- add si,4
- jmp short lp_start
- lp_end:
- mov ax,4c00h
- int 21h
- code ends
- end start
复制代码 |
|