;同學我幫你完成了你的程式,編譯透過,可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
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
addbh,30h
movdl,bh;餘數
int21h;說明:最後結果兩位數是十六進位制的
movdl,"H"
;-------------------------------------------
;輸出字串
displaystring3
movsi,0
again:
moval,[bx+si]
movdl,al
incsi
cmpsi,cx
jbeagain
ret
mainendp;主函式結束
;********************************************
codeends;程式碼段定義結束
endstart;這個程式段全部結束
;同學我幫你完成了你的程式,編譯透過,可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;這個程式段全部結束