Turbo C 2 mit ASM Inline mit Schleife ?

OP #6221659
Lesenswert?

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 #6221664
Lesenswert?

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.
#6221806
Lesenswert?

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 #6221888
Lesenswert?

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
}
Beitrag #6221947 wurde von einem Moderator gelöscht.
OP #6222210
Lesenswert?

-----------------------
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 #6222219
Lesenswert?

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 #6222237
Lesenswert?

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 #6222245
Lesenswert?

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 #6222247
Lesenswert?

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 #6222306
Lesenswert?

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 #6222383
Lesenswert?

------------------------
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren