当前位置: 代码迷 >> 汇编语言 >> 请大家指点指点小弟我写的这段程序
  详细解决方案

请大家指点指点小弟我写的这段程序

热度:1881   发布时间:2013-02-26 00:00:00.0
请大家指点指点我写的这段程序!
可能有点长,麻烦高手们看看啦!刚来这,不然还会多给点分的!
assume cs:codesg ds:datasg ss:stacksg
datasg segment
  dw 0011h,1122h,2233h,3344h,4455h,5566h,6677h,7788h
datasg ends
stacksg segment
  dw 0
stacksg ends
codesg segment
start:mov ax,datasg
  mov ds,ax
  mov ax,stacksg
  mov ss,ax
  mov sp,20h
  mov cx,8
  s:push [bx]
  add bx,2
  loop s
  mov bx,0
  mov cx,8
  s0:pop [bx]
  add bx,2
  loop s0
  mov ax,4c00h
  int 21h
codesg ends
end start
------------
以上是这段程序,我通过这个程序想完成数据的逆序存放!
在调试的时候,出现了下面的情况!
-----------
D:\masm>masm push;
Microsoft (R) Macro Assembler Version 5.00
Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.

push.ASM(1): warning A4001: Extra characters on line

  50532 + 450044 Bytes symbol space free

  1 Warning Errors
  0 Severe Errors
------------
我知道error的意思,但为什么说我多了? datasg 用于放数据的,stacksg 用于放栈的,codesg是当代码的啊!书上也有这样写的啊!
然后我用debug跟踪
---------
D:\masm>debug push.exe
-r
AX=0000 BX=0000 CX=0049 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0B83 ES=0B83 SS=0B93 CS=0B95 IP=0000 NV UP EI PL NZ NA PO NC
0B95:0000 B8930B MOV AX,0B93
-------------
这里的ss明显是data的段地址!ss不是应该是stack的段地址的吗?ds不是应该才是data的段地址吗?



------解决方案--------------------------------------------------------
那个错误提示,是因为各个段项间应该用英文逗号(,)分隔而不是你现在用的空格:
Assembly code
assume cs:codesg, ds:datasg, ss:stacksg
  相关解决方案