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

📄 crtdemo.asm

📁 80X86的一些例子程序
💻 ASM
字号:
;******************************************************
;* 文件名:CrtDemo.asm
;* 创建日期:2001.7.16
;* 作者:陈文尧
;* 功能:测试未来汇编CRT库函数
;* 备注:1.本程序是由Turbo Pascal的一个例子改编而来
;*      2.未来汇编CRT库函数只使用于80*25 16色(模式3)
;******************************************************
include system.inc

;******************************************************
;* 以下代码由汇编专家产生,不要随便修改
;******************************************************
.CODE
	ifdef __COM__
		org	100h
	endif
@@Start:
;------------------------------------------------------
; 初始化数据段
;------------------------------------------------------
	InitDS	cs
;------------------------------------------------------
; 调用主函数
;------------------------------------------------------
	call	main
;------------------------------------------------------
; 正常返回DOS
;------------------------------------------------------
	ReturnDos

;++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+ 主函数,加入实现程序功能的代码
;++++++++++++++++++++++++++++++++++++++++++++++++++++++
main	proc
	call		Initialize
	call		MakeWindow
@Continue:
	LibCall	Getch
	;Function keys
	cmp		al,00h
	jz		@FunKey
	cmp		al,CTRL_C
	jz		@End
	cmp		al,KEY_ENTER
	jz		@Crlf
	cmp		al,KEY_ESC
	jz		@End
	;
      ;本函数与PutChar对应:前者对于窗口;后者对于整个屏幕
      ;
	LibCall	Putch,ax
	jmp		@Continue
@FunKey:
      LibCall	Getch
      cmp		al,ALT_W
      jz		@MakeWindow
      cmp		al,ALT_R
      jz		@RandomText
      cmp		al,ALT_X
      jz		@End
      cmp		al,KEY_UP
      jz		@Up
      cmp		al,KEY_LEFT
      jz		@Left
      cmp		al,KEY_RIGHT
      jz		@Right
      cmp		al,KEY_DOWN
      jz		@Down
      cmp		al,KEY_INS
      jz		@Ins
      cmp		al,KEY_DEL
      jz		@Del
      jmp		@Continue      ;Others,then skip
@MakeWindow:
	call		MakeWindow
	jmp		@Continue
@RandomText:
	call		RandomText
	jmp		@Continue
@Up:
	;
	;__WhereXY是内部函数(由WhereX、WhereY等调用),但效率比WhereX和WhereY高
	;__WhereXY返回值:行在ah或dh,列在al或dl
	;这不符合未来汇编库函数规则(规则见Arith.asm),故作为内部函数
	;
	LibCall	__WhereXY
	dec		ah
	jmp		short @GotoXY
@Left:
	LibCall	__WhereXY
	dec		dx
	jmp		short @GotoXY
@Right:
	LibCall	__WhereXY
	inc		dx
	jmp		short @GotoXY
@Down:
	LibCall	__WhereXY 
	inc		ah
@GotoXY:
	shr		ax,08h
	LibCall	GotoXY,dx,ax
	jmp		@Continue
@Ins:
	LibCall	InsLine
	jmp		@Continue
@Crlf:
	;
      ;本函数与Crlf对应
      ;
	LibCall	PutLn
	jmp		@Continue
@Del:
      LibCall	DelLine
      jmp		@Continue
@End:
      LibCall	Cls
      ;
	ret
main	endp

Initialize proc near
           LibCall		Cls
           LibCall		GotoXY,00,24d
           LibCall		TextBackground,CR_BLACK
           LibCall		TextColor,CR_WHITE
           DisplayMessage	Prompt
           LibCall		Randomize
           ret
Initialize endp

MakeWindow proc near
           ;si=Width,di=Heigh,bx=x,ax=y
           LibCall		Random,80d-02d
           mov			si,ax
           inc			si
           inc			si
           LibCall		Random,25d-02d
           mov			di,ax
           inc			di
           mov			ax,80d
           sub			ax,si
           LibCall		Random,ax
           mov			bx,ax
           mov			ax,24d
           sub			ax,di
           LibCall		Random,ax
           ;bx=x1,ax=y1,si=x2,di=y2
           add			si,bx
           add			di,ax
           LibCall		Window,bx,ax,si,di
           ;Set color and blackground color
           LibCall		Random,08h
           LibCall		TextBackground,ax
           LibCall		Random,07h
           add			ax,09h
           LibCall		TextColor,ax
           ;
           ;本函数与Cls对应
           ;
           LibCall		ClearScreen
           ;
           ret
MakeWindow endp

RandomText proc near
@Next@Rand:
           LibCall		Random,100h-20h
           add			ax,20h
           LibCall		Putch,ax
           LibCall		Kbhit
           or			al,al
           jz			@Next@Rand
           ret
RandomText endp

Prompt	db	'  Ins-InsLine  '
		db	'Del-DelLine  '
		db	1bh,18h,19h,1ah,'-Cursor  '
		db	'Alt+W-Window  '
		db	'Alt+R-Random  '
		db	'Esc-Exit$'
;******************************************************
;* 标志程序结束并指定程序入口
;******************************************************
	end	@@Start

⌨️ 快捷键说明

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