你的答案是错的
答案是ax=2,bx=4,cx=2,dx=2 你可以自己编写一个程序调试
START:MOV AX,01H
MOV BX,02H
MOV CX,03H
MOV DX,04H
;前面4行使ax=1,bx=2,cx=3,dx=4
NEXT:INC AX ;ax+1执行后ax=2
ADD BX,AX ;bx=bx+ax执行后bx=4
SHR DX,1 ;dx向右移一位,相当于dx除于2,执行后dx=2
LOOPE NEXT ;重点来了,这一行的loope他的执行具体是,先使cx减1,然后再判断cx是否等于零,并且判断标志位ZF是否等于1,如果cx<>0并且zf=1那么就转到标号,否则退出循环.上一行的shr dx.1是影响ZF的,结果ZF是等于0,所以这里退出循环,执行完后cx=2
MOV AX,01H------->AX=1
MOV BX,02H------->BX=2
MOV CX,03H------->CX=3
MOV DX,04H------->DX=4
INC AX-------->AX=AX+1=1+1=2
ADD BX,AX------>BX=BX+AX=2+2=4
SHR DX,1-------->就是把DX的值向右移一位,即DX=2
然后是怎么循环的我就不知道了,你这个不是一个完成的程序吧?
START:MOV AX,01H
MOV BX,02H
MOV CX,03H
MOV DX,04H
这个懂吗?
:INC AX 此时ax=2
ADD BX,AX 此时bx=4
SHR DX,1 此时dx为1
c没有变还是3
所以abcd依次为2431.。。。。。。。。。。。。。。。
LOOPE NEXT退出了next程序
用汇编生产exe程序
然后用debug调试(开始—运行—debug)
这样你就可以一步一的跟着你的程序走
你能清楚的看到你内存和寄存器的变换
原本现在学汇编就是要了解内存和寄存器的变换,而debug给你提供了一个很好的环境
以后有不懂的就用debug调试
如果程序太大你可以用OD调试
至于debug怎么用你可以到网上去搜索下
不知道