gpt4 book ai didi

linux - 80x86 Assembly - 非常基本的 I/O 程序从 Windows 到 Linux 的转换

转载 作者:太空狗 更新时间:2023-10-29 11:11:12 25 4
gpt4 key购买 nike

所以我第一天上 Assembly 课,你知道什么?我的教授在她的 Windows 机器上教授所有内容,使用 Windows API 调用等。这很好,除了我在我的机器上运行 Ubuntu..

基本上,我希望能找到解决方法或某种形式的共同点,以便完成作业。

今天,我们的第一个编程作业是输入两个整数并输出总和。我遵循教授的代码如下:


.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

够简单直接了吧?所以我今天上交了它,所有这些都是通过糟糕的学校电脑连接起来的。我完全理解所涉及的所有概念,但是,如果我真的想将它组装到我的盒子上,我会在这里看到 2 个主要问题:

1)

.model        flat
2)
ExitProcess PROTO NEAR32 stdcall, dwExiteCode:DWORD
和我听说的这两个都是 Windows 特有的。所以我的问题是如何修改这段代码以便能够在 Linux 上进行汇编?

抱歉,如果我遗漏了任何细节,但如果您需要,我会通知您。

谢谢!

最佳答案

一般来说,汇编代码几乎总是特定于平台的。事实上,即使在相同的硬件和操作系统平台内,汇编程序之间的语法也不同!

您可能还会遇到那里的 io.h 问题 - 我敢打赌它会调用很多 win32 API。

我建议简单地使用 wine ,以及您的教授正在使用的任何汇编程序的副本,以运行您教授的示例。如果它可以运行 Microsoft Office 和 Steam 之类的东西,它当然可以运行一些简单的示例代码:)

关于linux - 80x86 Assembly - 非常基本的 I/O 程序从 Windows 到 Linux 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4655584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com