使用EAX,EBX,ECX等时未定义的符号异常

时间:2013-10-10 18:57:29

标签: assembly x86

在使用寄存器EAX,EBX,ECX等时,我得到一个未定义的符号异常 我是X86编程的新手,所以任何帮助都将不胜感激

data segment
msg db 10,13,'enter the number$'
msg1 db 10,13,'the result$'
nline db 13,10,'$'
ttho dd 10000
ten db 10
tho dw 1000
h dw 0100
product dw ?
num1 db ?
num2 db ?
data ends


code segment
assume cs:code,ds:data
start:
mov eax,data
mov ds,eax
mov eax,0001h
mov ebx,0000h
mov ecx,0000h
mov edx,0000h

enter image description here

enter image description here

放入.386之后

我仍然收到此错误

1 个答案:

答案 0 :(得分:5)

  • 您需要在文件顶部添加.386以生成32位代码,例如Hans Passant说。
  • 您的data段与msg一起完全丢失。添加datamsg,那些未定义的符号错误也会消失。
  • 函数调用前的push msg和函数中的pop msg看起来很奇怪。根据{{​​1}}的定义,此可以工作,但感觉很尴尬。