Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 串组_String_Search_Assembly_Char - Fatal编程技术网

String 串组

String 串组,string,search,assembly,char,String,Search,Assembly,Char,任务是搜索一个字符串,并确定输入的字符是否在字符串MES3中。这是我的代码,但它不会只搜索字符串中的第一个字母。我如何才能循环工作并搜索字符串中的所有符号 masm model small .DATA MSG1 DB 10,13,'CHARACTER FOUND :) $' MSG2 DB 10,13,'CHARACTER NOT FOUND :($' MSG3 DB 10,13,'there is no hope of doing this bla : $' MSG4 DB 10,13

任务是搜索一个字符串,并确定输入的字符是否在字符串MES3中。这是我的代码,但它不会只搜索字符串中的第一个字母。我如何才能循环工作并搜索字符串中的所有符号

 masm 
model small
.DATA 
MSG1 DB 10,13,'CHARACTER FOUND :) $'
MSG2 DB 10,13,'CHARACTER NOT FOUND :($'
MSG3 DB 10,13,'there is no hope of doing this bla  : $'
MSG4 DB 10,13,'ENTER THE CHARACTER  TO BE SEARCHED : $'
NEW  DB 10,13,'$'
NEW1 DB 10,13,'$'
NEW2 DB 10,13,'$'



 .CODE 
 ASSUME CS:@CODE,DS:@DATA
 START:
  MOV AX,@DATA
  MOV DS,AX
  LEA di,[MSG3]

DOWN:
  LEA dx,NEW
  MOV AH,09H
  INT 21H
  LEA DX,MSG4
  MOV AH,09H
  INT 21H

  MOV AH,01H
  INT 21H

  MOV DI,0
 UP1:

  CMP AL,[MSG3+di]
  JE DOWN3
  INC DI
  LOOP UP1
  LEA DX,MSG2
  MOV AH,09H
  INT 21H
  JMP FINISH

 DOWN3:
  LEA DX,MSG1
  MOV AH,09H
  INT 21H
 FINISH:
   INT 3

   mov AX, 4c00h
   int 21h
   END START

LOOP
指令(在
LOOP UP1
中使用)递减
CX
,如果
CX!=0
。因此,您需要将
CX
设置为
UP1
标签之前要比较的最大字符数


或者你可以用
CMP字节PTR[MSG3-1+di],“$”
/
JNE UP1
替换
循环UP1
,因为字符串以“$”结尾。

谢谢,但它仍然不起作用。我将CX设置为34,但它仍然是相同的。除了对我起作用的第一个符号外,我无法识别其他符号。如果我输入例如a
b
,程序将打印
找到的字符:)
。如果我输入的东西不在
MSG3
中,比如
q
,它会显示
字符未找到:(
。我又做了一次,这次成功了,非常感谢