编写一个程序,将一给定的数组中的数按正数和负数分别存入不同的数组中

coder_99 2010-04-12 11:26:51
这是代码:

data segment
num db 1,-5,3,-7,9,8
num_z db ?;正数数组
num_f db ?;负数数组
data ends
stack1 segment para stack
dw 20h dup(0)
stack1 ends
code segment
assume cs:code,ds:data,ss:stack1
start:
mov ax,data
mov ds,ax
mov cx,6 ;循环判断六次。
mov si,0
xun:
cmp cx,1
jz cends
cmp num[si],0
js flag1 ;结果为负数时的转移。
jns flag2 ;结果为正数的转移。
dec cx ;cx减一
flag1:
mov num_f[di],num[si] ;将数据放入负数数组。
neg si ;si向后挪一位。
neg di
jmp xun ;返回判断。
flag2:
mov num_z[di],num[si] ;将数据放入正数数组。
neg si ;si向后挪一位。
neg di
jmp xun ;返回判断。
cends:
mov ah,4ch
int 21h
code ends
end start


Object filename [out.OBJ]:
Source listing [NUL.LST]:
Cross-reference [NUL.CRF]:
out.ASM(24): error A2052: Improper operand type
out.ASM(28): error A2006: Phase error between passes
out.ASM(29): error A2052: Improper operand type
out.ASM(33): error A2006: Phase error between passes

50136 + 449832 Bytes symbol space free

0 Warning Errors
4 Severe Errors

为什么会出现这种错误啊。
...全文
750 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
coder_99 2010-04-20
  • 打赏
  • 举报
回复
上面的程序,跳转语句和对 deg 指令有错误,还有其它的错误,经过修改程序正常。
thesecretblue 2010-04-15
  • 打赏
  • 举报
回复
学习中
friendly_ 2010-04-13
  • 打赏
  • 举报
回复
mov num_f[di],num[si] 和 mov num_z[di],num[si] 不对,不能直接内存到内存的操作,借助个寄存器中转一下。
大熊猫侯佩 2010-04-13
  • 打赏
  • 举报
回复
检查操作数类型,注意循环流程和算法,注意判断“负数”的方法。

21,459

社区成员

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

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