我們正在嘗試在彙編中實現流水線距離算法並從C代碼中調用匯編函數。但是我們有一些字符比較問題,並不能解決問題。彙編角色比較問題
函數帶兩個char *參數。在前兩行中,我將這些地址放到ecx和edx中。 iminusOne和jminusOne是獲取當前(代碼塊是循環的一部分)字符的索引。找到字符的地址後,我將字符移動到寄存器中並使用cmp進行比較。但例如,當我比較兩個字符串「蘋果」和「蘋果」時,前三個字符似乎相同,但其他兩個字符不相等。我在ecx和edx的地址上向控制檯顯示字符,他們似乎也是平等的。當前字符數的
mov ecx,[esp+4]
mov edx,[esp+8]
mov ebx,[iminusOne]
add ecx,ebx
mov ebx,[jminusOne]
add edx,ebx
call printCurrentChars
mov edx,[edx]; bellekteki veriyi direk register a yüklüyoruz çünkü karşılaştırma
; işlemine parametre olarak iki adres alanı veremiyoruz
mov ecx,[ecx]
cmp edx,ecx
jne notEqual
call printHello
mov ebx,eax
打印結果:
appleapple
AA
你好,世界! // OK
AP
AP
人
AE
PA
頁
你好,世界! // OK
頁
//這應該是平等的,但不是
PL
PE
PA
頁
//這應該是平等的,但不是
頁
你好,世界!
PL
PE
拉
LP
LP
LL
//這應該是平等的,但不是
樂
EA
EP
EP
EL
EE
//這應該是平等的,但不是
請問爲什麼要實現這個機器代碼,而你正在開發C中的應用程序的其他部分? – 2010-10-17 08:47:07
這是系統編程課的作業主要目的不是算法的確。 – mehmet6parmak 2010-10-17 09:01:38