屏幕右上角显示时间

;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

posted @ 2021-02-21 17:24  叕叒双又  阅读(336)  评论(0编辑  收藏  举报