注册 登录
编程论坛 汇编论坛

简单问题,求详解、、谢谢拉

矿泉水的甜 发布于 2013-06-20 17:19, 814 次点击
DATA SEGMENT 'DATA'
Y DW 0
DATA ENDS
CSEG SEGMENT 'CODE'
ASSUME CS:CSEG,DS:DATA,SS:DATA
START:  MOV AX,DATA
MOV DS,AX
MOV SI,6
MOV AX,3     ;(AX)=X=3
MUL SI       ;(AX)=6X
ADD AX,5     ;(AX)=6X+5
MOV DI,3     ;(DI)=3
MUL DI       ;(AX)=(6X+5)X
ADD AX,2     ;(AX)=(6X+5)X+2
MUL DI       ;(AX)=((6X+5)X+2)X
ADD AX,7     ;(AX)=((6X+5)X+2)X+7
MUL DI       ;(AX)=(((6X+5)X+2)X+7)X
ADD AX,8     ;(AX)=(((6X+5)X+2)X+7)X+8
MOV Y,AX     ;Y=(AX)
MOV AH,4CH
INT 21H
CSEG  ENDS
END START


问下前面四行都是什么意思啊?NAME SXCX.ASM
DATA SEGMENT STACK 'STACK'
STA DW 100 DUP(?)
DATA ENDS
是不是没哥程序开始都是这么四行啊?还是针对这个程序的?求详解,
5 回复
#2
hu9jj2013-06-20 22:42
这是定义存储数据的内存空间。这些语句通常是放在程序的开头,当然也可以放在程序的尾部,还可以放在程序的任意位置。
#3
矿泉水的甜2013-06-21 18:24
回复 2楼 hu9jj
是每个程序都必须有的吗?它改怎样根据不同的条件不同定义啊?
#4
hu9jj2013-06-21 22:08
以下是引用矿泉水的甜在2013-6-21 18:24:17的发言:

是每个程序都必须有的吗?它改怎样根据不同的条件不同定义啊?
通常每个程序都会有存放固定内容和变量的内存空间,所以绝大部分程序都会有的。
#5
hjxlj2013-06-26 15:56
回复 楼主 矿泉水的甜
这四行属于伪指令,换句话说,这四行不是由CPU而是由编译器执行的,其作用是在程序编译时,预先为程序需要使用的内存分配好空间。正因为这些代码只是在编译时为程序预先分配好内存空间,所以是不是每个程序都需要这部分代码,就要看你的程序具体功能而定了。如果你的程序并不需要预先分配好内存空间,则可以不需要这些代码。因为除了在编译时预先分配内存空间外,还可以在程序运行时动态分配内存空间。这要看具体应用而定,没有固定的规则。
1