编程论坛
注册
登录
编程论坛
→
汇编论坛
程序超过段地址该如何处理?
zhuyi108
发布于 2011-01-24 11:14, 812 次点击
我写的程序现在有个问题,我在一个函数中加入了一些功能,但是一加进去编译就会报错by 9 byte或者 by N byte之类的,我请教了别人,人家说是程序超过了段地址范围~ 以前从来没有碰到过此类问题,请问我该如何处理,最好具体点,第一次碰到这个问题?
5 回复
#2
zaixuexi
2011-01-24 11:59
是不是jmp short越界了,方便把代码贴下么,呵呵.
#3
zhuyi108
2011-01-24 12:08
回复 2楼 zaixuexi
程序很长,我前面加的是
.model large
.386p
段地址是超过64k了,我在调用的函数里面新加了一些功能语句就出现这个现象了,据人家说是超过段地址了,不知道如何处理这个问题,真是首次遇到,大侠会的话能否举个小例子叫我学习下,不胜感激!!!!
#4
zhuyi108
2011-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
zaixuexi
2011-01-24 19:05
从你目前的代码来看,如果你代码里的宏用到的比较多,展开以后会比较占空间,把宏都改成函数调用试试,可能代码段会小些
#6
zhuyi108
2011-02-22 11:02
回复 5楼 zaixuexi
用宏的话是因为里面有一些变量,没办法。用函数的话函数会很多,所以一半是宏一半是函数,不过这个问题已经解决了,设置了两个代码段,就好了~
1