当前位置:编程学习 > 汇编语言 >>

汇编报missing or unreachable cs 错误,这是我写的完整代码,那位大哥大姐,可以帮我看看是什么原因?

data segment musif dw 147,165,175,196,220,147,262 dw 220,147,220,196,175,165 dw 147,165,175,196,220,196,175 dw 165,220,165,175,165,147,131,147 dw 147,165,175,196,220,196,262 dw 2 dup(294),330,349 dw 294,330,349,392,440,392,349 dw 392,330,349,392 dw 2 dup(147),165,175 dw 165,220,165 dw 165,175,147 dw 131,147,2 dup(220),147 dw 2 dup(147),165,175 dw 165,2 dup(175),196 dw 147,2 dup(220) dw 220,196,220,131 dw 2 dup(294),330,349 dw 330,2 dup(220),330 dw 330,175,294,262 dw 262,294,2 dup(220),330 dw 2 dup(294),330,349,392 dw 330,2 dup(349),392 dw 262,2 dup(220),440 dw 392,349,330,349 dw 349,2 dup(262),2 dup(349),220,262,330 dw 349,262,220,3 dup(349),392,440 dw 349,2 dup(262),2 dup(349),262,349,492 dw 440,392,349,330,262 dw 349,2 dup(262),2 dup(349),220,262,330 dw 349,262,220,3 dup(349),392,440 dw 349,2 dup(262),2 dup(349),262,349,492 dw 440,392,440 dw 349,2 dup(262),2 dup(349),220,262,330 dw 349,262,220,3 dup(349),392,440 dw 349,2 dup(262),2 dup(349),262,349,492 dw 440,392,349,330,262 dw 349,2 dup(262),2 dup(349),220,262,330 dw 349,262,220,3 dup(349),392,440 dw 349,2 dup(262),2 dup(349),220,349,392 dw 440 dw 440 dw -1 musit: dw 4 dup(12),25,2 dup(12) dw 2 dup(25),4 dup(12) dw 4 dup(12),25,2 dup(12) dw 8 dup(12) dw 4 dup(12),25,2 dup(12) dw 4 dup(25) dw 50,2 dup(12),25 dw 2 dup(38),25 dw 38,12,2 dup(25) dw 25,2 dup(12),2 dup(25) dw 50,2 dup(12),25 dw 38,12,2 dup(25) dw 38,12,50 dw 50,2 dup(12),25 dw 50,2 dup(12),25 dw 38,12,2 dup(25) dw 38,12,2 dup(25) dw 25,2 dup(12),2 dup(25) dw 50,4 dup(12) dw 38,12,2 dup(25) dw 38,12,2 dup(25) dw 4 dup(25) dw 8 dup(12) dw 8 dup(12) dw 8 dup(12) dw 50,4 dup(12) dw 8 dup(12) dw 8 dup(12) dw 8 dup(12) dw 50,2 dup(25) dw 8 dup(12) dw 8 dup(12) dw 8 dup(12) dw 50,4 dup(12) dw 8 dup(12) dw 8 dup(12) dw 100 dw 100 data ends code segment assume cs:code,ds:data main proc far start: mov ax,data mov ds,ax lea si,musit lea bp,ds:musif voim: mov di,[si] cmp di,-1 je endf mov bx,ds:[bp] mov al,0b6h out 43h,al mov dx,12h mov ax,348ch div di out 42h,al mov al,ah out 42h,al in al,61h mov ah,al or al,3 out 61h,al wait1: mov cx,1400 long: loop long dec bx jnz wait1 mov al,ah out 61h,al add si,2 add bp,2 jmp voim endf: mov ah,4ch int 21h code ends end start
追问:谢谢,是这样的,我把冒号去掉后,在运行却报divide overflow的错误,是什么原因呢?
答案:在后面加有标号的“:”的地址标号,只能在代码段中使用,不能在其他段中使用。
所以musit:中的冒号去掉就行了
其他:楼上回答的正确。
程序中有一个功能性错误,修改后可发声。。。
start:
mov ax,data
mov ds,ax
lea si,musif                     ;将musit修改成musif 
lea bp,ds:musit               ;将musif修改成musit 

上一个:求 ibm-pc汇编语言程序设计(第2版)pdf 电子书
下一个:一个汇编习题,求解

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,