标识符的迷惑???

jacky_shen 2004-08-24 11:32:45
...
STAK SEGMENT PARA STACK 'STACK' // PARA STACK 'STACK' 是什么意思???
SPINT DB 100 DUP(?)
TOP DB ?
STAK ENDS

CODE SEGMENT
ASSUME DS: DATA, SS: STAK, CS: CODE
MAIN
MOV AX, DATA
MOV DS, AX
MOV AX, STAK
MOV SS, AX

LEA SP, TOP
CODE ENDS

下面的解释正确吗?
LEA SP, TOP // 得到TOP的偏移地址
MOV SP, TOP // 得到TOP内的值

MOV AX, DATA // 是什么意思呢?也是把DATA的值给AX吗?我想应该是是DATA的地址给AX吧?
...全文
95 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
dunkel 2004-08-25
  • 打赏
  • 举报
回复
>> PARA STACK 'STACK' 是什么意思???
PARA 表明该段, 尤其是在和其他逻辑段组合到一个实际的段中的时候, 的起始有效地址对齐到 para.(16 字节). 如果是个独立的段的话, PARA 属性并没有特别的用途了, 因为, 段址的单位就是 para. 了. 当 STAK 段和其他比如 DATA 段被 GROUP 语句指明是连接到同一个段中时, 即最后的 .exe 中, 堆栈段和数据段在同一个 64K 段中, 初始化之后的 SS 和 DS 是相同的, STAK 部分的首字节的偏移地址必须是 xxx0h, 如果前面段的内容最后字节的偏移地址不是 ???fh 的话, STAK 部分也会被挪移到下一个 xxx0h 处.
STACK 表明这是个堆栈段, 这样在自己的程序中, 不需要设定 SS:SP 的值, 链接程序会自动地在 .exe 头部的相关区域中设置值使得 SS:SP 指向到 STAK, 在 dos 加载该 .exe 时, 会替你设置 SS:SP 的.
'STACK' 该段名为 'STACK', 相同段名的段会被组合到同一个 64K 的段中, 不同模块里的被 PUBLIC 修饰了的段也一样

>> 下面的解释正确吗?
对的吧. 但是, MOV SP, TOP 在编译是会有操作数位长不一直的警告
上面提到的, 如果堆栈段用 STACK 说明了的话, 自己的程序是不再需要设置 SS:SP 的

>> 是什么意思呢?也是把DATA的值给AX吗?我想应该是是DATA的地址给AX吧?
MOV AX, DATA 是把 DATA 段的段址赋给 AX

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧