当前位置: 代码迷 >> 汇编语言 >> 有关DEBUG和汇编程序的一点有关问题
  详细解决方案

有关DEBUG和汇编程序的一点有关问题

热度:2351   发布时间:2013-02-26 00:00:00.0
有关DEBUG和汇编程序的一点问题
有如下一道题:
    编写程序计算(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 单元





------解决方案--------------------------------------------------------
没有把栈地址付给堆栈段寄存器
  相关解决方案