Turbo C 2 mit ASM Inline mit Schleife ?

OP #6221659
Hallo, guten Tag.

In Turbo C 2 kann man ja ASM verwenden wenn man es so macht: "asm mov 
ax,bx".
Dann mit TCC -B testasm.c compiliert. Natürlich muss sich der TASM im 
Ordner befinden.

Wie macht man denn bitte eine Schleife?
Es kommt eine Fehlermeldung : undefenid label 'more'
Wie kann man auch bitte Variable übergeben?
1
void testasm()
2
{
3
   asm more: ;
4
   asm mov ax,bx ;
5
   asm jns  more ;   
6
}
7

8
int main ()
9
{
10
    testasm();
11
    while( !kbhit() ){ }               
12
}
Gast
Ist lange her, aber du musst normale C Label, wie sie auch für goto 
nutzbar sind verwenden.

void testasm()
{
  more:
  {
     asm mov ax,bx ;
     asm jns  more ;
  }
}


Blöde Frage vielleicht, aber warum schreibst Du die Funktionen nicht 
gleich in TASM. Dann hast Du die ganzen Einschränkungen von Inline 
Assembler nicht.
und wieder kein vollständiges Programm... Das Forum ist sicher nicht 
dazu da dir jede Kleinigkeit in Häppchen zu zeigen. Lad dir jetzt 
endlich mal die TC Handbücher von bitsavers.org. Dort ist alles 
ausführlich beschrieben. Diesen Hinweis hast du übrigens schon vor 
Wochen in einem der anderen Threads bekommen.
OP
Ohne TASM.EXE passierte nichts.
--------------------
muss er das wirklich - inline-assembler hat doch eine leicht andere
syntax, was soll der TASM damit anfangen?
--------------------

ganz unten der hinweis:
https://stackoverflow.com/questions/47580731/how-to-write-inline-assembly-with-turbo-c-2-01

So funktioniert es: tcc testasm.c , der TASM wird dann vom TCC 
aktiviert.
Print ist dann 1255
1
#include <stdio.h>
2

3
int b;
4

5
void testasm(int a)
6
{  
7
   asm mov ax,a ;
8
   asm add ax,255 ;
9
   asm mov b,ax ;   
10
}
11

12
int main ()
13
{
14
    int a;
15
    
16
    a=1000;
17
    testasm(a);
18
    printf("%d", b);
19
    while( !kbhit() ){ }               
20
}
Peter B. schrieb:
> So funktioniert es: tcc testasm.c , der TASM wird dann vom TCC aktiviert

Das ist (mal wieder) kompletter Unsinn was du hier schreibst.
tcc braucht in keinem Fall tasm um Inline asm übersetzen zu können.
tasm ist nur notwendig wenn du dein c Programm mit -B zuerst in ein 
Assembler Programm ausgibst.
Beitrag #6221947 wurde von einem Moderator gelöscht.
OP
-----------------------
Das ist (mal wieder) kompletter Unsinn was du hier schreibst.
----------------------
Du schreibst immer so nette Sätze....
Macht wohl diese Corona-Zeit. Entspann dich mal...oder man sagt auch : 
Komm mal wieder auf diese Welt.

Man kann auch so schreiben :
----------------------------------------------------------------------
Den TASM brauchts du nicht für Inline, nur wenn du das -B benutzt.
Ich wünsche dir noch eine schöne Zeit.
----------------------------------------------------------------------
Gast
Peter B. schrieb:
> Du schreibst immer so nette Sätze....
> Macht wohl diese Corona-Zeit. Entspann dich mal...oder man sagt auch :
> Komm mal wieder auf diese Welt.

Du provozierst so ein Verhalten in dem du nur Stückchenweise Infos raus 
gibts, ewig (in anderen Post) nicht direkt antwortest und dann noch 
solche Sachen wie mit dem Inline-Assembler postest

der TASM ist ein unabhängiges Produkt (wo hattest du den her?) und die 
inline-asm Syntax wird von TASM nicht verstanden weil die C-orientiert 
ist

bei mir baut dein Beispiel ohne TASM
Gast
cppbert schrieb:
> der TASM ist ein unabhängiges Produkt (wo hattest du den her?) und die
> inline-asm Syntax wird von TASM nicht verstanden weil die C-orientiert
> ist

ich hab Borland C++ V2.0

der TASM "IST" dabei aber ich kann alle Tasm Exen verschieben und es 
geht trotzdem, die Frage ist wiso du bei dir den TASM reinkopieren 
musstes?
OP
Manchmal fühle ich mich wie ein Kaiser.

TCC testasm.c

Einmal ohne TASM im Ordner.
Einmal mit TASM im Ordner.
1
#include <stdio.h>
2

3
int b;
4

5
void testasm(int a)
6
{  
7
   asm mov ax,a ;
8
   asm add ax,255 ;
9
   asm mov b,ax ;   
10
}
11

12
int main ()
13
{
14
    int a;
15
    
16
    a=1000;
17
    testasm(a);
18
    printf("%d", b);
19
    while( !kbhit() ){ }               
20
}
Angehängte Dateien:
OP
Ich habe kein Turbo 2 C++ ich habe den Turbo C 2.

---------------------------------------------
> der TASM ist ein unabhängiges Produkt (wo hattest du den her?) und die
> inline-asm Syntax wird von TASM nicht verstanden weil die C-orientiert
> ist
---------------------------------------------

Der TASM ist mit dabei bei Turbo C 2
Der TASM versteht nicht die Syntax mit diesem {} sondern nur mit :
asm mov ax,bx ; siehe weiter oben mein Programm.
.........
.........
Gast
Peter B. schrieb:
> Ich habe kein Turbo 2 C++ ich habe den Turbo C 2.
>
> ---------------------------------------------
>> der TASM ist ein unabhängiges Produkt (wo hattest du den her?) und die
>> inline-asm Syntax wird von TASM nicht verstanden weil die C-orientiert
>> ist
> ---------------------------------------------
>
> Der TASM ist mit dabei bei Turbo C 2

Der unterschied zwischen Borland und Turbo ist nur die Menge an Libs und 
supportete Systeme, die Tasm version ist bestimmt die gleiche

> Der TASM versteht nicht die Syntax mit diesem {} sondern nur mit :

Klar, aber warum soll er die inline syntax können? Und nochmal: wenn er 
dabei ist, warum musstest du ihn "hineinkopieren"?

Und welches interface soll denn der kompiler da bedienen, es gibt ja 
nicht wie beim linker die obj dateien, höchsten du kompilierst über den 
Weg mit assembler listings mit -B oder als option in der IDE
OP
------------------------
Mit dem turbo c 2 und dem tasm scheinst du recht zu haben, sehr
verwirrend, mit dem borland c 2 geht es
------------------------

So wie ich euch von hier kenne , spielt ihr damit nicht mehr.
Alles höher...alles schneller.

Wenn du weiterhin so skeptisch bist , reicht dein Leben nicht aus
um auch noch die anderen schönen Sachen kennen zu lernen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.