我有一个编写简单版本的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寄存器进行实际计数,但我不知道它的语法..