显示字符串程序集中的第n个单词

时间:2017-01-17 21:27:43

标签: assembly x86 substring

我想在程序集中创建一个程序,显示给定字符串中的第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并显示它和结束

0 个答案:

没有答案