2011-01-11 3 views
3

アセンブリクラスの最初の日で、何を知っていますか?私の教授は、Windows API呼び出しを使ってWindowsボックスにすべてを教えています。私のボックスにUbuntuを実行している以外は問題ありません。80x86アセンブリ - WindowsからのLinuxへの非常に基本的なI/Oプログラム変換

基本的に、私は回避策または何らかの形私が自分の課題を遂行するためには共通の根拠がある。

今日、最初のプログラミング割り当てでは、2つの整数を入力して合計を出力しました。私は次のように教授のコードに従いました:


.386 
.model  flat 

ExitProcess PROTO NEAR32 stdcall, dwExiteCode:DWORD 

include  io.h 

cr  EQU 0dh 
lf  EQU 0ah 

.stack  4096 

.data 

szPrompt1 BYTE "Enter first number: ", 0 
szPrompt2 BYTE "Enter second number: ", 0 
zLabel1  BYTE cr, lf, "The sum is " 
dwNumber1 DWORD ?    ; numbers to be added 
dwNumber2 DWORD ? 
szString BYTE 40 DUP (?)   ; input string for numbers 
szSum  BYTE 12 DUP (0)   ; sum in string form 
szNewline BYTE cr,lf,0 



.code       ; start of main program code 
_start: 
    output  szPrompt1    ; prompt for ?rst number 
    input  szString,40     ; read ASCII characters 
    atod  szString    ; convert to integer 
    mov   dwNumber1,eax    ; store in memory 
    output  szPrompt2    ; repeat for second number 
    input  szString,40 
    atod  szString 
    mov   dwNumber2,eax 
    mov   eax,dwNumber1    ; first number to EAX 
    add   eax,dwNumber2    ; add second number 
    dtoa  szSum,eax    ; convert to ASCII characters 

    output  szLabel1    ; output label and results 
    output  szSum 
    output  szNewline 

    INVOKE  ExitProcess,0    ; exit with return code 0 

    PUBLIC  _start     ; make entry point public 
    END        ; end of source code 

シンプルでわかりやすいですね。だから私は今日、それをすべて、虚弱な学校のコンピュータからつながった。

1)

.model  flat
2)私が聞いた、どちらも
ExitProcess PROTO NEAR32 stdcall, dwExiteCode:DWORD
と :そして、私は完全に私が実際に私の箱の上にそれを組み立てたい場合、私はここのための2つの主要な問題を参照してください、しかし、関係するすべての概念を理解します非常にWindows固有です。だから私の質問は、私はこのコードをLinux上で組み立てるために変更することができますか?

申し訳ありませんが、私は詳細が不足しているが、必要に応じてお知らせします。

ありがとうございます!

+0

はじめに、Hello world in assembly:http://www.cin.ufpe.br/~if817/arquivos/ asmtut/index.html#maindiff –

答えて

3

アセンブリコードは、一般的に言えば、ほぼ常にプラットフォーム固有です。実際、同じハードウェアとOSプラットフォーム内であっても、アセンブラによって構文が異なります。

また、おそらく、そのio.hに問題があるでしょう - 私はwin32 APIに多くの呼び出しを行っていると思います。

あなたの教授の例を実行するために、あなたの教授が使用しているアセンブラのコピーと共に、wineを単に使用することをお勧めします。 Microsoft OfficeやSteamのようなものを実行できるのであれば、簡単なサンプルコードを実行することができます:)

+0

WINEホームページへのリンクを張って、他の読者があなたの話を知るようにしてください。 – Gabe

+0

あなたの回答に感謝しますが、Windowsのパーティションを再インストールするよりも簡単で簡単だとは思いますが、私はWINEルートを下る必要があると聞きたくはありません。 – jerluc

+0

教授が実行できるようにしたい場合あなたが提出した課題は、同じアセンブラ/ OS/CPUの組み合わせでテストしなければならないでしょう、私は恐れています。 – bdonlan

関連する問題