运行Mac OS X的汇编代码

时间:2017-03-06 07:37:54

标签: macos assembly irvine32

我目前正在参加装配课程,我必须在Mac OS X上运行代码,而且我对如何在Mac OS X上运行代码感到迷失

以下是代码:

; Description: This program adds and subtracts 16‐bit integers.
; Revision Date:
INCLUDE Irvine32.inc
.code
main PROC
mov ax, 650          ; AX = 650h
sub ax, 50h          ; AX = 600h
sub ax, 100h         ; AX = 500h
sub ax, 300h         ; AX = 200h
call DumpRegs        ; display registers
exit
main ENDP
END main

这是我收到的错误消息

Tayvions-MacBook-Pro:~ tayvionpayton$ cd Documents/Code/
Tayvions-MacBook-Pro:Code tayvionpayton$ nasm -f macho32 -o0 assembly_Tp.asm 
assembly_Tp.asm:4: error: parser: instruction expected
assembly_Tp.asm:5: warning: label alone on a line without a colon might be in error
assembly_Tp.asm:6: error: parser: instruction expected
assembly_Tp.asm:12: warning: label alone on a line without a colon might be in error
assembly_Tp.asm:13: error: symbol `main' redefined
assembly_Tp.asm:13: error: parser: instruction expected
assembly_Tp.asm:14: error: parser: instruction expected
Tayvions-MacBook-Pro:Code tayvionpayton$ 

1 个答案:

答案 0 :(得分:1)

汇编程序代码未运行,它是:

  1. 汇编/编译 - 根据样式和语法,有一些选择。您已使用英特尔语法尝试NASM。还有gnu汇编程序,在使用所谓的AT&T Syntax语法编写源代码时使用。见GAS
  2. 将源代码编译为目标代码格式后,将调用链接器来解析外部引用和/或附加静态库以创建可执行文件。您可以使用gnu链接器[LD]。3
  3. 执行此操作

    以下是使用NASM的两步编译/链接示例:

    首先将源代码编译为目标文件。这个例子是32位:

    nasm -f macho32 -O0 helloworld.asm 
    

    这将生成helloworld.o(对象)文件。然后,您需要通过链接完成此操作:

    ld helloworld.o -o helloworld
    

    您现在可以使用./helloworld

    运行