您的位置:首页 > 编程语言

80x86汇编编程:在输入的字符串中查找关键字

2016-01-25 11:56 435 查看
编写程序:
接收键入的一个句子以及一个关键字;
如果句子中不包含关键字则显示“No match !”;
如果句子包含关键字则显示“Match !”,且把该字在句子中的位置用十六进制数显示出来。
满意回答:
;================================
DATAS  SEGMENT
       T1  DB  10, 13, 'Input String: $'
       T2  DB  10, 13, 'Input a Char: $'
  RESULT1  DB  10, 13, 'MATCH !', 13, 10, '$'
  RESULT2  DB  10, 13, 'NO  MATCH !', 13, 10, '$'
      KEY  DB  100 DUP(?)
      SEN  DB  ?
DATAS  ENDS
;================================
CODES  SEGMENT
    ASSUME  CS:CODES, DS:DATAS
START:
    MOV  AX, DATAS
    MOV  DS, AX
;--------------------------------
    MOV  DX, OFFSET  T1 ;Input String:
    MOV  AH, 09H
    INT  21H
    XOR  BX, BX
L5:
    MOV  AH, 01H
    INT  21H
    MOV  KEY[BX], AL ;保存输入的字符
    INC  BX
    CMP  AL, 13      ;是“回车”?
    JNZ  L5          ;不是,就继续输入。超过100个就会出错,但愿不会输入这么多吧 !
    MOV  DX, OFFSET  T2 ;Input a Char:
    MOV  AH, 09H
    INT  21H
    MOV  AH, 01H
    INT  21H
    MOV  SEN, AL     ;保存关键字
;-----------------------------
L1:
    MOV  AL, KEY[BX - 1]
    CMP  AL, SEN
    JZ   L3          ;找到了转移.
    DEC  BX
    JNZ  L1
;-----------------------------
L2:                  ;没有找到.
    MOV  DX, OFFSET  RESULT2
    MOV  AH, 09H
    INT  21H
    JMP  L4
L3:
    MOV  DX, OFFSET  RESULT1  ;MATCH !
    MOV  AH, 09H
    INT  21H
;---------------------下面是显示位置
    MOV  AL, BL
    MOV  AH, 0
    MOV  BL, 16
    DIV  BL
    MOV  DX, AX
    ADD  DL, 30H
    CMP  DL, 3AH
    JB   L7
    ADD  DL, 7
L7:
    MOV  AH, 2
    INT  21H
    MOV  DL, DH
    ADD  DL, 30H
    CMP  DL, 3AH
    JB   L8
    ADD  DL, 7
L8:
    MOV  AH, 2
    INT  21H
    MOV  DL, 'H'
    MOV  AH, 2
    INT  21H
;-----------------------------
L4:
    MOV  AH, 4CH
    INT  21H
CODES  ENDS
    END  START
;================================
如果含有多个关键字,本程序只是显示最后输入的关键字位置。
运行结果如下:
c:\masm510>SEN
Input String: SASFRGERTEGDFBDBD
Input a Char: D
MATCH !
11H
c:\masm510>SEN
Input String: EWEWE
Input a Char: M
NO  MATCH !
;================================
回答者: 做而论道 | 2012-4-13 09:55
原题网址:http://zhidao.baidu.com/question/409735230.html
;================================
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: