我想在程序集中创建一个程序,显示给定字符串中的第n个单词 例如,我们运行一个程序
./program 3 'ax ab cd fg'
我们应该
cd
结果
这是我的代码
.intel_syntax noprefix
.text
.globl main
.data
m1 db '' , 0
main:
// compile: gcc prog.s -o prog -m32 -nostdlib
// 0 to eax, ebx
mov eax, 0
mov ebx, 0
// run ./programm 3 'ax ab cd fg'
mov eax , [esp+8] // "argv[1]" -> 3
mov ebx, [esp+12] // "argv[2]" -> 'ax ab cd fg'
cld
search:
// load to AL bite from ESI
lodsb
// check end of string (char '\0')
cmp AL, 0
// if yes -> out
je out
// check if number of spaces == 1?
cmp eax, 1
je nthWord
cmp al, ' '
je space
lodsb // load next bit
jmp search
space:
dec eax // dec number of spaces
jmp search // go back to search
nthWord:
//copy chars to m1
//and show var m1 at the console
out:
遗憾的是,我不知道如何将字符复制到变量m1并显示它和结束