程序能怎么改吗?

yaya001 2001-11-14 09:02:55
DATA SEGMENT
SU DW 1h,3h,0h,5h,8h,15h,81h,89h
JG1 DW ?
DATA ENDS
STACK SEGMENT PARA STACK 'STACK'
DB 256 DUP(?)
STACK ENDS
CODEG SEGMENT
ASSUME CS:CODEG,DS:DATA,SS:STACK
START PROC FAR
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET SU
MOV CX,LENGTH SU
MOV DX,0
LOP1: MOV AX,[BX]
CMP AX,0
JGE GO
INC DX
GO: INC BX
INC BX
DEC CX
JNZ LOP1
MOV JG1,DX
RET
START ENDP
CODEG ENDS
END START
上边的程序是能通过编译的
但如果把
STACK SEGMENT PARA STACK 'STACK'
DB 256 DUP(?)
STACK ENDS
和ASSUME CS:CODEG,DS:DATA,SS:STACK
中的SS:STACK
改过的程序的仍然能通过
不知这两个程序有什么的区别啊?
第二种改法中堆楗的数据放在哪里了,我没有给它指定堆楗啊?

...全文
82 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaya001 2001-11-15
  • 打赏
  • 举报
回复
哦,对不起,写的又点乱,我是说把程序改成这样
DATA SEGMENT
SU DW 1h,3h,0h,5h,8h,15h,81h,89h
JG1 DW ?
DATA ENDS
CODEG SEGMENT
ASSUME CS:CODEG,DS:DATA
START PROC FAR
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET SU
MOV CX,LENGTH SU
MOV DX,0
LOP1: MOV AX,[BX]
CMP AX,0
JGE GO
INC DX
GO: INC BX
INC BX
DEC CX
JNZ LOP1
MOV JG1,DX
RET
START ENDP
CODEG ENDS
END START
程序也能通过编译,但不知与上边哪个贴子,有什么区别啊?我该过的程序我没有给它指定堆楗,
程序中堆楗的数据放在哪里了
mengfl781119 2001-11-15
  • 打赏
  • 举报
回复
应该是128字节吧,好像在exe文件的头部psp中
CNer 2001-11-15
  • 打赏
  • 举报
回复
你改过的程序就是没有定义堆栈段么?
没关系的.ss的值就是你的程序装载到内存时的值。
sp一般=0;
你可以看看,我在windows下的dos模拟窗口看是这样的。
CodeDemon 2001-11-15
  • 打赏
  • 举报
回复
没有堆栈的程序,在编译是会提示,但不会出错,ss会指向默认的堆栈,如vbin所说,应付小程序就足够了.

注: .com文件就是没有堆栈的.
vBin 2001-11-15
  • 打赏
  • 举报
回复
若你的程序中没有堆栈段,SS会指向一个默认的堆栈区,
该区的大小好像是256字节(具体大小忘记啦)
应付小的程序足够啦。

你没发现吗?有些小的汇编程序,都不自己的堆栈段的。
CNer 2001-11-14
  • 打赏
  • 举报
回复
你上面写得很不清楚!
你说改过程序!
什么地方改成什么地方了?
我怎么没看到啊?

21,497

社区成员

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

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