?? text.asm
字號:
window macro a1,a2,a3,a4,a5,a6 ;建立窗口
mov ah,06h
mov al,a1
mov bh,a2
mov ch,a3
mov cl,a4
mov dh,a5
mov dl,a6
int 10h
endm
curPosition macro op1,op2,op3 ;定義光標位置
mov ah,2
mov bh,op1
mov dh,op2
mov dl,op3
int 10h
endm
getPosition macro ;顯示光標位置
mov ah,03h
mov bh,0
int 10h
endm
data segment ;定義數據段
handle dw ?
message1 db ' Please input file name:','$'
message2 db ' Please input save file name:','$'
message3 db ' Please input open file name:','$'
path db 50 dup(0),'$'
buffer db 2000 dup(?)
line db ?
row db ?
data ends
code segment
main proc far ;主程序
assume cs:code,ds:data
start:
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
getChar: ;讀字符
call get_char
get_char proc near ;定義功能鍵
getPosition
mov row,dh
mov line,dl
first:
curPosition 0,row,line
mov ah,0
int 16h ;從鍵盤讀字符 ah=掃描碼 al=字符碼
lea dx,buffer
mov buffer[bx],al
inc bx
cmp ah,3bh ;F1
jz new
cmp ah,3ch ;F2
jz open
cmp ah,3dh ;F3
jz quit
cmp ah,48h ;上
jz up
cmp ah,50h ;下
jz down
cmp ah,4bh ;左
jz left
cmp ah,4dh ;右
jz right
cmp ah,1ch ;回車
jz enter
call function
mov ah,2
mov dl,al
int 21h
ret
left: ;光標左移
getPosition
mov row,dh
mov dl,line
cmp line,0
jnz direct
mov line,79
dec row
cmp row,0
je stop2
jmp first
stop2:
mov row,1
jmp first
direct:
dec line
jmp first
right: ;光標右移
getPosition
mov row,dh
mov dl,line
cmp line,79
jnz direct2
mov line,0
inc row
cmp row,24
je returns1
jmp first
direct2:
inc line
jmp first
up: ;上移光標
getPosition
mov row,dh
mov dl,line
dec row
cmp row,0
je stop1
jmp first
stop1:
mov row,1
jmp first
down: ;下移光標
getPosition
mov row,dh
mov dl,line
inc row
cmp row,24
je stop3
jmp first
stop3:
mov row,23
jmp first
returns1:
jmp returns
enter: ;回車換行
getPosition
mov row,dh
mov line,dl
inc row
cmp row,24
je returns
mov line,0
jmp first
returns:
mov row,24
mov line,0
jmp first
new: ;新建文件
getPosition
push dx
window 0,07h,15,10,17,61
window 0,24h,14,9,16,60,
mov dh,15
mov dl,9
mov bh,0
mov ah,2 ;定義光標位置繼而顯示message1字符串
int 10h
lea dx,message1
cmp al,0dh
mov ah,9
int 21h
mov bx,0
x1:
mov ah,1
int 21h
cmp al,0dh
je x2
mov path[bx],al
inc bx
jmp x1
x2:
window 0,3fh,15,9,17,61
pop dx
curPosition 0,dh,dl
lea dx,path
mov ah,3ch
mov cx,00
int 21h
mov handle,ax
mov bx,ax
mov ah,3eh
int 21h
window 0,3eh,1,0,23,79
mov dh,1
mov dl,0
mov bh,0
mov ah,2
int 10h
jmp start
open: ;打開文件
window 0,07h,15,10,17,61
window 0,24h,14,9,16,60
mov dh,15
mov dl,9
mov bh,0
mov ah,2
int 10h
lea dx,message3
mov ah,9
int 21h
mov bx,0
y1:
mov ah,1
int 21h
cmp al,13
je y2
mov path[bx],al
inc bx
jmp y1
y2:
window 0,3eh,1,0,23,79
lea dx,path
mov ah,3dh
mov al,0
int 21h
mov handle,ax
lea dx,buffer
mov bx,handle
mov cx,2000
mov ah,3fh
int 21h
window 0,3eh,1,23,1,79
mov dh,1
mov dl,0
mov bh,0
mov ah,2
int 10h
mov cx,1000
sub bx,bx
replay:
mov dl,buffer[bx]
inc bx
mov ah,2
int 21h
loop replay
mov bx,handle
mov ah,3eh
int 21h
mov dh,1
mov dl,0
mov bh,0
mov ah,2
int 10h
mov cx,10
mov bx,0
cleapath_3:
mov bl,0
mov path[bx],bl
loop cleapath_3
jmp start
quit: ;退出
window 0,07h,15,10,17,61
window 0,24h,14,9,16,60,
mov dh,15
mov dl,9
mov bh,0
mov ah,2
int 10h
lea dx,message2
mov ah,9
int 21h
mov bx,0
z1:
mov ah,1
int 21h
cmp al,0dh
je z2
mov path[bx],al
inc bx
jmp z1
z2:
window 0,07h,15,10,17,61
window 0,3eh,14,9,16,60
lea dx,path
mov ah,3ch
mov cx,00
int 21h
mov handle,ax
lea dx,buffer
mov bx,handle
mov cx,2000
mov ah,40h
int 21h
mov bx,handle
mov ah,3eh
int 21h
window 0,07h,0,0,24,79
mov ah,4ch
int 21h
ret
get_char endp
main endp
function proc near ;功能鍵子程序
next:
cmp ah,47h ;home
jz home
cmp ah,4fh ;end
jz _end
cmp ah,0eh ;backspace
jz back_space
cmp ah,53h
jz del
ret
home: ;HOME鍵的功能
getPosition
mov row,dh
mov line,0
jmp first
_end: ;END鍵的功能
getPosition
mov row,dh
mov line,79
jmp first
back_space: ;退格鍵的功能
getPosition
mov row,dh
mov line,dl
cmp line,0
je stop
dec line
jmp ab
stop:
mov line,0
ab:
getPosition 0,row,line
mov ah,2
mov dl,00
int 21h
jmp first
del: ;DEL刪除
getPosition
mov row,dh
mov line,dl
dec line
getPosition 0,row,line
mov ah,2
mov dl,00
int 21h
inc line
jmp first
cm:
cmp line,00
jz pos_cm
pos_cm:
curPosition 0,0,0
jmp first
function endp
code ends
end start ;結束
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -