首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

一个关于org伪指令的有关问题

2012-10-11 
一个关于org伪指令的问题assume cs:codesgcodesg segmentmov ax,csmov ds,axmov si,offset int7chmov ax,0

一个关于org伪指令的问题
assume cs:codesg
codesg segment
mov ax,cs
mov ds,ax
mov si,offset int7ch
mov ax,0
mov es,ax
mov di,200h
mov cx,offset int7chend-offset int7ch
cld
rep movsb
mov word ptr es:[7ch*4],200h
mov word ptr es:[7ch*4+2],0
mov ah,2
mov al,3
int 7ch
mov ah,4ch
int 21h

org 200h ;我对org不是很理解,前面的代码中不是把下面的代码复制到0:200处了吗,为什么还要  
;加一个org 200h
int7ch:
jmp short set
table dw qingping,qjs,bjs,sgyh
set:
push bx
cmp ah,3
ja sret
mov bl,ah
mov bh,0
add bx,bx
call word ptr table[bx]
sret:
pop bx
iret
.....后面还有几段子程序

[解决办法]
org 200h 就是偏移200H,即编译出来的地址都会加200H
[解决办法]
不同的起始加载地址,对其后数据的地址当然会不一样了。如果程序载入内存运行的地址和源程序里的设置不一致,在指令的代码上就会形成错误的地址引用,从而造成错误的结果。还不明白,看看最后生成的可执行程序的这个指令的纯汇编指令,在程序段里的,和复制到 0:200 处的,仔细对比下。

热点排行