关于org指令的一些理解

ORG是Origin的缩写:起始地址,源。在汇编语言源程序的开始通常都用一条ORG伪指令来实现规定程序的起始地址

在编写引导程序是,在程序的开通通常有

org 0x7c00

作用是改变标号的位置(不是真正的地址,只是加上了一个偏移量),即并不是因为org 0x7c00引导程序才被装到内存的0x7c00。比如

org 0x7c00
mov si,msg
msg:
	db "hello,world"
mov si,msg
msg:
	db "hello,world"

则上面寄存器里的值下面寄存器里的值加上0x7c00,如果上面的si要正确指向msg,还需要加上0x7c00。

附一段引导程序帮助理解

;org 0x7c00
mov ax,cs;cs为0,因为硬盘首扇区加载到了0x7c00,即0:7c00
mov ss,ax
mov ds,ax
mov ax,0xb800
mov es,ax
mov si,mmsg+0x7c00 ;mmsg只是这个程序段里mmsg的偏移量,org 0x7c00做的也就是这个
xor bx,bx
print:
	mov al,[ss:si]
	mov ah,0x0f
	add si,1
	cmp al,0x00
	jz infi
	mov [es:bx],ax
	inc bx
	inc bx
	jmp print

infi:jmp near infi

mmsg:
	db 'hello,world'
	db 0x00
	times 510-($-$$) db 0x00
	db 0x55,0xaa

在.com程序通常会有org 100h,这是因为.com程序会强制加载到内存段偏移100h处,所以就要加个org 100h了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值