回覆列表
  • 1 # 使用者928021938244

    ;同學我幫你完成了你的程式,編譯透過,可1、從鍵盤輸入一個字串(串長度小於100個字元),統計其串的長度後輸出該串,需要說明的是最後輸出的字串長度是十六進位制的,不過這個關係不大。呵呵

    ;加點分哈~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

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

    ;宏定義

    displayMACROstring

    movah,09h

    leadx,string

    int21h

    ENDM

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

    ;********************************資料段

    datasegment

    arraydb100dup(0);陣列開闢空間

    string1db"PleaseinputastringendedwithENTER:$";字串以$結束

    string2db"Thelengthofthestring=$"

    string3db"Thestringyouinputedis:$"

    crlfdb13,10,13,10,"$";13回車,10換行

    dataends

    ;**********************************

    ;**********************************程式碼段

    codesegment

    assumeds:data,cs:code;段對應關係的說明

    mainprocfar;far子程式呼叫時的引數

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

    start:

    pushds

    subax,ax;清零

    pushax;壓棧

    movax,data;將資料傳送入資料段

    movds,ax

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

    ;主程式開始

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

    ;顯示"PleaseinputastringendedwithENTER:$"的內容

    displaystring1

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

    ;鍵盤輸入字串以回車鍵結束

    movbx,offsetarray;設定基址

    movdi,0

    input:

    movah,01h

    int21h

    cmpal,20h;比對空格鍵不能輸入空格

    jeinput

    cmpal,0dh;和"回車鍵"進行比較

    jenext

    mov[bx+di],al;儲存輸入字元

    incdi

    movcx,di;用cx儲存di值

    cmpdi,64h

    jbeinput

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

    ;輸出字串的長度

    next:

    displaycrlf

    displaystring2

    movax,cx

    movbl,10h

    divbl;除以10

    movbh,ah;將餘數暫存起來

    addal,30h

    movdl,al;商

    movah,02h

    int21h

    addbh,30h

    movdl,bh;餘數

    movah,02h

    int21h;說明:最後結果兩位數是十六進位制的

    movdl,"H"

    movah,02h

    int21h

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

    ;輸出字串

    displaycrlf

    displaystring3

    movbx,offsetarray;設定基址

    movsi,0

    again:

    moval,[bx+si]

    movdl,al

    movah,02h

    int21h

    incsi

    cmpsi,cx

    jbeagain

    ret

    mainendp;主函式結束

    ;********************************************

    codeends;程式碼段定義結束

    endstart;這個程式段全部結束

  • 中秋節和大豐收的關聯?
  • 奇蹟暖暖少女19支3怎麼過不了?