?? wordedit.asm
字號(hào):
jmp manu_o
open_0: jmp open_1 ;僅供中間跳轉(zhuǎn)
manu_s:
win 0,70h,2,0,2,10
pos_curse 0,2,0
string manu_2
win 0,0fh,3,0,3,10
pos_curse 0,3,0
string manu_3
red_chr
cmp al,0dh
jz save_0
cmp ah,48h
je manu_o0
cmp ah,50h
je manu_a
jmp manu_hid
open_1: jmp open_2
manu_n1:
jmp manu_n
manu_s0:
win 0,70h,4,0,4,10
pos_curse 0,4,0
string manu_4
jmp manu_s
save_0: jmp save_1 ;僅供中間跳轉(zhuǎn)
manu_a:
win 0,70h,3,0,3,10
pos_curse 0,3,0
string manu_3
win 0,0fh,4,0,4,10
pos_curse 0,4,0
string manu_4
red_chr
cmp ah,1ch
jz save_2
cmp ah,48h
je manu_s0
cmp ah,50h
je manu_e
jmp manu_hid
manu_n2:
jmp manu_n1
new_2: jmp new
save_1: call save
save_2: call saveas
manu_a0:
win 0,70h,5,0,5,10
pos_curse 0,5,0
string manu_5
jmp manu_a
manu_e:
win 0,70h,4,0,4,10
pos_curse 0,4,0
string manu_4
win 0,0fh,5,0,5,10
pos_curse 0,5,0
string manu_5
red_chr
cmp ah,50h
je manu_n2
cmp ah,48h
je manu_a0
cmp ah,1ch
je exit
jmp manu_hid
exit: ;退出程序
call backdisplay
win 0,06h,15,10,17,61
win 0,70h,14,9,16,60
mov dh,15
mov dl,9
mov bh,0
mov ah,2
int 10h
lea dx,message4 ;退出前是否保存?
mov ah,9
int 21h
mov ah,1
int 21h
cmp al,79h
jnz quit
call save_p ;輸入Y則保存,N或其他則退出且不保存
quit: win 0,07h,0,0,24,79
pos_curse 0,0,0
mov ah,4ch
int 21h
pop bx
ret
menu_show endp
;------------------------------新建文件-------------------------------------
new proc near
push ax
push cx
push bx
push dx
ds1: ;打開新檔案前是否儲(chǔ)存舊檔案?
win 0,07h,15,10,17,61
win 0,70h,14,9,16,60
mov dh,15
mov dl,9
mov bh,0
mov ah,2
int 10h
lea dx,message4
mov ah,9
int 21h
mov ah,1
int 21h
cmp al,79h ;輸入Y則保存,N則不保存,其他字符無(wú)效
je sa
cmp al,6eh
je nsa
jmp ds1
sa:
call save_p
nsa:
pos_get ;提示輸入新檔案名
push dx
call backdisplay
win 0,06h,15,10,17,61
win 0,70h,14,9,16,60,
mov dh,15
mov dl,9
mov bh,0
mov ah,2
int 10h
lea dx,message1
mov ah,9
int 21h
pos_get
mov tempLine,dl ;保存菜單中第一個(gè)待輸入實(shí)際字符的位置
mov bx,0
all:
mov ah,0 ;輸入一個(gè)字符
int 16h
cmp ah,1ch ;回車
je alll
cmp ah,0eh ;退格
je backA
mov ah,2
mov dl,al
int 21h
pos_get
cmp dl,60 ;判斷字符輸入是否已達(dá)最大值
je tempA1
mov path[bx],al
inc bx
jmp all
backA:
pos_get
cmp dl,59 ;判斷光標(biāo)不否到窗口末端
je tempA3
cmp dl,tempLine ;判斷光標(biāo)是否到達(dá)輸入窗口的前端
jbe tempA2
dec dl
jmp tempA2
tempA3: ;光標(biāo)在窗口末端時(shí),刪除光標(biāo)當(dāng)前的字符
mov ah,2
mov dl,00
int 21h
pos_get
dec dl
dec dl
tempA2: ;刪除光標(biāo)前一個(gè)字符
pos_curse 0,dh,dl
mov ah,2
mov dl,00
int 21h
pos_get
dec dl
pos_curse 0,dh,dl
jmp all
tempA1: ;光標(biāo)向前移一位
pos_get
dec dl
pos_curse 0,dh,dl
jmp all
alll: ;清屏,光標(biāo)置頂,準(zhǔn)備開始新的檔案輸入
win 0,3eh,15,9,17,61
pop dx
pos_curse 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
win 0,1fh,1,0,23,79
mov dh,1
mov dl,0
mov bh,0
mov ah,2
int 10h
pop dx
pop bx
pop cx
pop ax
jmp char_get
new endp
open_2: jmp open
;-------------------------另存為文件---------------------------------------
saveas proc near
push ax
push bx
push cx
push dx
win 0,3eh,1,0,6,10
call backdisplay
win 0,06h,15,10,17,61
win 0,70h,14,9,16,60,
mov dh,15
mov dl,9
mov bh,0
mov ah,2
int 10h
lea dx,message5
mov ah,9
int 21h
pos_get ;獲取光標(biāo)當(dāng)前位置
mov tempLine,dl ;保存菜單中第一個(gè)待輸入實(shí)際字符的位置
mov bx,0
bll:
mov ah,0 ;輸入一個(gè)字符
int 16h
cmp ah,1ch ;回車
je blll
cmp ah,0eh ;退格
je backB
mov ah,2
mov dl,al
int 21h
pos_get
cmp dl,60 ;判斷字符輸入是否已達(dá)最大值
je tempB1
mov path[bx],al
inc bx
jmp bll
backB:
pos_get
cmp dl,59 ;判斷光標(biāo)不否到窗口末端
je tempB3
cmp dl,tempLine ;判斷光標(biāo)是否到達(dá)輸入窗口的前端
jbe tempB2
dec dl
jmp tempB2
tempB3: ;光標(biāo)在窗口末端時(shí),刪除光標(biāo)當(dāng)前的字符
mov ah,2
mov dl,00
int 21h
pos_get
dec dl
dec dl
tempB2: ;刪除光標(biāo)前一個(gè)字符
pos_curse 0,dh,dl
mov ah,2
mov dl,00
int 21h
pos_get
dec dl
pos_curse 0,dh,dl
jmp bll
tempB1: ;光標(biāo)向前移一位
pos_get
dec dl
pos_curse 0,dh,dl
jmp bll
blll:
pos_get
push dx
win 0,1fh,1,0,23,79
call backdisplay
pop dx
pos_curse 0,dh,dl
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
call backdisplay
pop dx
pop cx
pop bx
pop ax
jmp char_get
saveas endp
;--------------------------打開文件-----------------------------------------
open proc near
win 0,1fh,1,0,23,79 ;清屏
call backdisplay
push ax
push bx
push cx
push dx
;input:
win 0,06h,13,14,16,66
win 0,70h,12,13,15,65
pos_curse 0,13,18
string message3 ;顯示Message3
pos_get
mov tempLine,dl ;保存菜單中第一個(gè)待輸入實(shí)際字符的位置
mov bx,0
cll:
mov ah,0 ;輸入一個(gè)字符
int 16h
cmp ah,1ch ;回車
je clll
cmp ah,0eh ;退格
je backC
mov ah,2
mov dl,al
int 21h
pos_get
cmp dl,65 ;判斷字符輸入是否已達(dá)最大值
je tempC1
mov path[bx],al
inc bx
jmp cll
backC:
pos_get
cmp dl,64 ;判斷光標(biāo)不否到窗口末端
je tempC3
cmp dl,tempLine ;判斷光標(biāo)是否到達(dá)輸入窗口的前端
jbe tempC2
dec dl
jmp tempC2
tempC3: ;光標(biāo)在窗口末端時(shí),刪除光標(biāo)當(dāng)前的字符
mov ah,2
mov dl,00
int 21h
pos_get
dec dl
dec dl
tempC2: ;刪除光標(biāo)前一個(gè)字符
pos_curse 0,dh,dl
mov ah,2
mov dl,00
int 21h
pos_get
dec dl
pos_curse 0,dh,dl
jmp cll
tempC1: ;光標(biāo)向前移一位
pos_get
dec dl
pos_curse 0,dh,dl
jmp cll
clll:
win 0,1fh,1,0,23,79
lea dx,path
mov ah,3dh
mov al,0
int 21h ;打開文件
mov handle,ax ;成功:AX=文件代號(hào);失敗:AX=錯(cuò)誤碼
;cmp handle,01h
;jl yeah
; cmp handle,13h
;ja nomatch ;沒有找到路徑則顯示message6
yeah:
lea dx,buffer
mov bx,handle
mov cx,2000
mov ah,3fh
int 21h ;讀文件或設(shè)備
pos_curse 0,1,0
mov cx,1000
sub bx,bx
replay:
mov dl,buffer[bx]
inc bx
mov ah,2
int 21h
loop replay ;從緩沖區(qū)讀出文件內(nèi)容
mov bx,handle
mov ah,3eh
int 21h ;關(guān)閉文件
pos_curse 0,1,0
mov cx,10
mov bx,0
cleapath_3:
mov bl,0
mov path[bx],bl
loop cleapath_3
pop dx
pop cx
pop bx
pop ax
jmp char_get
;nomatch:
; win 0,06h,13,14,16,65
; win 0,70h,12,13,15,66
; pos_curse 0,13,18
; string message3 ;顯示Message3
; jmp input
open endp
;------------------------------保存文件----------------------------------------
save proc near
push ax
push bx
push cx
push dx
pos_get
push dx
win 0,3eh,1,0,6,10
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -