<?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[Exception durch asm unter WinXP]]></title><description><![CDATA[<p>Hallo Leute,<br />
ich bin Neuling in Sachen C++ Programmierung und vor allem in Assambler. Dem zu Folge auch neu in diesem Forum.</p>
<p>Folgendes Problem:<br />
Ich muß eine einfache Anwendung schreiben, die in der Lage ist, auf dem COM-Port ein kurzes Signal zur Steuerung externer Geräte auszugeben.<br />
Jemand gab mir den Tipp es mit asm zu versuchen .<br />
Unter Zuhilfenahme des Internets <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> , entstand folgender code:</p>
<p>#include &lt;iostream&gt;</p>
<p>int main(int /*argc*/, char* /*argv*/[])<br />
{<br />
std::cout &lt;&lt; &quot;RTS ein&quot; &lt;&lt; std::endl;</p>
<p>_asm{<br />
push ax // AX-Register vom Prozessor sichern<br />
push DX // DX-Register vom Prozessor sichern<br />
mov DX, 03F8h +4 // die serielle Schnittstelle und das 4.Register auswählen<br />
mov al, 2 // bin 0000.0010 ; RTS ist das 2. bit<br />
out DX, al // RTS einschalten<br />
pop DX // den Wert wieder herstellen<br />
pop ax<br />
}</p>
<p>std::cout &lt;&lt; &quot;Bitte geben Sie ein Zeichen ein und drücken dann die Eingabetaste:&quot;;<br />
std::cin.get();<br />
std::cout &lt;&lt; &quot;RTS aus&quot; &lt;&lt; std::endl;</p>
<p>_asm{<br />
push ax<br />
push DX<br />
mov DX, 03F8h +4 // die serielle Schnittstelle und das 4.Register<br />
mov al, 0 // bin 0000.0000<br />
out DX, al // RTS ausschalten<br />
pop DX<br />
pop ax<br />
}</p>
<p>return 0;<br />
}</p>
<p>Das Progrämmchen wird ohne Probleme compiliert und gelinkt.<br />
Jedoch kommt zur Laufzeit eine Exception. Direkt nach der ersten Textausgabe.<br />
Im Forum habe ich nun mehrfach Andeutungen gefunden, daß &quot;in&quot; und &quot;out&quot; privilegierte Befehle sind, die unter NT-Derivaten nicht ohne Weiteres ausgeführt werden können.<br />
Nun die Frage(n) <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>
<p>Stimmt das? Kann ich die Sache also nicht so Lösen? Gibt es andere Möglichkeiten? Vielleicht auch nur über die WindowsAPI?</p>
<p>Was ich brauche, ist einfach ein kurzes Hi- oder LoSignal an irgend einem Anschluß des Comports. Eventuell später auch in definierten Zeitabständen.</p>
<p>Vielen Dank für Eure Hilfe i.V.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/82872/exception-durch-asm-unter-winxp</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Apr 2026 16:07:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/82872.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 15 Aug 2004 11:41:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Exception durch asm unter WinXP on Sun, 15 Aug 2004 11:41:39 GMT]]></title><description><![CDATA[<p>Hallo Leute,<br />
ich bin Neuling in Sachen C++ Programmierung und vor allem in Assambler. Dem zu Folge auch neu in diesem Forum.</p>
<p>Folgendes Problem:<br />
Ich muß eine einfache Anwendung schreiben, die in der Lage ist, auf dem COM-Port ein kurzes Signal zur Steuerung externer Geräte auszugeben.<br />
Jemand gab mir den Tipp es mit asm zu versuchen .<br />
Unter Zuhilfenahme des Internets <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> , entstand folgender code:</p>
<p>#include &lt;iostream&gt;</p>
<p>int main(int /*argc*/, char* /*argv*/[])<br />
{<br />
std::cout &lt;&lt; &quot;RTS ein&quot; &lt;&lt; std::endl;</p>
<p>_asm{<br />
push ax // AX-Register vom Prozessor sichern<br />
push DX // DX-Register vom Prozessor sichern<br />
mov DX, 03F8h +4 // die serielle Schnittstelle und das 4.Register auswählen<br />
mov al, 2 // bin 0000.0010 ; RTS ist das 2. bit<br />
out DX, al // RTS einschalten<br />
pop DX // den Wert wieder herstellen<br />
pop ax<br />
}</p>
<p>std::cout &lt;&lt; &quot;Bitte geben Sie ein Zeichen ein und drücken dann die Eingabetaste:&quot;;<br />
std::cin.get();<br />
std::cout &lt;&lt; &quot;RTS aus&quot; &lt;&lt; std::endl;</p>
<p>_asm{<br />
push ax<br />
push DX<br />
mov DX, 03F8h +4 // die serielle Schnittstelle und das 4.Register<br />
mov al, 0 // bin 0000.0000<br />
out DX, al // RTS ausschalten<br />
pop DX<br />
pop ax<br />
}</p>
<p>return 0;<br />
}</p>
<p>Das Progrämmchen wird ohne Probleme compiliert und gelinkt.<br />
Jedoch kommt zur Laufzeit eine Exception. Direkt nach der ersten Textausgabe.<br />
Im Forum habe ich nun mehrfach Andeutungen gefunden, daß &quot;in&quot; und &quot;out&quot; privilegierte Befehle sind, die unter NT-Derivaten nicht ohne Weiteres ausgeführt werden können.<br />
Nun die Frage(n) <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>
<p>Stimmt das? Kann ich die Sache also nicht so Lösen? Gibt es andere Möglichkeiten? Vielleicht auch nur über die WindowsAPI?</p>
<p>Was ich brauche, ist einfach ein kurzes Hi- oder LoSignal an irgend einem Anschluß des Comports. Eventuell später auch in definierten Zeitabständen.</p>
<p>Vielen Dank für Eure Hilfe i.V.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/583123</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/583123</guid><dc:creator><![CDATA[real77]]></dc:creator><pubDate>Sun, 15 Aug 2004 11:41:39 GMT</pubDate></item><item><title><![CDATA[Reply to Exception durch asm unter WinXP on Sun, 15 Aug 2004 11:51:53 GMT]]></title><description><![CDATA[<p>Ja, es stimmt, unter WinNT kannst du in/out in normalen Anwendungen nicht benutzen.<br />
Dafuer muesstest du AFAIK einen Treiber schreiben.</p>
<p>Also erstmal ab nach WinAPI, vielleicht kann man dir ja dort weiterhelfen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/583131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/583131</guid><dc:creator><![CDATA[Nobuo T]]></dc:creator><pubDate>Sun, 15 Aug 2004 11:51:53 GMT</pubDate></item><item><title><![CDATA[Reply to Exception durch asm unter WinXP on Sun, 15 Aug 2004 11:52:08 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=2713" rel="nofollow">Nobuo T</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=17" rel="nofollow">Assembler</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=4" rel="nofollow">WinAPI</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/583133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/583133</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Sun, 15 Aug 2004 11:52:08 GMT</pubDate></item><item><title><![CDATA[Reply to Exception durch asm unter WinXP on Sun, 15 Aug 2004 12:22:06 GMT]]></title><description><![CDATA[<p>Schau dir mal CreateFile und WriteFile, evtl. auch noch die <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/devio/base/communications_functions.asp" rel="nofollow">Communications Functions</a> an, ich denke, da sollte auch für dich etwas dabei sein <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/583161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/583161</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Sun, 15 Aug 2004 12:22:06 GMT</pubDate></item><item><title><![CDATA[Reply to Exception durch asm unter WinXP on Sun, 15 Aug 2004 12:39:13 GMT]]></title><description><![CDATA[<p>ein Posting, daß ich vorher übersehen habe:</p>
<p><a href="http://www.c-plusplus.net/forum/viewtopic.php?t=17070&amp;highlight=seriell" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic.php?t=17070&amp;highlight=seriell</a></p>
<p>Danke für die schnellen Antworten <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Communication Funktions waren ein guter Tipp</p>
]]></description><link>https://www.c-plusplus.net/forum/post/583172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/583172</guid><dc:creator><![CDATA[real77]]></dc:creator><pubDate>Sun, 15 Aug 2004 12:39:13 GMT</pubDate></item></channel></rss>