五步蛇 发表于 2014-3-12 22:17:01

编译出现的问题!来人帮忙看看谢谢啦

代码如下
            ASSUME    CS:CODE,DS:DATA,SS:P

      DATASEGMENT
            DW      0123H, 0456H, 0789H, 0ABCH, 0DEFH, 0FEDH, 0CBAH, 0987H
      DATAENDS

         PSEGMENT
            DW      0, 0, 0, 0, 0, 0, 0, 0
         PENDS

      CODESEGMENT

          P:MOV       AX,P
            MOV       SS,AX
            MOV       SP,16
            MOV       AX,DATA
            MOV       DS,AX
            PUSH      DS:
            PUSH      DS:
            POP       DS:
            POP       DS:

            MOV       AX,4C00H
            INT       21H
      CODEENDS
            END       P
用masm编译的结果如图

错误 在13行和26行问题在那个p上面 可是不管我怎么修改还是一样的结果!




swsm 发表于 2014-3-12 22:46:07

【code】
ASSUME    CS:CODE,DS:DATA,SS:P1

      DATASEGMENT
            DW      0123H, 0456H, 0789H, 0ABCH, 0DEFH, 0FEDH, 0CBAH, 0987H
      DATAENDS

         P1SEGMENT
            DW      0, 0, 0, 0, 0, 0, 0, 0
         P1ENDS

      CODESEGMENT

          P:MOV       AX,P1
            MOV       SS,AX
            MOV       SP,16
            MOV       AX,DATA
            MOV       DS,AX
            PUSH      DS:
            PUSH      DS:
            POP       DS:
            POP       DS:

            MOV       AX,4C00H
            INT       21H
      CODEENDS
            END       P

//程序可以了,改了

swsm 发表于 2014-3-12 22:48:07

本帖最后由 swsm 于 2014-3-12 22:49 编辑


ASSUME    CS:CODE,DS:DATA,SS:P1   ;在此处更改成了P1

      DATASEGMENT
            DW      0123H, 0456H, 0789H, 0ABCH, 0DEFH, 0FEDH, 0CBAH, 0987H
      DATAENDS

         P1SEGMENT          ;这里也是同上
            DW      0, 0, 0, 0, 0, 0, 0, 0
         P1ENDS               ;这里也是同上

      CODESEGMENT

          P:MOV       AX,P1
            MOV       SS,AX
            MOV       SP,16
            MOV       AX,DATA
            MOV       DS,AX
            PUSH      DS:
            PUSH      DS:
            POP       DS:
            POP       DS:

            MOV       AX,4C00H
            INT       21H
      CODEENDS
            END       P

//程序可以了,改了的地方程序中已标出!问题是你命名时重复了P,有问题在交流啊!!!呵呵呵呵!

五步蛇 发表于 2014-3-12 22:48:37

AX,为什么是P1

swsm 发表于 2014-3-12 22:51:33

五步蛇 发表于 2014-3-12 22:48 static/image/common/back.gif
AX,为什么是P1

终于改成我要的格式了,呵呵!!因为栈的标号是P1,而你紧接着将ax给了ss,所以这样的!

五步蛇 发表于 2014-3-12 22:59:08

P:MOV       AX,P1
            MOV       SS,AX
            MOV       SP,16
            MOV       AX,DATA
            MOV       DS,AX
            PUSH      DS:
            PUSH      DS:
            POP       DS:
            POP       DS:

            MOV       AX,4C00H
            INT       21H
      CODEENDS
            END       P

在这段代码中 p是栈的入口
p1则是栈的段地址
是这意思吗?

swsm 发表于 2014-3-12 23:18:06

五步蛇 发表于 2014-3-12 22:59 static/image/common/back.gif
P:MOV       AX,P1
            MOV       SS,AX
            MOV       SP,16


不是,你要好好看看小甲鱼的视频了,P是你的程序最开始也就是cs和ip指向的地方,而P1是栈基址这个是需要你在程序中写代码完成的,是你的mov ax,p1,mov ss,ax这俩句    要好好看看视频啊!

五步蛇 发表于 2014-3-13 11:45:58

好的懂了谢谢!

五步蛇 发表于 2014-3-13 21:19:48

问题解决了   怎么结贴啊?

无名侠 发表于 2014-3-13 21:37:21

swsm 发表于 2014-3-12 22:48 static/image/common/back.gif
//程序可以了,改了的地方程序中已标出!问题是你命名时重复了P,有问题在交流啊!!!呵呵呵呵!

下次细心一点哈!

swsm 发表于 2014-3-13 21:45:49

无名侠 发表于 2014-3-13 21:37 static/image/common/back.gif
下次细心一点哈!

为什么让我细心一点啊,我会注意的,力所能及的就帮助一下别人,是吧,版主!!!

www5956 发表于 2014-5-8 19:21:55

无语。。重名问题你也问话说你干嘛要这样命名?

lyjztz 发表于 2014-11-21 19:53:23

本帖最后由 lyjztz 于 2014-11-21 19:54 编辑

你已经假设代码段绑定到code,p 绑定到栈段,你把第13行的P改为其他的(比如P1),也把END P改为END P1

liyundong2000 发表于 2014-11-26 14:35:25

五步蛇 发表于 2014-3-12 22:48
AX,为什么是P1

数据段的首地址内容传给AX
页: [1]
查看完整版本: 编译出现的问题!来人帮忙看看谢谢啦