打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
nasm calling subroutine from another file

I'm doing a project that attaches a subroutine that I wrote to a main file included by the teacher. He gave us the instructions for making our subroutine global but apparently I'm an idiot. The two asm files are in the same folder, I'm using nasm -f elf -g prt_dec.asm and ld prt_dec and then doing the same for main.asm. Here's the relevant code in the main.asm:

    SECTION .text                   ; Code section.global  _start                  ; let loader see entry pointextern  prt_dec_start:mov     ebx, 17mov     edx, 214123mov     edi, 2223187809mov     ebp, 1555544444mov     eax, dword 0x0call    prt_deccall    prt_lf

The line call prt_dec throws "undefined reference to prt_dec" when i use ld main.o

Here's the a code segment from my prt_dec.asm:

    Section .text    global prt_dec    global _startstart:prt_dec:      (pushing some stuff)L1_top:(code continues)




/////////////


You want to call a routine in another asm file or object file?if you are Assembling prt_dec.asm and are linking multiple asm files to use in your main program, here is a sample, 2 asm files Assembled and linked together... * NOTE * hello.asm *DOES NOT * have a start label!

Main asm file: hellothere.asm

sys_exit    equ 1extern Hello global _start section .text_start:    call    Hello    mov     eax, sys_exit    xor     ebx, ebx    int     80H

Second asm file: hello.asm

sys_write   equ 4stdout      equ 1global Hellosection .dataszHello     db  "Hello", 10Hello_Len   equ ($ - szHello)section .textHello:        mov     edx, Hello_Len        mov     ecx, szHello        mov     eax, sys_write        mov     ebx, stdout        int     80H       ret

makefile:

APP = hellothere$(APP): $(APP).o hello.o    ld -o $(APP) $(APP).o hello.o$(APP).o: $(APP).asm     nasm -f elf $(APP).asm hello.o: hello.asm    nasm -f elf hello.asm

Now, if you just want to separate your code into multiple asm files, you can include them into your main source: with %include "asmfile.asm" at the beginning of your main source file and just assemble and link your main file.

 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
gdb 调试nasm语法的汇编程序
linux简单之美
vc 链接asm文件
自己动手写操作系统虚拟实现,软盘启动
如何写一个最简单的操作系统
第7章 NASM的使用教程(X86汇编教程)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服