📄 dosio.asm
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -