概述
PProc typedef ptr word ;typedef定义指针类型
CMD STRUC
pstr db 8 dup(?)
pFun PProc 0
CMD ENDS
;结构体定义
data segment
C1 CMD 1 dup(<'Create$', CreateProc>,<'Add$',AddProc>,<'Insert$',InsertProc>,<'Exit$',ExitProc>)
szBuf db 14h,0h,20 dup(?)
data ends
code segment
start:
main proc far ;主函数过程
ASSUME CS:code, DS:data
mov ax,data
mov ds,ax
jmp loop3
loop1:
mov dl,0ah ;换行
mov ah,2h
int 21h
mov dl,0dh ;回车
mov ah,2h
int 21h
loop3: mov dl,">"
mov ah,02h
int 21h ;打印‘>’
lea bx,szBuf
mov dx,bx
mov ah,0ah
int 21h ;输入字符串到szBuf中
lea bx,szBuf
inc bx
mov cl,[bx] ;在后面增加一个
mov ch,0h
add cx,2h ;cx,ch,cl
mov bx,cx
mov byte ptr szbuf[bx],'$' ;增加'$'
mov bx,0h
loop2: cmp C1[bx].pFun,0 ;??
jz loop1
lea di,C1[bx].pstr ;传给strcmp函数,比较是否相等
lea si,szbuf+2
call StrCmp ;寄存器传参给strcmp
add bx,0ah ;偏移?
cmp ah,1h ;检验是否为1
jnz loop2
sub bx,0ah
call C1[bx].pFun ;调用子程序
add bx,0ah
jmp loop1
main endp
CreateProc Proc near ;子程序Create函数
push dx
push di
mov dl,0ah
mov ah,2h
int 21h
mov dl,0dh
mov ah,2h
int 21h ;打印换行回车
mov dx,di
mov ah,09h
int 21h
pop di
pop dx
ret
CreateProc endp
AddProc Proc near ;子程序Add函数
push dx
push di
mov dl,0ah
mov ah,2h
int 21h
mov dl,0dh
mov ah,2h
int 21h
mov dx,di ;由上面传过来的di值,打印字符串
mov ah,09h
int 21h
pop di
pop dx
ret
AddProc endp
InsertProc Proc near ;子程序Insert函数
push dx
push di
mov dl,0ah
mov ah,2h
int 21h
mov dl,0dh
mov ah,2h
int 21h
mov dx,di
mov ah,09h
int 21h
pop di
pop dx
ret
InsertProc endp
ExitProc Proc near ;子程序Exit函数
push ax
mov ah,4ch
int 21h
pop ax
ret
ExitProc endp
Strcmp Proc
push dx
push si
push di
L2: mov dl,ds:[di] ;存放的字符串
mov dh,[si] ;存放的输入的
inc di
inc si
cmp dl,dh
je L1
mov ah,0h
jmp over1
L1: cmp dl,'$'
jne L2
mov ah,1h
over1:
pop di
pop si
pop dx
ret
Strcmp endp
code ends
end start
最后
以上就是潇洒美女为你收集整理的汇编实现命令行的全部内容,希望文章能够帮你解决汇编实现命令行所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复