zoukankan      html  css  js  c++  java
  • 屏幕右上角显示时间

    ;TSR,用于在右上角显示时间
    locals
    .model tiny
    .code
    org 100h
    start: jmp begin
    oldint1c        dd      0
    kg      dw      0
    ts      db      '1978-07-03  12:34:56'
    int1c    proc
            push    ds
            push    es
            push    ax
            push    bx
            push    cx
            push    dx
            push    bp
            push    si
            push    cs
            pop     ds
            mov     ax,kg
            mov     cl,2
            div     cl
            cmp     ah,0
            je      @@1
            jmp     exitint1c
    @@1:    mov     si,offset ts
            mov     bl,16
            mov     ah,4
            int     1ah
            mov     al,ch
            xor     ah,ah
            div     bl
            add     ax,'00'
            mov     [si],ax
            mov     al,cl
            xor     ah,ah
            div     bl
            add     ax,'00'
            mov     [si+2],ax
            mov     al,dh
            xor     ah,ah
            div     bl
            add     ax,'00'
            mov     [si+5],ax
            mov     al,dl
            xor     ah,ah
            div     bl
            add     ax,'00'
            mov     [si+8],ax
            mov     ah,2
            int     1ah
            mov     al,ch
            xor     ah,ah
            div     bl
            add     ax,'00'
            mov     [si+12],ax
            mov     al,cl
            xor     ah,ah
            div     bl
            add     ax,'00'
            mov     [si+15],ax
            mov     al,dh
            xor     ah,ah
            div     bl
            add     ax,'00'
            mov     [si+18],ax
            mov     ah,0fh
            int     10h
            mov     ax,1300h
            mov     bl,70h
            mov     cx,20
            mov     dx,3ch
            push    cs
            pop     es
            mov     bp,offset ts
            int     10h
    exitint1c:       pop     si
            pop     bp
            pop     dx
            pop     cx
            pop     bx
            pop     ax
            pop     es
            pop     ds
            iret
            jmp     cs:[oldint1c]
    int1c    endp
    mark    db      'sl'
    lastbyte label byte
    copyright       db      'Clock for DOS   '
            db      '    Copyright (c) 1994, LS',0dh,0ah,'$'
    begin: push cs
    pop ds
    mov ah,9
    mov dx,offset copyright
    int 21h
            mov     ax,351ch
    int 21h
            add     bx,offset mark-offset int1c
            mov     ax,es:[bx]
            cmp     ax,'ls'
            jz      turn
            mov     ax,351ch
            int     21h
            mov     word ptr oldint1c,bx
            mov     ax,es
            mov     word ptr oldint1c+2,ax
            mov     ax,251ch
            mov     dx,offset int1c
            int     21h
    mov dx,offset lastbyte
    mov cl,4
    shr dx,cl
    inc dx
    mov ax,3100h
    int 21h
    turn:   mov     bx,offset kg
            inc     word ptr es:[bx]
            mov     ax,4c00h
            int     21h
    end start

    %汇编语言显示当前月份

    assume cs:code
    code segment
     start:
            mov al,8
            out 70h,al
            in al,71h   ;从CMOS RAM的8号单元读出当前月份的BCD码。
           
            mov ah,al   ;ah,al都存储着当前月份的BCD码。
            mov cl,4
            shr ah,cl   ;ah中内容逻辑右移4位,则只剩下月份的十位数码。
            and al,00001111b ;al中内容将只剩下月份的个位数码。
           
            add ah,30h
            add al,30h ;得到十进制数码的ASCII码值。
           
            mov bx,0b800h
            mov es,bx
            mov byte ptr es:[160*12+40*2],ah ;显示月份的十位数码
            mov byte ptr es:[160*12+40*2+2],al ;显示月份的个位数码
           
            mov ax,4c00h
            int 21h
    code ends
    end start

    %在屏幕中间显示绿色、绿底白字、白底蓝字的字符串‘welcome to masm!’

    %内存地址空间中,B8000H~BFFFFH共32KB的空间,为80x25(25行,每行80个字符)彩色字符模式的显示缓冲器。向这个地址空间写入数据,写入的数据会在屏幕上显示出来
    每个字符需要占空两个字节大小,地位储存字符的ASCII,高位储存的是字符属性,其中:

    属性字节的格式:

        7  6  5  4  3  2  1  0

    含义  BL  R  G  B  I  R  G  B

    BL:闪烁

    I:高亮

    654表示背景色

    210表示前景色

    属性缓冲页分为8页,每页4K,我们默认是显示第一页,
    第1行内存空间:B8000H~B809FH
    第2行内存空间:B80A0H~B813FH

    第25行内存空间:B8F00H~B8F9FH

    assume
      cs:codesg,ds:datasg
    datasg segment
      db 'welcome to masm!'
    datasg ends
    codesg segment
    
    start:
      mov ax,0b886h ;开始显示位置段地址
      mov ds,ax
      mov ax,datasg ;数据段地址
      mov es,ax
      mov ax,0
      mov ah,02h ;显示属性 绿色:02H,绿底白字:27,白底蓝字:71H
      mov bx,0
      mov bp,0
      mov cx,16
    
    s:
      mov al,es:[bx]
      mov ds:[bp],al
      mov ds:[bp+1],ah
      add bx,1
      add bp,2
      loop s 
    
      mov ax,4c00h
      int 21h
    
    codesg ends
    end start

    https://blog.csdn.net/sanlinux/article/details/5617898?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-11&spm=1001.2101.3001.4242

    人就像是被蒙着眼推磨的驴子,生活就像一条鞭子;当鞭子抽到你背上时,你就只能一直往前走,虽然连你也不知道要走到什么时候为止,便一直这么坚持着。
  • 相关阅读:
    C#关机代码实例详解
    如何设计通用的网站模板
    C# XML解析方式实例解析1
    ASP.NET配置错误页面浅析
    几种常用的C#排序方法简介
    简述C# XML解析方法的特点及应用
    请不要相信
    浅谈ASP.NET Forms验证
    设计友好的错误信息页面
    详解.NET中容易混淆的委托与接口
  • 原文地址:https://www.cnblogs.com/guochaoxxl/p/14426539.html
Copyright © 2011-2022 走看看