鱼C论坛

 找回密码
 立即注册
查看: 4337|回复: 11

死活编译不通过,甲鱼哥的第七章最后一小节,把前四个字母变成大写

[复制链接]
发表于 2011-6-27 02:00:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 有你更完美 于 2011-7-7 17:42 编辑

assume cs:codesg,ds:datasg,ss:stacksg
stacksg segment
dw        0,0,0,0,0,0,0,0
stacksg ends

datasg segment
db '1.display       '
db '2.brows         '
db '3.replace       '
db '4.modify        '
datasg ends

codesg segment
        start:        mov ax,stacksg
                        mov ss,ax
                        mov sp,16
                        mov ax,datasg
                        mov ds,ax
                        mov bx,0
                        
                        mov cx,4
                s0:        push cx
                        mov si,0
                        mov cx,4
                s:        mov al,[bx+3+si]
                        and al,11011111b
                        mov [bx+3+si],al
                        inc si
                        loop s
                        
                        add bx,16
                        pop cx
                        loop s0
                        
                        mov ax,4c00h
                        int 21h
codesg ends
end start

提示以下错误
Microsoft (R) Macro Assembler Version 6.15.8803
        Patched for you by promethee [ECL] in the year 2001 - enjoy
Copyright (C) Microsoft Corp 1981-2000.  All rights reserved.

Assembling: 3.asm
error A4910: cannot open file: F:\TRY\7\ML.err
3.asm(25) : error A2070:
3.asm(27) : error A2070:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-27 05:10:51 | 显示全部楼层
error A4910: cannot open file: F:\TRY\7\ML.err
3.asm(25) : error A2070:
3.asm(27) : error A2070:
第一个提示error 是错误       在第25行  代码  和27行代码有错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-27 05:13:31 | 显示全部楼层
就是在push  cx   是压栈     但后后边你又跟上去mov cx,4     既然数据已经压栈了    不先拿出来这么用呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-27 06:08:44 | 显示全部楼层
[bx+3+si]前面加入ds:试试,还不行的话,那分别要加入ds:和es了。
还有你写的数据段,是从第3个开始改,+3那就从第4个开始改了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-27 09:12:42 | 显示全部楼层
mov al,[bx+3+si] 格式 改成: mov al,[bx+si+3]就行了,貌似以前也有人问过 什么原因也没说清楚

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-27 09:26:45 | 显示全部楼层

对的,把[bx+3+si]改成[bx+si+3]就可以了,这个代码都是抄小甲鱼的。郁闷,也不知道什么原理,他明明说这样可以访问的。谢谢各位的热心回答。{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-27 09:30:35 | 显示全部楼层
嗜血丨灵异狂 发表于 2011-6-27 05:13
就是在push  cx   是压栈     但后后边你又跟上去mov cx,4     既然数据已经压栈了    不先拿出来这么用呢? ...

这个是对的哦,它有两层循环,所以要保存外层循环的CX,到栈里面,等内循环执行完了,在从栈里把CX取出来,这可是小甲鱼,第七章特别强调的哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-27 09:57:57 | 显示全部楼层
king嗜血法师 发表于 2011-6-27 06:08
前面加入ds:试试,还不行的话,那分别要加入ds:和es了。
还有你写的数据段,是从第3个开始改,+3那就从第4 ...

有道理,但是甲鱼的视频时+3的,是不是甲鱼哥忽略了能
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-27 10:39:32 | 显示全部楼层
mov al,[bx+3+si]  改为 mov al,[bx+si+3]
mov [bx+3+si],al  改为mov [bx+si+3],al   {:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-27 13:59:58 | 显示全部楼层
是你数据段不是和书上一样的,我记得书上'1. display     '1.后面有个空格,重在理解,不要去照葫芦画瓢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-27 22:22:59 | 显示全部楼层
有你更完美 发表于 2011-6-27 09:26
对的,把改成就可以了,这个代码都是抄小甲鱼的。郁闷,也不知道什么原理,他明明说这样可以访问的。谢谢 ...

个人理解可能是编译器的问题,老师讲的应该没错吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-29 01:04:41 | 显示全部楼层
解决啦,谢谢大家了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-15 00:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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