编译出现的问题!来人帮忙看看谢谢啦
代码如下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上面 可是不管我怎么修改还是一样的结果!
【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: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,有问题在交流啊!!!呵呵呵呵! AX,为什么是P1 五步蛇 发表于 2014-3-12 22:48 static/image/common/back.gif
AX,为什么是P1
终于改成我要的格式了,呵呵!!因为栈的标号是P1,而你紧接着将ax给了ss,所以这样的! 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则是栈的段地址
是这意思吗? 五步蛇 发表于 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这俩句 要好好看看视频啊! 好的懂了谢谢! 问题解决了 怎么结贴啊? swsm 发表于 2014-3-12 22:48 static/image/common/back.gif
//程序可以了,改了的地方程序中已标出!问题是你命名时重复了P,有问题在交流啊!!!呵呵呵呵!
下次细心一点哈! 无名侠 发表于 2014-3-13 21:37 static/image/common/back.gif
下次细心一点哈!
为什么让我细心一点啊,我会注意的,力所能及的就帮助一下别人,是吧,版主!!! 无语。。重名问题你也问话说你干嘛要这样命名? 本帖最后由 lyjztz 于 2014-11-21 19:54 编辑
你已经假设代码段绑定到code,p 绑定到栈段,你把第13行的P改为其他的(比如P1),也把END P改为END P1 五步蛇 发表于 2014-3-12 22:48
AX,为什么是P1
数据段的首地址内容传给AX
页:
[1]