<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Zugriff mittels Inline assembler auf char array?]]></title><description><![CDATA[<p>Hey @all,</p>
<p>ich versuche mich gerade einem projekt (c++ und inline assembler) in vc++</p>
<p>Auf variablen zugreifen ist kein problem, nur wie greife ich auf ein char array zu? oder allgemein auf arrays?</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">char test_array[5] = {'a', 'b', 'c', 'd', 'e'};

__asm {
    mov eax, test_array[3]        // Funktioniert nicht
}
</code></pre>
<p>Wie könnte ich sowas lösen?</p>
<p>Vielen Dank im Voraus<br />
Lg _freeze_</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/174137/zugriff-mittels-inline-assembler-auf-char-array</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Apr 2026 15:17:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/174137.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 23 Feb 2007 09:30:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zugriff mittels Inline assembler auf char array? on Fri, 23 Feb 2007 09:30:41 GMT]]></title><description><![CDATA[<p>Hey @all,</p>
<p>ich versuche mich gerade einem projekt (c++ und inline assembler) in vc++</p>
<p>Auf variablen zugreifen ist kein problem, nur wie greife ich auf ein char array zu? oder allgemein auf arrays?</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">char test_array[5] = {'a', 'b', 'c', 'd', 'e'};

__asm {
    mov eax, test_array[3]        // Funktioniert nicht
}
</code></pre>
<p>Wie könnte ich sowas lösen?</p>
<p>Vielen Dank im Voraus<br />
Lg _freeze_</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233930</guid><dc:creator><![CDATA[_freeze_]]></dc:creator><pubDate>Fri, 23 Feb 2007 09:30:41 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff mittels Inline assembler auf char array? on Fri, 23 Feb 2007 10:02:44 GMT]]></title><description><![CDATA[<p>mov al, test_array[3]<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233951</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233951</guid><dc:creator><![CDATA[ten]]></dc:creator><pubDate>Fri, 23 Feb 2007 10:02:44 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff mittels Inline assembler auf char array? on Fri, 23 Feb 2007 10:13:14 GMT]]></title><description><![CDATA[<p>Was ist da der Unterschied?</p>
<p>Dachte in einer 32 Bit-Umgebenung gelten die Register EAX, EBX, ECX, EDX?</p>
<p>lg _freeze_</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233961</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233961</guid><dc:creator><![CDATA[_freeze_]]></dc:creator><pubDate>Fri, 23 Feb 2007 10:13:14 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff mittels Inline assembler auf char array? on Fri, 23 Feb 2007 10:17:16 GMT]]></title><description><![CDATA[<p>Also wenn ich es so mache, dann bekomme ich folgende fehlermeldung</p>
<pre><code>error C2443: operand size conflict
</code></pre>
<pre><code class="language-cpp">add ecx, digstr[edx]	// Ergibt digstr[10] ==&gt; D
</code></pre>
<p>Im Endeffekt sollte dann sowas in die Richtung rauskommen</p>
<p>ECX =&gt; &quot;DAS&quot;</p>
<p>Er soll immer einen Buchstaben aus dem Array zum Register ECX hinzufügen und dann das ganze am Ende in einen std::string packen:</p>
<pre><code class="language-cpp">std::string text = &quot;&quot;;
__asm {
    add ecx, digstr[edx]	// Ergibt digstr[10] ==&gt; D
.
.
.
    mov text, ecx
</code></pre>
<p>lg _freeze_</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233964</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233964</guid><dc:creator><![CDATA[_freeze_]]></dc:creator><pubDate>Fri, 23 Feb 2007 10:17:16 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff mittels Inline assembler auf char array? on Fri, 23 Feb 2007 10:45:01 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile.php?mode=viewprofile&amp;u=403" rel="nofollow">HumeSikkins</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=15" rel="nofollow">C++</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=1" rel="nofollow">MFC (Visual C++)</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233986</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233986</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Fri, 23 Feb 2007 10:45:01 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff mittels Inline assembler auf char array? on Fri, 23 Feb 2007 11:47:22 GMT]]></title><description><![CDATA[<p><em>freeze</em> schrieb:</p>
<blockquote>
<p>Was ist da der Unterschied?</p>
</blockquote>
<p>falscher datentyp (char--&gt;long)</p>
<p><em>freeze</em> schrieb:</p>
<blockquote>
<p>Dachte in einer 32 Bit-Umgebenung gelten die Register EAX, EBX, ECX, EDX?</p>
</blockquote>
<p>nö, die kann man noch aufteilen wie beim 16-bittigen x86...</p>
<p>btw: wieso nimmste asm für sowas?<br />
der C-compiler kann das genau so gut und weniger fehleranfällig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1234004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1234004</guid><dc:creator><![CDATA[ten]]></dc:creator><pubDate>Fri, 23 Feb 2007 11:47:22 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff mittels Inline assembler auf char array? on Fri, 23 Feb 2007 12:21:40 GMT]]></title><description><![CDATA[<p>OK ich habs jetzt so probiert, der fehler ist weg, jedoch schreibt er nix in die variable &quot;text&quot;</p>
<pre><code class="language-cpp">std::string text = &quot;&quot;;
__asm {
.
.
.
	mov al, digstr[edx]
	mov retval, al
.
.
.
    mov text, ecx
</code></pre>
<p>jedoch steht nix in text drinnen =&gt; die variable text bleibt leer <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>lg _freeze_</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1234018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1234018</guid><dc:creator><![CDATA[_freeze_]]></dc:creator><pubDate>Fri, 23 Feb 2007 12:21:40 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff mittels Inline assembler auf char array? on Fri, 23 Feb 2007 12:51:28 GMT]]></title><description><![CDATA[<p><em>freeze</em> schrieb:</p>
<blockquote>
<p>Hey @all,</p>
<p>ich versuche mich gerade einem projekt (c++ und inline assembler) in vc++</p>
<p>Auf variablen zugreifen ist kein problem, nur wie greife ich auf ein char array zu? oder allgemein auf arrays?</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">char test_array[5] = {'a', 'b', 'c', 'd', 'e'};

__asm {
    mov eax, test_array[3]        // Funktioniert nicht
}
</code></pre>
<p>Wie könnte ich sowas lösen?</p>
<p>Vielen Dank im Voraus<br />
Lg _freeze_</p>
</blockquote>
<pre><code class="language-cpp">char global_array[5] = {'a', 'b', 'c', 'd', 'e'}; 

int main()
{
char local_array[5] = {'a', 'b', 'c', 'd', 'e'}; 

    _asm
    {
        mov eax, offset global_array[3]
        // oder
        lea eax, global_array[3]

        //mov eax, offset local_array[3] Fehler! lokale Variable liegen auf
        //                               dem Stack (Adressierung über [ebp] also lea nehmen!)
        lea eax, local_array[3]   // Ok!
        //Test
        mov cl, [eax]
        // cl == 'd'
        mov byte ptr [eax], 'A'  // local_array[] == {'a', 'b', 'c', 'A', 'e'}; 
    }
}
</code></pre>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1234035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1234035</guid><dc:creator><![CDATA[freak11]]></dc:creator><pubDate>Fri, 23 Feb 2007 12:51:28 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff mittels Inline assembler auf char array? on Fri, 23 Feb 2007 12:57:30 GMT]]></title><description><![CDATA[<p><em>freeze</em> schrieb:</p>
<blockquote>
<p>OK ich habs jetzt so probiert, der fehler ist weg, jedoch schreibt er nix in die variable &quot;text&quot;</p>
<pre><code class="language-cpp">std::string text = &quot;&quot;;
__asm {
.
.
.
	mov al, digstr[edx]
	mov retval, al
.
.
.
    mov text, ecx
</code></pre>
<p>jedoch steht nix in text drinnen =&gt; die variable text bleibt leer <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
</blockquote>
<p>das funzt so nicht.<br />
damit überschreibst du irgendwelche internen variablen in dem std::string.<br />
du könntest vielleicht 'ne memberfunction des strings aufrufen (push_back oder sowas)...<br />
aber warum asm dafür <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1234040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1234040</guid><dc:creator><![CDATA[ten]]></dc:creator><pubDate>Fri, 23 Feb 2007 12:57:30 GMT</pubDate></item></channel></rss>