2011-04-29 81 views
0

我正在嘗試編寫比較2個字符串的代碼。 假設string1被SI引用,string2被DI引用,並且每個字符串的長度都是50.這是正確的程序集嗎?

這是正確的嗎?

Mov SI,2000H 
Mov DI,3000H 
Mov CX,50H 
CLD 
REPNE CMPSW 
+0

我寫了REPNE CMPSW 爲什麼你做CMPSWenter ??? !!!!! – Max 2011-04-29 15:50:30

+0

我剛剛糾正它。但檢查編輯歷史記錄,你會發現你最初編寫了CMPSWenter。 – fvu 2011-04-29 15:53:06

回答

2

一些問題:

  • 50H是80十進制
  • 你 - 通過使用CMPSW指令 - 有效比較字(16位),即160字節
  • 我想你想要使用REPE前綴,只要被比較的元素相等就重複該指令。或者直到CX中的比較次數被執行爲止。

請注意放入CX的方式:如果您確定字符串的長度總是2的倍數,CMPSW會更快。你只需要調整內容CX

+0

你說REPNE是錯誤的?如果是,那麼爲什麼? – Max 2011-04-29 15:53:16

+0

@Max:REPNE =重複,如果不相等,REPE =重複,如果相等。您希望繼續比較SI和DI當前指向的兩個字節是否相等,因此REPE。 – 2011-04-29 16:46:10