Assembly 使用32位汇编打印字母/数字数组
);正在尝试打印数组中的所有字母,但不起作用Assembly 使用32位汇编打印字母/数字数组,assembly,x86,printf,ollydbg,Assembly,X86,Printf,Ollydbg,);正在尝试打印数组中的所有字母,但不起作用 litere times 255 db 0 ;letters array dim_sir_litere db 0 ;this will tell me how many letters i have in my array mov [dim_sir_litere],EDI ; the length of letters array );在这个循环中,我想打印litere数组中的所有字符 mov ECX,[dim_sir_litere] ;
litere times 255 db 0 ;letters array
dim_sir_litere db 0 ;this will tell me how many letters i have in my array
mov [dim_sir_litere],EDI ; the length of letters array
);在这个循环中,我想打印litere数组中的所有字符
mov ECX,[dim_sir_litere] ;this will have the lenght of my letters array
mov ESI,0 ;this will be the index that i will use
实际的问题是,在我运行代码之后,它没有打印任何东西,也没有打印任何东西
我使用此代码将字母放入数组:
afisare_litere:
push ECX ;keep ECX value
mov EAX,dword [litere+ESI] ;put in EAX the value from ESI index
inc ESI ;mov index to the next position
push dword EAX
push dword format_caracter ;the format is %c
call [printf]
add esp,4*2
pop ECX
loop afisare_litere
一个明显的问题是
literedb0
只保留1字节的空间,但是[litere+EBX]
可以访问该空间之外的空间。除此之外,这不是一个(不是很小的)问题,“不工作”也不是问题的充分描述,并且您没有确切解释它应该做什么。此外,如果这是NASM,'\n'
是一个反斜杠和n。C转义仅在backticks`i used and litere times 255 db 0中解释,但使用相同的结果使用调试器,和/或将其简化为实际的几个指令,而这些指令并没有达到预期的效果。(例如,从一个固定字符串中获取输入,这样您就可以删除fread部分)好的,我会尝试一下,谢谢,一个明显的问题是literedb0
只保留1字节的空间,但是[litere+EBX]
可以访问该空间之外的空间。除此之外,这不是一个(不是很小的)问题,“不工作”也不是问题的充分描述,并且您没有确切解释它应该做什么。此外,如果这是NASM,'\n'
是一个反斜杠和n。C转义仅在backticks`i used and litere times 255 db 0中解释,但使用相同的结果使用调试器,和/或将其简化为实际的几个指令,而这些指令并没有达到预期的效果。(例如,从固定字符串中获取输入,以便您可以删除fread部分)好的,我会尝试一下,谢谢
mov [litere+EBX],AL