NASM中的org

上网看了几个资料

总结如下:

org 0700h是告诉编译器,程序将会加载到0700h处。

当然编译器是无法决定程序被加载到哪里的。

如果没有这条命令,默认就会orng 0h

这样就会出现问题,比如写BOOT,BIOS默认把它加载到0700h处。然后来看下面的例子:

1 jmp CODE;                假设此指令占3个字节。
2 DATA:
3 V1 dw 0
4 V2 dw 1
5 CODE:
6 mov ax,[V1]

没有加 ORG 7c00H 时,相当于:

mov ax,[DS:3h]    

加了 ORG 7c00h 时,相当于:

mov ax,[DS:7c03h]

明显可以看到其中的不同。

当然这是编译成bin的时候。如果编译成其它的ELF、PE,就是另外一回事了。

原文地址:https://www.cnblogs.com/02xiaoma/p/3015798.html