我想知道另一种计算字符串字符的方法,不使用0Ah / int21h。谢谢你的帮助:D
答案 0 :(得分:1)
从指向字符串第一个字符的寄存器开始,另一个寄存器设置为零。
循环,直到第一个寄存器的内容是NUL
字符(或任何你想要的终结符),递增这两个寄存器。
最后,第二个寄存器将具有长度。
在伪asm代码中(因为它很可能是这个类作品):
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
)。