⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yq.asm

📁 用来显示字符,可以用不同的颜色显示
💻 ASM
字号:
 data segment
       freq  dw 980,238,123
             dw -1
       time  dw 20,500,20
            
       car  db  222         ;奋斗ю符图形表
       DB  5ah,222,0,0
       DB  5ah,222,0,1
       DB  5ah,222,1,-1
       DB  5ah,222,0,1
       DB  5ah,222,1,-7
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,0,1;
       DB  5ah,222,1,-9
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,0,1;
       DB  5ah,222,1,-4;11
       DB  5ah,222,0,1
       DB  5ah,222,0,3
       DB  5ah,222,0,1
       DB  5ah,222,1,-6;12
       DB  5ah,222,0,1
       DB  5ah,222,0,5
       DB  5ah,222,0,1
       DB  5ah,222,1,-8;13
       DB  5ah,222,0,1
       DB  5ah,222,0,7
       db  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,1,-12;14
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,0,1
       DB  5ah,222,1,-15;15
       DB  5ah,222,0,1
       DB  5ah,222,0,2
       DB  5ah,222,0,1
       DB  5ah,222,0,3
       DB  5ah,222,0,1
       DB  5ah,222,0,3
       DB  5ah,222,0,1
       db  5ah,222,0,2
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,1,-17;16
       db  5ah,222,0,1
       db  5ah,222,0,3
       db  5ah,222,0,1
       db  5ah,222,0,3
       db  5ah,222,0,1
       db  5ah,222,0,3
       db  5ah,222,0,1
       db  5ah,222,1,-9;17
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,1,-9;18
       db  5ah,222,0,1
       db  5ah,222,0,3
       db  5ah,222,0,1
       db  5ah,222,0,3
       db  5ah,222,0,1
       db  5ah,222,1,-9;19
       db  5ah,222,0,1
       db  5ah,222,0,3
       db  5ah,222,0,1
       db  5ah,222,0,3
       db  5ah,222,0,1
       db  5ah,222,1,-9;20
       db  5ah,222,0,1
       db  5ah,222,0,3
       db  5ah,222,0,1
       db  5ah,222,0,3
       db  5ah,222,0,1
       db  5ah,222,1,-9;21
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,1,-9;22
       db  5ah,222,0,1
       db  5ah,222,0,7
       db  5ah,222,0,1;奋
       db  5ah,222,-15,15;斗
       db  5ah,222,1,-4
       db  5ah,222,0,1
       db  5ah,222,0,3;9
       db  5ah,222,1,-3
       db  5ah,222,0,1
       db  5ah,222,0,2
       db  5ah,222,1,-2;10
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,1,-6;11
       db  5ah,222,0,1
       db  5ah,222,0,4
       db  5ah,222,0,1
       db  5ah,222,1,-5;12
       db  5ah,222,0,1
       db  5ah,222,0,4
       db  5ah,222,1,-4;13
       db  5ah,222,0,1
       db  5ah,222,0,3
       db  5ah,222,1,-3;14
       db  5ah,222,0,3
       db  5ah,222,1,0;15
       db  5ah,222,1,-8;16
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,1,-6;17
       db  5ah,222,1,0;18
       db  5ah,222,1,0
       db  5ah,222,1,0
       db  5ah,222,1,0
       db  5ah,222,1,0;斗
       db  5ah,222,-12,10;开始 
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,4
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,1,-9;19
       db  5ah,222,0,1
       db  5ah,222,0,4
       db  5ah,222,0,1
       db  5ah,222,0,3
       db  5ah,222,0,1
       db  5ah,222,1,-10;20
       db  5ah,222,0,1
       db  5ah,222,0,3
       db  5ah,222,0,1
       db  5ah,222,0,5
       db  5ah,222,0,1
       db  5ah,222,1,-11;21
       db  5ah,222,0,1
       db  5ah,222,0,3
       db  5ah,222,0,1
       db  5ah,222,0,5
       db  5ah,222,0,1
       db  5ah,222,1,-11;22
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,5
       db  5ah,222,0,1
       db  5ah,222,1,-11;23
       db  5ah,222,0,1
       db  5ah,222,0,3
       db  5ah,222,0,1
       db  5ah,222,0,5
       db  5ah,222,0,1
       db  5ah,222,1,-11;24
       db  5ah,222,0,1
       db  5ah,222,0,3
       db  5ah,222,0,1
       db  5ah,222,0,5
       db  5ah,222,0,1
       db  5ah,222,1,-11;25
       db  5ah,222,0,1
       db  5ah,222,0,4
       db  5ah,222,0,1
       db  5ah,222,0,3
       db  5ah,222,0,1
       db  5ah,222,1,-11;26
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,4
       db  5ah,222,0,1
       db  5ah,222,0,1
       db  5ah,222,0,1
char_cnt dw ?
pointer  dw ?
line_on  db ?
col_on   db ?
data     ends
stack  segment
     db  2000 dup (0)
stack  ends
code segment
     assume cs:code,ds:data
main proc far
     push ds
     sub ax,ax
     push ax
     mov ax,data          ;初始化DS
     mov ds,ax
     mov ah,0             ;设置300*200彩色图形方式
     mov al,3
     int 10h
    A1: call clear_screen    ;清屏
     lea di,car           ;di指向字符图形表
     mov dh,2            ;从第5行第5列位置开始
     mov dl,15            ;显示汽车
      call move_shape
 
         mov ah,9
         int 21h
         mov ah,08
         int 21h
         cmp al,'q'
         jz exit
         jmp A1
  exit:mov ah,4ch
     int 21h
     ret
main endp
clear_screen proc near    ;清屏子程序
     push ax              ;保护寄存器
     push bx
     push cx
     push dx
     mov ah,6             ;屏幕上卷功能
     mov al,0
     mov ch,0             ;左上角行号
     mov cl,0             ;左上角列号
     mov dh,0          ;右下角行号
     mov dl,0           ;右下角列号
     mov bh,7             ;卷入行属性
     int 10h              ;调用显示功能
     pop dx               ;恢复寄存器
     pop cx
     pop bx
     pop ax
     ret                  ;返回主程序
clear_screen endp
move_shape proc near
     push ax
     push bx
     push cx
     push dx
     push di
     
     mov ah,0fh           ;取当前显示方式
     int 10h
     sub ch,ch            ;清除寄存器CX的高字节
     mov cl,[di]         ;CL放循环次数
     inc di               ;di指向字符表的第一个字符
     mov char_cnt,cx      ;保存循环次数
     mov pointer,di
     mov line_on,dh
     mov col_on,dl
plot_next:
     add dh,[di+2]        ;改变行列指针
     add dl,[di+3]
     cmp dl,150   ;出屏否?

     jb mov_crsr
     call erase
     pop di
     pop dx
     pop cx
     pop bx
     pop ax
     ret
mov_crsr:
     mov ah,2             ;移动光标位置           
     int 10h
     mov al,[di]
     mov bl,[di+1]        ;取字符值及属性
     push cx
     mov cx,1
     mov ah,09            ;显示字符
     int 10h
     pop cx
     add di,4             ;di指向下一个字符
     loop plot_next
     call mu
     call dly_qrtr        ;调用延时子程序
     call erase           ;调用擦除子程序
     jmp  plot_next
move_shape endp
erase proc near           ;擦除子程序
     mov cx,char_cnt
     mov di,pointer
     mov dh,line_on
     mov dl,col_on
erase_next:
     add dh,[di+2]
     add dl,[di+3]
     mov ah,2
     int 10h
     mov al,[di]
     mov bl,0
     push cx
     mov cx,1
     mov ah,9
     int 10h
     pop cx
     add di,4
     loop erase_next
     mov cx,char_cnt
     mov di,pointer
     mov dh,line_on
     inc col_on
     mov dl,col_on
     ret
erase endp
dly_qrtr proc near         ;延时子程序
     push cx
     push dx
     mov dx,500
 
 d11:mov cx,8000
 d12:loop d12
     dec dx
     jnz d11
     pop dx
     pop cx
     ret
dly_qrtr endp

mu proc near 
mov ax,data 
mov ds,ax 
mov si,offset freq 
mov di,offset time 
l1: mov cx,[si] 
cmp cx,-1 
je l23 
mov bx,[di] 
call gensound 
add si,2 
add di,2 
jmp l1 
l23: 
ret
mu endp 

gensound proc near 
push dx 
mov al,0b6h 
out 43h,al 
mov dx,08h 
mov ax,3208h 
div cx 
out 42h,al 
mov al,ah 
out 42h,al 
in al,61h 
mov ah,al 
or al,3 
out 61h,al 
wait1: mov cx,600
call waitf 
dec bx 
jnz wait1 


mov al,ah 
out 61h,al 
pop dx 
ret 
gensound endp 

waitf proc near 
push ax 
waitf1: 
in al,61h 
and al,10h 
cmp al,ah 
je waitf1 
mov ah,al 
loop waitf1 
pop ax 
ret 
waitf endp 
code ends
     end main


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -