回覆列表
  • 1 # 愛逗的小夥伴

    ; 本程式透過編譯,執行正確

    Code Segment

    Assume CS:Code,DS:Code

    ; -----------------------------------------

    ; 功能:顯示指定地址(Str_Addr)的字串

    ; 入口:

    ; Str_Addr=字串地址(要求在資料段)

    ; 用法: Output Str_Addr

    ; 用法舉例:Output PromptStr

    Output MACRO Str_Addr

    lea dx,Str_Addr

    mov ah,9

    int 21h

    EndM

    ; -----------------------------------------

    ; 功能:輸出一個字元

    ; 入口:dl=要顯示的字元

    Enter_Chr proc Near

    push ax

    mov ah,02h

    int 21h

    pop ax

    ret

    Enter_Chr endp

    ; -----------------------------------------

    ; 功能:輸出回車換行

    Enter_CTLF proc Near

    push ax

    push dx

    mov ah,02h

    mov dl,0dh

    int 21h

    mov dl,0ah

    int 21h

    pop dx

    pop ax

    ret

    Enter_CTLF endp

    ; -----------------------------------------

    Prompt_Str db "Please input a string: $" ;輸入字串提示資訊

    Start: push cs

    pop ds

    push cs

    pop es ;使資料段、附加段與程式碼段同段

    Output Prompt_Str ;提示輸入字串

    lea dx,Buffer

    mov ah,0ah ;從鍵盤接受一串字元

    int 21h

    CALL Enter_CTLF ;輸出一個回車、換行

    CALL Enter_CTLF ;輸出一個回車、換行

    cld

    lea si,Buffer[1] ;實際輸入的字元個數地址

    mov cl,[si] ;讀入實際輸入的字元個數

    test cl,0ffh

    jz Exit_Proc ;直接回車,沒有輸入任何字元,結束程式,返回作業系統

    xor ch,ch ;cx=實際輸入的字元個數

    add si,cx ;字串尾部地址

    std ;置方向標誌,使變址暫存器自動減量

    Disp_String:lodsb

    mov dl,al

    call Enter_Chr ;顯示一個字元

    loop Disp_String

    Exit_Proc: mov ah,4ch ;結束程式

    int 21h

    Buffer db 100,?

    Code ENDS

    END Start ;編譯到此結束

  • 中秋節和大豐收的關聯?
  • 傳說中的「清華四大導師」是哪幾個人?