汇编语言的一些问题。已知数据段定义如下: data segment x db 16 array db 1,5,8,16,18,21 data ends

从数组array中删除掉值等于x的元素。我编写了以下程序可使为什么运行会出错?datasegmentxdb16arraydb1,5,8,16,18,21dataends从... 从数组array中删除掉值等于x的元素。
我编写了以下程序可使为什么运行会出错?

data segment
x db 16
array db 1,5,8,16,18,21
data ends
从数据ARRAY中删除掉值等于X的元素。

code segment
main proc far
assume cs:code ds:data
start:
push ds
mov ax,0
push ax

mov cx ,5
mov ax ,x
mov si ,offset array
mov bx,0 (存放数组下标)

m:
cmp ax,[si]
jne r (结果不相等进行转移R)
je s (结果相等转移S)

r:
inc si(SI数据+1)
inc bx(数组下标+1)
jmp m

s:
SUB cx,bx
inc si
mov array[bx],[si]
inc bx
loop s

ret
main endp
code ends
end start
展开
 我来答
swolaiye
2011-12-06 · TA获得超过596个赞
知道小有建树答主
回答量:298
采纳率:0%
帮助的人:275万
展开全部
cmp ax,[si]
ax比较的不是1,5,8,16,18,21[01h,05h,08h,10h,12h,15h]
而是0501h,0805h,1608h,...
这是一条字比较语句(十六位,双字节),你的数组array是单字节的,
可以改为cmp al,[si],mov ax ,x改为mov al ,x
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式