屏幕右上角显示时间
;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