当前位置: 代码迷 >> 汇编语言 >> 小弟我是汇编菜鸟,运行emu8086出现了有关问题
  详细解决方案

小弟我是汇编菜鸟,运行emu8086出现了有关问题

热度:7370   发布时间:2013-02-26 00:00:00.0
我是汇编初学者,运行emu8086出现了问题
自学王爽老师的汇编语言,出现了两个问题
第一个问题:(刚才提问了一遍,有人告诉我cx没有指定,我就结贴了,更改后发现依然出现问题)
这是按书上写的
assume cs:code,ds:data,ss:stack
data segment
dw 0123h,0456h,0789h,0147h,0258h,0369h,0321h,0654h
data ends
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
code segment
start:mov ax,data
  mov ds,ax
  mov ax,stack
  mov ss,ax
  mov sp,0010h
  mov bx,0000h
  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
  code ends
end start

ret
在运行时emu8086弹出对话框,上面写着“Cannot generate a COM file. Remove the stack segment.”
第二个问题:
这是一个我做的作业
assume cs:code
a segment
  db 1,2,3,4,5,6,7,8
a ends
b segment
  db 1,2,3,4,5,6,7,8
b ends
c segment
  db 0,0,0,0,0,0,0,0
c ends
code segment
   
start:mov dx,0
  mov bx,0
  mov cx,8
  s:mov ax,a
  mov ds,ax
  mov ax,0
  mov dl,[bx]
  mov ax,b
  mov ds,ax
  add dl,[bx]
  mov ax,c
  mov ds,ax
  mov [bx],dl
  add bx,1
  loop s
  mov ax,4c00h
  int 21h
  code ends
end start
   

ret
这个运行时没有错误,但是我用debug一步步走的时候发现,a,b,c的值不像书上说的那样是段地址,导致结果不对。编译器把a的值定为了0010h,这个我也很纳闷。
希望大家帮帮忙~谢谢大家了~~

------解决方案--------------------------------------------------------
王爽的教程使用的是masm。 或许是emu8086与masm有啥区别吧。 关于王爽教程里的习题和讨论,
可以到这里,http://www.asmedu.net/bbs/forum.jsp ,王爽的《汇编语言论坛》,
每章每节都有你需要的
------解决方案--------------------------------------------------------
探讨

可是win764位用不了masm,所以我才用的emu8086