鱼C论坛

 找回密码
 立即注册
查看: 1794|回复: 12

编译出了问题具体请看代码

[复制链接]
发表于 2012-12-17 15:34:45 | 显示全部楼层 |阅读模式
1鱼币
data segment
time: db 'yy/mm/dd hh:mm:ss','$'
table: db 9,8,7,4,2,0
data ends
编译的时候 先用masm编译然后用link链接没有问题 但用ML编译链接就会出现
1111.jpg
将里面的冒号去掉就没有问题了 如果将上面的第二行和第三行代码放在code segment 里面有冒号没有问题


最佳答案

查看完整内容

反正放入data段就不要加冒号了,那只是编译器的原因吧,不用纠结
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-12-17 15:34:46 | 显示全部楼层
反正放入data段就不要加冒号了,那只是编译器的原因吧,不用纠结
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-17 15:36:59 | 显示全部楼层
6.15版本的语法本来就有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-17 15:43:55 | 显示全部楼层
那个冒号是加的对 还是不加的对呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-17 22:51:14 | 显示全部楼层
兄弟,我没有见过在数据定义字段要用标号的。可能是我见识浅漏吧。如果你认为数字符不方便,可以0字符尾,代码段中加入条件判断转移指令(jcxz)就可以了,不必那么麻烦。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-18 08:58:22 | 显示全部楼层

这个是实验14里面的代码,我以前也没有用过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-18 13:16:28 | 显示全部楼层
wawa 发表于 2012-12-18 08:58
这个是实验14里面的代码,我以前也没有用过

兄弟,你强大,进度好快。记得你第一个问题好像前几章,现在已经进入十四章了。历害,我现在才到十三章。来帮我解决个问题:
assume cs:code
code segment
start:        mov ax,cs                                ;定义复制源
                mov ds,ax
                mov si,offset sub0
               
               
                mov ax,0                                ;定义复制目的地址
                mov es,ax
                mov di,200h
               
                mov cx,offset ok - offset sub0
                cld                                                ;复制方向
                rep movsb
               
                mov ax,0                                ;设置中断向量
                mov es,ax
                mov word ptr es:[7ch*4],200h
                mov word ptr es:[7ch*4+2h],0h
               
                ;测试一下
                int 7ch
               
                mov ax,4c00h
                int 21h
               
sub0:        jmp short s
                db "Weclome to masm!",0
               
s:                mov ax,0b800h
                mov es,ax
                mov di,12*160+36*2
               
                mov ax,cs
                mov ds,ax
                mov si,202h
               
                mov al,02h
s0:                mov ch,0
                mov cl,ds:[si]
                jcxz short ok
               
                mov byte ptr es:[di],cl
                mov byte ptr es:[di+1],al
                inc si
                add di,2
                jmp short s0
               
       
               
                mov ax,4c00h
                int 21h
               
ok:                nop
                iret
               
               
                code ends
end start



这个老运行错误,以我的水平实在是找不到原因在那里。牛人帮忙指点一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-18 16:05:21 | 显示全部楼层
lyoal 发表于 2012-12-18 13:16
兄弟,你强大,进度好快。记得你第一个问题好像前几章,现在已经进入十四章了。历害,我现在才到十三章。 ...

安装程序有错误,少安装了几个代码
mov cx,offset ok - offset sub0 改成 mov cx,offset subend - offset sub0
在iret下面加一个 subend: nop
最近工作不忙,就囫囵吞枣的多看了一些,我不是大牛,很想成为,但水平不够
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-18 17:34:23 | 显示全部楼层
:'(,我真够蠢的,眼神肯定有问题。我比对的是我自己的代码,代码中最后没有IRET代码。纠结!非常感谢,以后请多指教!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-18 19:58:51 | 显示全部楼层
lyoal 发表于 2012-12-18 17:34
,我真够蠢的,眼神肯定有问题。我比对的是我自己的代码,代码中最后没有IRET代码。纠结!非常感谢,以后 ...

一起学习,共同进步
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-19 00:14:21 | 显示全部楼层
wawa 发表于 2012-12-18 19:58
一起学习,共同进步

再次求助一下,十三章的一个例题,一直还是搞不懂,没办法智商就这么高了。朋友帮忙看一下,问题在那里?再次表示感谢!
assume cs:code
code segment
start:                
;===============中断处理程序=========================================
                        mov ax,0                                                ;安装中断处理程序
                        mov es,ax
                        mov di,200h
                        
                        mov ax,cs
                        mov ds,ax
                        mov cx,offset s1end - offset s1        ;传送数据所用到的偏移地址
                        
                        cld                                                                ;数据传送方向
                        rep movsb                                                ;开始传送数据
                        
                        mov ax,0                                                ;定义中断向量
                        mov es,ax
                        mov word ptr es:[7ch*4],200h        ;程序入口偏移地址
                        mov word ptr es:[7ch*4+2],0                ;程序入口段地址

                        
;============以下为主程序================================================                        


                        mov ax,0b800h                                        ;定义显存位置
                        mov es,ax
                        mov di,160*12
                        mov bx,offset s - offset send
                        mov cx,80
                        
        s:                mov byte ptr es:[di],'!'                  ;执行程序
                        mov byte ptr es:[di+1],41h
                        add di,2
                        int 7ch                                                        ;中断7ch,调用中断处理程序

                        mov ax,4c00h
                        int 21h                
        send:        nop
                                                
;============需要安装的处理程序============================================
        s1:                push bp
                        mov bp,sp
                        dec cx
                        jcxz ok
                        add [bp+2],bx
                        ;这个是地方是不是要加一条指令,使cpu指向s标号处执行循环呢?
                        
                        
        ok:                pop bp
                        iret
                        
        s1end:        nop
                        
                        code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-19 09:53:05 | 显示全部楼层
lyoal 发表于 2012-12-19 00:14
再次求助一下,十三章的一个例题,一直还是搞不懂,没办法智商就这么高了。朋友帮忙看一下,问题在那里? ...

第九行和第十行就少了一条代码,mov si,offset s1end 你再编译看看,还有问题 我再帮你看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-19 11:00:53 | 显示全部楼层
看到第16章第289页知道了当初是否加冒号的问题所在了,
书上原话为“在后面加有冒号的地址标号,只能在代码段中,不能在其它段中使用”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 06:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表