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

[求助]编译不通过,Missing or unreachable cs

dalin 发布于 2007-04-18 22:44, 2035 次点击
;此程序目的是计数1的个数,并输出,addr中放4567的符号地址number,number中放4567
;数据
data segment
addr: dw number
number: dw 4567
count: dw ?
data ends
prognam segment
main proc far
assume cs:prognam,ds:data
start: push ds ;set stack segment
sub ax,ax
push ax
;main part of program ;数1
mov ax,data
mov ds,ax
sub cx,cx
mov bx,addr
mov ax,[bx]
repeat: test ax,0ffffh
jz exit
jns shift
inc cx
shift: shl ax,1
jmp repeat
exit: mov bx,cx ;以16进制输出
mov cl,4
mov ch,4
rotate: rol bx,cl
mov ax,bx
and ax,000fh
add al,30h
cmp al,3ah
jl print
add al,7
print: mov ah,2
mov dl,al
int 21h
dec ch
jnz rotate
ret
main endp
prognam ends
end start
7 回复
#2
菜鸟上路2007-04-19 12:19
把far改成其他限制符试试
#3
dalin2007-04-19 16:29
回复:(菜鸟上路)把far改成其他限制符试试

改为near也是一样的错误提示,看提示意思好像是cs指向一个达不到的地址,但是不知从哪里开始查错;
希望大家不吝赐教

#4
菜鸟上路2007-04-19 21:58
是不是assume cs:prognam,ds:data要写在main proc far前面啊?!
#5
dalin2007-04-20 12:34
回复:(dalin)[求助]编译不通过,Missing or unreac...

不是这个问题

#6
dalin2007-04-20 12:42
回复:(dalin)[求助]编译不通过,Missing or unreac...
assume 比较随意的,放哪都行吧,只要没重复定义
#7
dalin2007-04-20 12:52
回复:(dalin)[求助]编译不通过,Missing or unreac...

;此程序目的是数1的个数,并输出,addr中放4567的符号地址number,number中放4567
;数据

prognam segment
main proc far
assume cs:prognam
start: push ds ;set stack segment
sub ax,ax
push ax
;main part of program ;数1

sub cx,cx

mov ax,4567
repeat: test ax,0ffffh
jz exit
jns shift
inc cx
shift: shl ax,1
jmp repeat
exit: mov bx,cx ;以16进制输出
mov cl,4
mov ch,4
rotate: rol bx,cl
mov ax,bx
and ax,000fh
add al,30h
cmp al,3ah
jl print
add al,7
print: mov ah,2
mov dl,al
int 21h
dec ch
jnz rotate
ret
main endp
prognam ends
end start

#8
dalin2007-04-20 12:53

就是不要数据段,直接将ax寄存器值设置为4567,这样可以得到正确程序
可是又没有人知道为什么?

1