|
主题 : : 关于多个代码段的问题 [待解决] |
回复[ 6次 ]
点击[ 272次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2012-02-28 10:26 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-02-05 17:11 |
以前写的代码都是一个代码段的,但是一个代码段就有大小的限制,今天就写了个有过个代码段的程序都是有错,请指点......
如果我的代码有多个代码段编译的时候怎么通不过?
eg: (该实例没有什么特别的含义)
assume cs:code
data0 segment
db 16 dup(0)
data0 ends
data segment
db 16 dup(0)
data ends
code segment
main:mov ax,data
mov ds,ax
mov ax,data0
mov es,ax
mov si,0
mov ax,code2
mov word ptr ds:[0],0
mov ds:[2],ax
mov ax,4
call dword ptr ds:[0];to code2
mov ax,4c00h
int 21h
code ends
code2 segment
jmp short code2_code1 ;(1)
mov ax,9
code2_code1:inc ax ;(2)
mov ax,8
retf
code2 ends
end main
编译报错:t5.ASM(28): error A2062: Missing or unreachable CS
如果将(1)去掉,并把(2)处改成 inc ax就正确了,这是怎么回事?难道在两个代码段中转移有什么需要注意的吗?请求指点迷津,先谢了 | | |
|
|
|
|
[第1楼]
[ 回复时间:2012-02-28 22:24 ]
[引用]
[回复]
[ top ] | |
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51 |
|
|
|
|
|
[第2楼]
[ 回复时间:2012-02-28 22:26 ]
[引用]
[回复]
[ top ] | |
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51 |
assume cs:code
data0 segment
db 16 dup(0)
data0 ends
data segment
db 16 dup(0)
data ends
code segment
main:mov ax,data
mov ds,ax
mov ax,data0
mov es,ax
mov si,0
mov ax,code2
mov word ptr ds:[0],0
mov ds:[2],ax
mov ax,4
call dword ptr ds:[0];to code2
mov ax,4c00h
int 21h
jmp short code2_code1 ;
mov ax,9
code2_code1:inc ax ;(2)
mov ax,8
retf
code ends
end main | | |
|
|
|
|
[第3楼]
[ 回复时间:2012-02-28 22:26 ]
[引用]
[回复]
[ top ] | |
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51 |
|
|
|
|
|
[第4楼]
[ 回复时间:2012-02-29 13:13 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-02-05 17:11 |
回复:[第3楼]
------------------
我就是像要多个代码段的,应该怎么调整 | | |
|
|
|
|
[第5楼]
[ 回复时间:2012-02-29 21:47 ]
[引用]
[回复]
[ top ] | |
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51 |
没这么做过,如果楼主研究出来了,可以给大家分享一下。 | | |
|
|
|
|
[第6楼]
[ 回复时间:2012-03-01 19:11 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-02-05 17:11 |
回复:[第5楼]
------------------
我也没有弄出来 | | |