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