有你更完美 发表于 2011-6-27 02:00:16

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

本帖最后由 有你更完美 于 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,
                        and al,11011111b
                        mov ,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 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:

嗜血丨灵异狂 发表于 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行代码有错误

嗜血丨灵异狂 发表于 2011-6-27 05:13:31

就是在pushcx   是压栈   但后后边你又跟上去mov cx,4   既然数据已经压栈了    不先拿出来这么用呢?

king嗜血法师 发表于 2011-6-27 06:08:44

前面加入ds:试试,还不行的话,那分别要加入ds:和es了。
还有你写的数据段,是从第3个开始改,+3那就从第4个开始改了。

幕府幽魂 发表于 2011-6-27 09:12:42

mov al, 格式 改成: mov al,就行了,貌似以前也有人问过 什么原因也没说清楚

有你更完美 发表于 2011-6-27 09:26:45

幕府幽魂 发表于 2011-6-27 09:12 static/image/common/back.gif
mov al, 格式 改成: mov al,就行了,貌似以前也有人问过 什么原因也没说清楚

对的,把改成就可以了,这个代码都是抄小甲鱼的。郁闷,也不知道什么原理,他明明说这样可以访问的。谢谢各位的热心回答。{:1_1:}

有你更完美 发表于 2011-6-27 09:30:35

嗜血丨灵异狂 发表于 2011-6-27 05:13 static/image/common/back.gif
就是在pushcx   是压栈   但后后边你又跟上去mov cx,4   既然数据已经压栈了    不先拿出来这么用呢? ...

这个是对的哦,它有两层循环,所以要保存外层循环的CX,到栈里面,等内循环执行完了,在从栈里把CX取出来,这可是小甲鱼,第七章特别强调的哦

有你更完美 发表于 2011-6-27 09:57:57

king嗜血法师 发表于 2011-6-27 06:08 static/image/common/back.gif
前面加入ds:试试,还不行的话,那分别要加入ds:和es了。
还有你写的数据段,是从第3个开始改,+3那就从第4 ...

有道理,但是甲鱼的视频时+3的,是不是甲鱼哥忽略了能

夜读金瓶梅 发表于 2011-6-27 10:39:32

mov al,改为 mov al,
mov ,al改为mov ,al   {:1_1:}

king嗜血法师 发表于 2011-6-27 13:59:58

是你数据段不是和书上一样的,我记得书上'1. display   '1.后面有个空格,重在理解,不要去照葫芦画瓢。

幕府幽魂 发表于 2011-6-27 22:22:59

有你更完美 发表于 2011-6-27 09:26 static/image/common/back.gif
对的,把改成就可以了,这个代码都是抄小甲鱼的。郁闷,也不知道什么原理,他明明说这样可以访问的。谢谢 ...

个人理解可能是编译器的问题,老师讲的应该没错吧

有你更完美 发表于 2011-6-29 01:04:41

解决啦,谢谢大家了
页: [1]
查看完整版本: 死活编译不通过,甲鱼哥的第七章最后一小节,把前四个字母变成大写