当前位置: 代码迷 >> 汇编语言 >> 菜鸟的简单有关问题~帮忙看下~
  详细解决方案

菜鸟的简单有关问题~帮忙看下~

热度:6838   发布时间:2013-02-26 00:00:00.0
初学者的简单问题~~~帮忙看下~~~
就是把arr数组中的偶数存到arreven中去~~~怎么不行啊~~~指点下啊~~

data   segment
              arr   dw   2,5,8,3,9,1,9,44,55,23,78,88
              arreven   dw   16   dup(?)
data   ends

code   segment
assume   cs:code,ds:data
start:
mov   ax,data
mov   ds,ax

mov   si,offset   arr
mov   bx,offset   arreven
mov   cx,16
begin:
test   [si],01h
jz   next
add   si,2
loop   begin
jmp   exit
next:
mov   dx,[si]
mov   [bx],dx
add   bx,2
 
exit: mov   ax,4c00h
int   21h

code   ends
end   start

------解决方案--------------------------------------------------------
建議樓主自己再仔細分析一下:

begin:
test [si],01h
jz next
add si,2
loop begin
jmp exit

這一段代碼流程!!
------解决方案--------------------------------------------------------
paullbm(莫取网名)说的是这个意思:
begin:
test [si],01h
jz next
add si,2
loop begin
jmp exit
如果一个二进制数的第零位是0,那么这个数就是偶数.这时test [si],01h结果为0,跳转到NEXT,NEXT执行完后,你的程序就直接结束了,没有执行LOOP循环.

begin:
test [si],01h
jz next
add si,2
jmp L1

next:
mov dx,[si]
mov [bx],dx
add bx,2

L1: loop begin
jmp exit

  相关解决方案