我是靠谱客的博主 潇洒美女,最近开发中收集的这篇文章主要介绍汇编实现命令行,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 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

最后

以上就是潇洒美女为你收集整理的汇编实现命令行的全部内容,希望文章能够帮你解决汇编实现命令行所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部