一开始,我想指出我在集会方面完全是新手。我必须创建一个从命令行2参数 - int和string得到的程序。接下来,它必须在字符串中输入最后一个字的字符串,如int number所示。 我使用的是32位的英特尔语法 - 我觉得这很重要。
例如:./a.out 3" ab cd"在屏幕上显示" cdcdcd"
首先,我只专注于找到最后一个单词并将其打印在屏幕上 - 不是在循环中而是仅仅一次。添加一个循环对我来说不应该是个大问题。我尽力编写工作代码并且编译时没有错误,但是它没有在控制台中打印任何内容 - 我认为打印时出现了错误,而char#34;从最后一句话。我不知道如何正确打印它。我非常感激你的帮助。我仅限于在大学获得的小知识,所以请让我所有的提示尽可能简单,我能理解它们。 :)
.intel_syntax noprefix
.globl main
.text
main:
push ebp
mov ebp, esp
mov ebx, [ebp + 12]
mov ecx, [ebx + 4] # int ECX
mov ebx, [ebx + 8] # string EBX
xor eax, eax
call findend
pop ebp
mov ebx, 0
mov ecx, 0
ret
findend:
mov dl, byte ptr [ebx + eax]
cmp dl, 0
jz findword
inc eax
jmp findend
findword:
dec eax
mov dl, byte ptr [ebx + eax]
cmp dl, ' '
jz foundword
jmp findword
foundword:
inc eax
mov dl, byte ptr [ebx + eax]
cmp dl, 0
jz theend
push eax
push edx
push offset msg1
call printf
add esp, 4
pop edx
pop eax
jmp foundword
theend:
ret
.data
msg1: .asciz "%c"