DATAS SEGMENT;此處輸入數據段代碼
ENG DB 'Here is sun,sun,sun,sun,sun,...,$'
DISP DB 'SUN'
DAT DB '0000' , 0DH, 0AH, '$'
KEYWORD DB 'sun'
DATAS ENDS
STACKS SEGMENT
DW 100 DUP(?) ;此處輸入堆棧段代碼
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX;此處輸入代碼段代碼
MOV ES, AX ;給 ES 賦值
BEGIN: MOV AX, 0
MOV DX, DISP-ENG-2 ;計算 ENG 的長度(每次比較 sun,因此比較次數-2)
LEA BX, ENG
COMP: MOV DI, BX
LEA SI, KEYWORD
MOV CX, 3
REPE CMPSB ;串比較
JNZ NOMATCH
INC AX ;是,SUN 的個數加 1
ADD BX, 2
NOMATCH:INC BX ;指向 ENG 的下一個字母
DEC DX
JNZ COMP
DONE: MOV CH, 4 ;將次數轉換爲 16 進制數的 ASCII 碼
MOV CL, 4
LEA BX, DAT ;轉換結果存入 DAT 單元中
DONE1: ROL AX, CL
MOV DX, AX
AND DL, 0FH ;取一位 16 進制數
ADD DL, 30H
CMP DL, 39H
JLE STORE
ADD DL, 07H ;是“A~F”所以要加 7
STORE: MOV [BX], DL ;轉換結果存入 DAT 單元中
INC BX
DEC CH
JNZ DONE1
DISPLAY:
LEA DX, DISP ;顯示字符串程序(將 DISP 和 DAT 一起顯示)
MOV AH, 09H
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
計算字符串中sun的個數並以SUNXXXX的形式表示出來
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.