通过AT& T组件中的char数组循环

时间:2018-04-20 10:46:03

标签: assembly intel att

我有一个编写简单版本的sprintf在x86 AT& T汇编程序中的任务,接受一个字符串/ char数组和一个unsigned char,然后将字符串打印为sprintf(所以包含“%d \的字符串) n“和unsigned char'3'将打印”3 \ n“)。

我的想法是读取每个字节并将其与'%'字符进行比较,如果它不是'%'字符,我将它添加到寄存器中,如果是,我会做一些其他的事情来进行格式化(还没到那么远)但我是汇编程序编程的新手,所以如何遍历字符串呢?

我目前有:

loop1:
  movl %ebx, %edx   #Get string from address in %ebx
  cmpb $'%', %dl    #Compare with %
  je index_found    #If equal, go to index_found
  addb %dl, %al     #Else add byte to %eax
  incl %ecx         #increase counter by 1

  cmpb $0, %dl      #Check if end of string
  jz  print         #If end of string, go to print and return

我猜我的问题在于我没有使用%ecx寄存器进行实际计数,但我不知道它的语法..

0 个答案:

没有答案