我想知道另一種方法來計算不使用0Ah/int21h的字符串的字符。感謝您的幫助:D如何統計不使用的程序集中字符串的字符0Ah/int21h
回答
從一個寄存器開始,該寄存器指向字符串的第一個字符,另一個寄存器設置爲零。
循環直到第一個寄存器的內容是NUL
字符(或任何你想要的終止符),遞增這兩個寄存器。
最後,第二個寄存器將具有長度。
在僞彙編代碼(因爲它很可能這是課堂作業):
push r1, r3 ; preserve registers
load r1, address-of-string
xor r2, r2 ; xor a number with itself gives 0
startloop:
load r3, [r1] ; get memory contents
beq endloop ; if NUL, we're at string end
inc r1 ; otherwise incr both and loop back
inc r2
bra startloop
endloop:
pop r3, r1 ; restore registers
; r2 now has the length.
你的任務是到現在將其轉換成真正的彙編代碼(最有可能的x86給你的int 21h
提)。
是的,這是我的作業:D我試圖找出另一種方式,但我的代碼太長。再次請您 –
順便說一下,'xor same,same'只是x86上的一個很好的歸零方式。在包括ARM在內的許多其他體系結構上[它在體系結構上需要對輸入寄存器進行依賴(以保留memory_order_consume語義)](http://stackoverflow.com/questions/37222999/convert-c-to-assembly-with- predicate-instruction/37224546#comment61983585_37224546),所以'mov r2,0'的大小相同(在ARM Thumb2上更小),並且性能更好。但顯然你只是想僞裝成x86 x86,所以+1 :) –
- 1. 如何統計字符串中特定字符的集合
- 2. Java:如何使用循環統計字符串中的字符?
- 3. 字符串的子字符串的順序統計
- 4. 如何統計字符串內子字符串的數量
- 5. 如何統計使用shell的字符串的字數
- 6. 如何統計字符串中字符的出現
- 7. 如何統計字符串中所有字符的出現?
- 8. 如何統計字符串中連續重複的字符數
- 9. 如何使用批計數字符串中的字符?
- 10. 程序集中的scanf字符串
- 11. 如何計算字符串的字符?
- 12. 如何統計表中字符串值排序的發生
- 13. 如何統計字符串中序列的出現次數?
- 14. 統計字符串比較
- 15. 如何計算字符串內的不同字符串vb.net
- 16. PHP需要統計字符串中的序列中的相同字符數
- 17. 如何遠程字符串中的字符串javascript不使用replace(),split()?
- 18. 程序集查找包含給定字符串中子字符串的字
- 19. 使用LINQ來計數字符串中的子字符串?
- 20. 程序集的連接字符串
- 21. 的Android頭痛的字符串:我如何集中我的應用程序中的所有字符串?
- 22. 如何在Python中的字符串中使用子字符串?
- 23. 搜索字符串中的字符集
- 24. 如何用R語言統計一列中的字符串?
- 25. 如何計算no。字符串數組中的字符串?
- 26. 如何計算字符串中字符串的外觀?
- 27. 如何計算字符串中的字母字符?
- 28. 如何計算python中的字符串中的字符匹配?
- 29. 不使用CRON字符串的日程安排字符串
- 30. 程序集printf - 僅打印字符串的第一個字符
http://stackoverflow.com/search?q=%5Bassembly%5D+strlen –
編寫一些代碼自己做?這是一個超級方法。 –