⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exp73.asm

📁 一个汇编程序
💻 ASM
字号:
;strcpy——字符串复制及参数传递的技巧
STACK   SEGMENT  STACK
        DW       100H DUP(?)
STACK   ENDS

DATA    SEGMENT
STRING1 DB      'TEST STRCPY(S2,S1)',00H
STRING2 DB      128 DUP(?)
DATA    ENDS

CODE1   SEGMENT
        ASSUME  CS:CODE1,DS:DATA,SS:STACK
MAIN    PROC    FAR
        MOV     AX,DATA
        MOV     DS,AX

        MOV     SI,OFFSET STRING2
        CALL    DispStr

        LEA     SI,STRING1
        LEA     DI,STRING2
        CALL    STRCPY1         ;SI=SourceStr,DI=DestStr
        MOV     SI,OFFSET STRING2
        CALL    DispStr

        CALL    STRCPY2         ;NO ARGUS
        MOV     SI,OFFSET STRING2
        CALL    DispStr

        LEA     DX,STRING1
        PUSH    DX
        LEA     DX,STRING2
        PUSH    DX
        CALL    FAR PTR STRCPY3
        MOV     SI,OFFSET STRING2
        CALL    DispStr

        MOV     AX,4C00H
        INT     21H
MAIN    ENDP
DispStr PROC
        PUSH    SI
        PUSH    DX
        CLD
DISP1:  LODSB
        CMP     AL,0
        JZ      DISP_EXIT
        MOV     AH,2
        INT     21H
        JMP     SHORT DISP1
DISP_EXIT:
        MOV     DL,0DH
        MOV     AH,2
        INT     21H
        MOV     DL,0AH
        MOV     AH,2
        INT     21H
        POP     DX
        POP     SI
        RET
DispStr ENDP
        
STRCPY1 PROC
        CLD
STRCPY_LP1:
        LODSB
        STOSB
        CMP     AL,0
        JNZ     STRCPY_LP1
        RET
STRCPY1 ENDP

STRCPY2 PROC
        PUSH    DI
        PUSH    SI
        LEA     SI,STRING1
        LEA     DI,STRING2

        CLD
STRCPY_LP2:
        LODSB
        STOSB
        CMP     AL,0
        JNZ     STRCPY_LP2
        RET
STRCPY2 ENDP
CODE1   ENDS
CODE2   SEGMENT
        ASSUME  CS:CODE2
STRCPY3 PROC    FAR
        ;@ab    EQU     6
        PUSH    BP
        MOV     BP,SP

        PUSH    DI
        PUSH    SI
        MOV     SI,[BP+6]    ;ARGU1? ARGU2?
        MOV     DI,[BP+8]    ;ARGU2? ARGU1?
        ;MOV     SI,[BP+@ab]
        ;MOV     DI,[BP+@ab+2]
        
        CLD
STRCPY_LP3:
        LODSB
        STOSB
        CMP     AL,0
        JNZ     STRCPY_LP3

        POP     SI
        POP     DI
        POP     BP
        RET     4       ;2*2
STRCPY3 ENDP
CODE2   ENDS
        END MAIN

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -