显示设置CMOS RAM时钟(汇编代码)
2012-08-30 20:55
288 查看
STRMAIN equ 19 STR1 equ 10 STR2 equ 12 STR3 equ 11 STR4 equ 19 org 7c00h DispStr: mov ax, cs mov es, ax mov bp, Message mov ax, 1301h mov bx, 0007h mov cx, STRMAIN mov dx, 001dh int 10h mov bp, Message + STRMAIN mov ax, 1301h mov bx, 0007h mov cx, STR1 mov dx, 0100h int 10h ;"1.reset pc" mov bp, Message + STRMAIN + STR1 mov ax, 1301h mov bx, 0007h mov cx, STR2 mov dx, 0200h int 10h ;"2.show clock" mov bp, Message + STRMAIN + STR1 + STR2 mov ax, 1301h mov bx, 0007h mov cx, STR3 mov dx, 0300h int 10h ;"3.set clock" Input: mov ah, 0h int 16h cmp al, 49 ;1 je Reboot cmp al, 50 ;2 je DispClock cmp al, 51 ;3 je SetClock jmp Input ;; ;;Reroot ;; Reboot: jmp 0ffffh:0000h ;; ;;Display Clock ;; DispClock: call ReadCMOS CheckExit: mov ah, 01h int 16h je DispClock mov ah, 0h int 16h ;eat input cache cmp al, 1bh ;ESC key jne DispClock ClearScreen: mov ah,6 mov al,0 mov bh,07h mov cx,0 mov dx,184fh int 10h jmp DispStr ReadCMOS: mov ax, cs mov ds, ax mov si, Message + STRMAIN + STR1 + STR2 + STR3 ;ds:si -> TimeStr mov word [ds:si], 3032h ;"20" add si, 2 mov bl, 9 ;year call ReadPort mov byte [ds:si], 2fh ;"/" inc si mov bl, 8 ;month call ReadPort mov byte [ds:si], 2fh ;"/" inc si mov bl, 7 ;day call ReadPort mov byte [ds:si], 20h ;" " inc si mov bl, 4 ;hour call ReadPort mov byte [ds:si], 3ah ;":" inc si mov bl, 2 ;minute call ReadPort mov byte [ds:si], 3ah ;":" inc si mov bl, 0 ;second call ReadPort DispTime: mov ax, cs mov es, ax mov bp, Message + STRMAIN + STR1 + STR2 + STR3 ;es:bp -> TimeStr mov ax, 1301h mov bx, 0007h mov cx, 19 mov dx, 0500h int 10h ret ReadPort: mov al, bl out 70h, al in al, 71h mov ah, al shr ah, 4 and al, 00001111b add ah, 30h add al, 30h xchg ah, al mov word [ds:si], ax add si, 2 ret ;; ;;Set Clock ;; SetClock: call ReadCMOS mov ax, cs mov ds, ax mov si, Message + STRMAIN + STR1 + STR2 + STR3 + STR4 mov byte [ds:si], 0 SetCursor: mov ah, 02h mov bh, 00h mov dh, 05h mov si, Message + STRMAIN + STR1 + STR2 + STR3 + STR4 mov al, [ds:si] mov dl, al shr al, 1 add dl, al add dl, 2 ;dl = [ds:si]/2 + [ds:si] + 2 int 10h WaitKey: mov ah, 0h int 16h cmp al, 'a' ;left je GoLeft cmp al, 'w' je GoUp ;Up cmp al, 'd' je GoRight ;Right cmp al, 's' je GoDown ;Down cmp al, 27 je GoExit ;Esc jmp SetCursor GoLeft: mov al, [ds:si] cmp al, 0 je SetCursor dec al mov byte [ds:si], al jmp SetCursor GoRight: mov al, [ds:si] cmp al, 11 je SetCursor inc al mov byte [ds:si], al jmp SetCursor GetIndex: mov ax, cs mov ds, ax mov si, Message + STRMAIN + STR1 + STR2 + STR3 + STR4 mov al, [ds:si] mov bl, al shr bl, 1 add al, bl add al, 2 mov ah, 0 ;ax: Cursor address mov si, Message + STRMAIN + STR1 + STR2 + STR3 add si, ax mov al, [ds:si] ret GoUp: call GetIndex cmp al, '9' je SetCursor inc al mov [ds:si], al call DispTime jmp SetCursor GoDown: call GetIndex cmp al, '0' je SetCursor dec al mov [ds:si], al call DispTime jmp SetCursor GoExit: mov ah, 02h mov bh, 00h mov dx, 0513h int 10h mov ah, 0h int 16h cmp al, 'y' je SetCMOS cmp al, 'n' je ClearScreen jmp GoExit SetCMOS: ;lack due to limited space(512 bytes) jmp GoExit ;; ;;Program Data ;; Message: db "Welcome to Jerry OS" ;STRMAIN db "1.reset pc" ;STR1 db "2.show clock" ;STR2 db "3.set clock" ;STR3 times 19 db 0 ;STR4 db 0 ;CHAR times 510-($-$$) db 0 dw 0aa55h
相关文章推荐
- 在网页上显示一个会移动的透明时钟的代码。。。
- 友坚4412开发板怎样在source insight中使汇编代码高亮显示?
- 如何在代码片段中设置语法突出显示
- 汇编写启动代码之设置栈和调用C语言
- 周期性执行代码,显示一个时钟,这个时钟显示的是当前的年月日和小时,每秒钟刷新一次
- [Android开发] 代码code设置9.png/9-patch 图片背景后,此view中的TextView等控件显示不正常(常见于listview中)
- 如何设置vc6.0中代码显示的字体为courier new啊
- phpStorm设置显示代码行号
- 关于Eclipse中代码显示显色的设置问题
- [smart210] 通过PLL设置各时钟频率的方法以及代码注释
- VS2013显示行号及显示程序汇编代码
- 如何在代码中设置ImageView的全屏幕显示
- 代码中设置光标显示在EditText文本末尾
- jQuery编辑器KindEditor4.1.4代码高亮显示设置
- 如何用代码设置图层在特定比例尺下显示
- thinkphp关于错误显示的问题 设置代码本身的错误提示 不让框架显示他自己的错误提示操作
- Discuz!7.0 html 权限设置变更说明(升级的7之后很多帖子显示html代码)
- 设置UIButton的文字显示位置、字体的大小、字体的颜色、加粗(特别是字体颜色设置的那句代码。。挺有用)
- 1.5.3.汇编写启动代码之设置栈和调用C语言2
- 设置Eclipse显示代码行数