如何计算程序集中字符串的字符不使用0Ah / int21h

时间:2016-10-24 12:09:52

标签: assembly

我想知道另一种计算字符串字符的方法,不使用0Ah / int21h。谢谢你的帮助:D

1 个答案:

答案 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)。