dosio.asm

来自「汇编源代码大全」· 汇编 代码 · 共 82 行

ASM
82
字号
	include	dos.inc

LineLen	=	132

	.model	small
	.code
	.data

	public	LineBuf

DosLineBuf	db	LineLen,0
LineBuf		db	LineLen dup(0)

DGroup	group	_TEXT,_DATA

	.code

	public	InBuf, OutCh, InCh, CrLf

InCh:
	DOS	InCharNoEcho
	ret

;Get input line

InBuf:
	mov	dx,offset DGroup:DosLineBuf	;Input buffer
	DOS	InputLine		;Get input line from console

;Convert unquoted input to upper case
	mov	si,offset DGroup:LineBuf
	mov	di,si
CaseChk:
	lodsb
	cmp	al,"a"
	jb	NoConv
	cmp	al,"z"
	ja	NoConv
	sub	al,"a"-"A"		;Convert to upper case
NoConv:
	stosb				;Put it back where we got it
	cmp	al,13			;End of line?
	jz	InDone
	cmp	al,'"'
	jz	QuotScan
	cmp	al,"'"
	jnz	CaseChk
QuotScan:
	mov	ah,al			;Remember which quote mark
KillStr:
	lodsb
	stosb
	cmp	al,13
	jz	InDone
	cmp	al,ah
	jnz	KillStr
	jmp	CaseChk

InDone:
	mov	si,offset DGroup:LineBuf	;Set up SI for command processing

;Output CR/LF sequence

CrLf:
	mov	al,13
	call	OutCh
	mov	al,10

;Console output of character in AL

OutCh:
	push	ax		;Character to output on stack
	push	dx
	and	al,7FH
	mov	dl,al
	DOS	OutChar
	pop	dx
	pop	ax
	ret

end

⌨️ 快捷键说明

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