Forum
Tipps
News
Menu-Icon

Lesen/Schreiben aus dem Stack

Alsoo.. ich versteh nicht wirklich wieso das nicht funktioniert..  Der letzte eingelesene eintrag spuckt wirre zaheln aus.. wo sitzt der fehler ?? ^^'

#include <iostream>

using namespace std;

//GLOBALS

int stack_in;
int stack_out;
int SP;
int SS;

int main()
{
    //Eingabe
    cout << "stack1: ";
    cin >> stack_in;
   
    //Im Stack Speichern
    __asm("mov _stack_in, %eax");
    __asm("push %eax");
   
   
    //Eingabe
    cout << "stack2: ";
    cin >> stack_in;
   
    //Im Stack Speichern
    __asm("mov _stack_in, %eax");
    __asm("push %eax");
   
   
    //Aus dem Stack holen.. und in Variable speichern
    __asm("pop %eax");
    __asm("mov %eax, _stack_out");
   
    cout << "\nstack1: " << stack_out; //Ausgabe
   
    //Aus dem Stack holen.. und in Variable speichern
    __asm("pop %eax");
    __asm("mov %eax, _stack_out");
   
    cout << "\nstack2: " << stack_out;
    //Hier zeigt er wirre Zahlen
   
    cout << "\n\n";
    system("pause");
   
    return 0;
}

So wie ich das gelsen habe.. sollte das ganz simple funktionieren..

mov ax, 1234h
mov bx, 5678h
push ax
push bx
pop bx
pop ax

So umgefaehr hab ichs gemacht.. funcen tuts nich....

MFG
TOMEK

 

Antworten zu Lesen/Schreiben aus dem Stack:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ich hab zwar keinen Plan von Assembler, aber hast du nicht beim moven die Parameter vertauscht? So wie auch unten angegeben: erst das Register, dann der Wert...

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

ahja.. hab vergessen zu sagen... das ich das programm mit Dev-C++ Compiliere.. und der Compiler liest Asssembler nur mit der AT&T Syntax... das da unter (das beipsiel) ist geschrieben in der verbreiteten INTEL Syntax.. und da ist das genau umgekehrt.. ^^ (und die AT &T Syntax ist bissslll umschtaendlicher..)

 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

hmm... ich das ganze noch mal "umgeschrieben" und... es funktioniert !!! wieso auch immer... es funktioniert ;D

#include <iostream>

using namespace std;

unsigned int CX;
unsigned int BX;
unsigned int AX;

unsigned int iCX;
unsigned int iBX;
unsigned int iAX;

int main()
{
    cout << "AX: ";
    cin >> iAX;
    cout << "BX: ";
    cin >> iBX;
    cout << "CX: ";
    cin >> iCX;
    cout <<endl;
   
    __asm("mov _iAX, %ax    \n\t \
           mov _iBX, %bx    \n\t \
           mov _iCX, %cx    \n\t \
           push %ax         \n\t \
           push %bx         \n\t \
           push %cx         \n\t \
           pop %cx          \n\t \
           pop %bx          \n\t \
           pop %ax          \n\t \
           mov %cx, _CX     \n\t \
           mov %bx, _BX     \n\t \
           mov %ax, _AX     ");
   
    cout << CX << " " << BX << " " << AX <<endl;
    system("pause");
   
    return 0;   
}

MFG
TOMEK

« INI schreiben/lesen mit Visual Studio (Basic)EXCEL : Uhrzeit in Dezimal Umwandeln »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet den unkompilierten Programm-Code einer Software. Quell- oder Programm-Code ist der auch für Menschen lesbare Co...

Unicode
Unicode ist ein international anerkannter Standard, der als universeller Zeichencode ("Universal Code") dient und durch das Unicode-Konsortium entwickelt und verwaltet wi...

QR-Code
QR-Codes, die Abkürzung für "Quick Response Codes", sind eine Form von zweidimensionalen Barcodes. Damit lassen sich Informationen schnell und effizient speiche...