郁闷 这个为什么出错?

fly80 2003-11-07 03:49:54
x_seg segment
x dw 0ffh
x_seg ends
y_seg segment
y dw 123h
y_seg ends
z_seg segment
z dw 0fe4h
z_seg ends
code segment
assume ds:x_seg,es:y_seg,ss:z_seg
main proc far
start:
push ds
sub ax,ax
push ax

mov ax,x_seg
mov ds,ax
mov ax,y_seg
mov es,ax
mov ax,z_seg
mov ss,ax

mov ax,x_seg
add ax,y_seg
add ax,z_seg
mov x_seg,ax
ret
main endp
code ends
end start
...全文
59 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly80 2003-11-07
  • 打赏
  • 举报
回复
知道了 应该是
mov ax,x
add ax,y
add ax,z
mov x,ax
bluedreammer 2003-11-07
  • 打赏
  • 举报
回复
你改過以後,此語句
mov x_seg,ax

temp.asm(26): error A2001: immediate operand not allowed
------------------------------------------------------------
x_seg怎麼能當目的操作數.
其他的可以編譯
fly80 2003-11-07
  • 打赏
  • 举报
回复
提示: 无效的立即数
这是课本上的题目,他自己要求要将数据存放在三个不同的段
可能是因为ss堆栈push出错了
换成这样为什么也不行呀
y_seg segment
y dw 123h
y_seg ends
z_seg segment
z dw 0fe4h
z_seg ends
code segment
assume ds:x_seg,es:y_seg,ss:z_seg
main proc far
start:


mov ax,x_seg
mov ds,ax
mov ax,y_seg
mov es,ax
mov ax,z_seg
mov ss,ax

mov ax,x_seg
add ax,y_seg
add ax,z_seg
mov x_seg,ax
mov ax,4c00h
int 21h
main endp
code ends
end start
Yashmak 2003-11-07
  • 打赏
  • 举报
回复
是不是提示代码段无法到达?
(Code segment unreachable)

没有指定代码段
assume cs:code,ds:x_seg,es:y_seg,ss:z_seg

还有,你应该把数据全放在一个段里,

ss是堆栈,不应该拿来放数据,可以不定义,系统自动分配

ss中存放数据,push时,你的数据会被覆盖,当然不对

21,453

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧