汇编语言程序的一道题。求高手解答!!!
START:MOVAX,01HMOVBX,02HMOVCX,03HMOVDX,04HNEXT:INCAXADDBX,AXSHRDX,1LOOPENEXT程序执行完后AX,...
START:MOV AX,01H
MOV BX,02H
MOV CX,03H
MOV DX,04H
NEXT:INC AX
ADD BX,AX
SHR DX,1
LOOPE NEXT
程序执行完后AX,BX,CX,DX的值是多少?
答案是:2,4,3,1
为什么啊???我自己算总算不到这个数字。。求高手告知啊!!!!感激不尽@! 展开
MOV BX,02H
MOV CX,03H
MOV DX,04H
NEXT:INC AX
ADD BX,AX
SHR DX,1
LOOPE NEXT
程序执行完后AX,BX,CX,DX的值是多少?
答案是:2,4,3,1
为什么啊???我自己算总算不到这个数字。。求高手告知啊!!!!感激不尽@! 展开
5个回答
展开全部
你的答案是错的
答案是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
答案是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
然后是怎么循环的我就不知道了,你这个不是一个完成的程序吧?
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程序
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程序
更多追问追答
追问
SHR DX,1 此时dx为1 这个是为什么?dx本来是4的啊
追答
shr是逻辑右移,04h=二进制的00000100,右移一位后为00000010,就变2了
最基本的指令都不会,好好去看看书吧。我都没学过你这个汇编,只学过单片机汇编也看懂了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用汇编生产exe程序
然后用debug调试(开始—运行—debug)
这样你就可以一步一的跟着你的程序走
你能清楚的看到你内存和寄存器的变换
原本现在学汇编就是要了解内存和寄存器的变换,而debug给你提供了一个很好的环境
以后有不懂的就用debug调试
如果程序太大你可以用OD调试
至于debug怎么用你可以到网上去搜索下
然后用debug调试(开始—运行—debug)
这样你就可以一步一的跟着你的程序走
你能清楚的看到你内存和寄存器的变换
原本现在学汇编就是要了解内存和寄存器的变换,而debug给你提供了一个很好的环境
以后有不懂的就用debug调试
如果程序太大你可以用OD调试
至于debug怎么用你可以到网上去搜索下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |