String x86程序集在文本文件中搜索单词

String x86程序集在文本文件中搜索单词,string,search,assembly,x86,word,String,Search,Assembly,X86,Word,代码如下: .data word db 64 dup(?) wordLen dw ? Word是从程序参数中读取的单词。我想将我单词的第一个符号与从文件中读取的符号进行比较,若有匹配,则通过增加计数器继续读取 这是在文件中查找指定字符串的比较合法操作吗?或者我应该使用其他策略?将[word+计数器]移动到dh会抛出错误,这并不能真正告诉我们任何事情。您得到的确切错误是什么?错误的参数或地址OK,好吧,您

代码如下:

.data   
word           db 64 dup(?)          
wordLen         dw ?               
Word是从程序参数中读取的单词。我想将我单词的第一个符号与从文件中读取的符号进行比较,若有匹配,则通过增加计数器继续读取


这是在文件中查找指定字符串的比较合法操作吗?或者我应该使用其他策略?

将[word+计数器]移动到dh会抛出错误,这并不能真正告诉我们任何事情。您得到的确切错误是什么?错误的参数或地址OK,好吧,您还没有说明如何声明
word
计数器。汇编程序可能希望您明确说明大小,例如
mov dh,byte ptr[word+counter]
。但是如果你期望
[word+计数器]
word
+的地址读取
计数器的值,那你就错了。x86上没有这种寻址模式。你必须先把计数器的值移到一个合适的寄存器中,就是这样。它也可能被误解,因为这个词明确地是一个关键词。它是合法的比较功能吗?或者我应该使用另一种策略来查找匹配的字符串?
    MOV ah, 3Ch                     
    MOV cx, 0                       
    MOV dx, offset rez              
    INT 21h                         
    JC  writeWrror      
    MOV rFail, ax                   

    MOV counter, 0                  
    mov tcounter, 0

;*****************************************************
;Reading from file
;*****************************************************

  read:
    MOV bx, dFail           
    CALL    readBuf         
    CMP ax, 0               
    JE  closeWrite

;*****************************************************
;Compare tasks
;*****************************************************
    MOV cx, ax
    MOV si, offset skBuf
    MOV di, offset wrBuf
compare:      
  MOV   dl, [si]  
  mov temp, si
  mov si, counter
  mov dh, [zodis + si] 
  mov si, temp           
  CMP dl, dh
  JE isEqual
  mov counter, 0
tesk:
  INC   si
  LOOP  compare