注册 登录
编程论坛 汇编论坛

程序超过段地址该如何处理?

zhuyi108 发布于 2011-01-24 11:14, 812 次点击
我写的程序现在有个问题,我在一个函数中加入了一些功能,但是一加进去编译就会报错by 9 byte或者 by N byte之类的,我请教了别人,人家说是程序超过了段地址范围~ 以前从来没有碰到过此类问题,请问我该如何处理,最好具体点,第一次碰到这个问题?
 
 
5 回复
#2
zaixuexi2011-01-24 11:59
是不是jmp short越界了,方便把代码贴下么,呵呵.
#3
zhuyi1082011-01-24 12:08
回复 2楼 zaixuexi
程序很长,我前面加的是
 .model large
.386p
段地址是超过64k了,我在调用的函数里面新加了一些功能语句就出现这个现象了,据人家说是超过段地址了,不知道如何处理这个问题,真是首次遇到,大侠会的话能否举个小例子叫我学习下,不胜感激!!!!
#4
zhuyi1082011-01-24 16:14
.model large
.386p
.stack 512
.data
 zhishi   db'----->$'
 string   db'RSD PTR $'
 string0  db'Address:$'
 string1  db'Sianature:$'
 stringa  db'  RSDT  $'
 stringb  db'  XSDT  $'
 stringc  db'  FADT  $'
。。。。。。。。。。。。。
.code   
clear_screen macro colour,row1,col1
      pushad
      mov ah,07h
      mov al,0
      mov bh,colour
      mov cx,row1
      mov dx,col1
      int 10h
      popad   
 endm
。。。。。。。。。。。。。。。。。。。。。。。
.startup
      mov ax,@data
      mov ds,ax
。。。。。。。。。。。。。。。。。。。。。。。。
   ..........
   call  xxx
   .........
xxx proc near
 ......
.......
xxx endm
..............
。。。。。。。。。。。。。。。。。。。
end
在xxx函数中 如果添加指令就会报错,出现by n byte 的错误!!这个怎么修改才能不报错!!
#5
zaixuexi2011-01-24 19:05
从你目前的代码来看,如果你代码里的宏用到的比较多,展开以后会比较占空间,把宏都改成函数调用试试,可能代码段会小些
#6
zhuyi1082011-02-22 11:02
回复 5楼 zaixuexi
用宏的话是因为里面有一些变量,没办法。用函数的话函数会很多,所以一半是宏一半是函数,不过这个问题已经解决了,设置了两个代码段,就好了~
1