鱼C论坛

 找回密码
 立即注册
查看: 1649|回复: 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
一起学习,共同进步

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

  20.                        
  21. ;============以下为主程序================================================                       


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

  32.                         mov ax,4c00h
  33.                         int 21h               
  34.         send:        nop
  35.                                                
  36. ;============需要安装的处理程序============================================
  37.         s1:                push bp
  38.                         mov bp,sp
  39.                         dec cx
  40.                         jcxz ok
  41.                         add [bp+2],bx
  42.                         ;这个是地方是不是要加一条指令,使cpu指向s标号处执行循环呢?
  43.                        
  44.                        
  45.         ok:                pop bp
  46.                         iret
  47.                        
  48.         s1end:        nop
  49.                        
  50.                         code ends
  51. 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-6-7 05:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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