有如下一道题:
编写程序计算(A*B+C)/D的值,其中A=7,B=8,C=14,D=-5,结果保存在RESULT字单元中。
小弟的程序如下:
DATA SEGMENT
A DB 07H
B DB 08H
C DB 0DH
D DB 0BH
RESULT DW ?
DATA ENDS
STACK SEGMENT
DB 200 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE,SS:STACK
START:MOV AX,DATA
MOV DS,AX
MOV AL,A
MUL B
ADD AL,C
IDIV D
CODE ENDS
END START
连接有个“LINK : warning L4021: no stack segment”的警告,请问这个程序哪里错了,应该怎样编比较合理,怎样用DEBUG工具查看我的运算结果??麻烦大家帮个忙。谢谢。
------解决方案--------------------------------------------------------
“LINK : warning L4021: no stack segment”的警告
============
只是提示說沒有棧段。。
沒有定義棧段在小程序中一般是沒有大礙的!!!
關於DEBUG的詳細用法,請參看:
http://blog.csdn.net/paullbm/articles/1320666.aspx
------解决方案--------------------------------------------------------
连接有个“LINK : warning L4021: no stack segment”的警告
Topic: L4021
LINK Warning L4021
no stack segment
The program did not contain a stack segment defined with the STACK
combine type.
Normally, every program should have a stack segment with the
combine type specified as STACK. You can ignore this message if
you have a specific reason for not defining a stack or for
defining one without the STACK combine type. Linking with versions
of LINK earlier than version 2.40 might cause this message since
these linkers search libraries only once.
你在程序开头加上
.stack 1024试试
------解决方案--------------------------------------------------------
1、我用MASM5.0试了没有警告啊
2、你没必要定义栈段
3、假设你生成的可执行程序为a.exe
debug a.exe回车
r 回车 你会看到有一条指令 mov ax,? (?是一个数,假设?=0b77)
d 0b77:0 回车 你会看到07 08 0d 0b 00 00这就是你的A B C D RESULT
4、你程序中的数与你题目中的数不一样
题目:a=7 b=8 c=14 d=-5
程序: a=7 b=8 c=13 d=11
5、商在AL中,你没有把他送RESULT 单元
------解决方案--------------------------------------------------------
没有把栈地址付给堆栈段寄存器