汇编语言程序的一道题。求高手解答!!!

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
为什么啊???我自己算总算不到这个数字。。求高手告知啊!!!!感激不尽@!
展开
 我来答
北极星_luck
推荐于2016-12-01 · 超过18用户采纳过TA的回答
知道答主
回答量:29
采纳率:0%
帮助的人:51.6万
展开全部
你的答案是错的
答案是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
声学初学者
2012-03-12
知道答主
回答量:5
采纳率:0%
帮助的人:8107
展开全部
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
然后是怎么循环的我就不知道了,你这个不是一个完成的程序吧?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zzwasdf
2012-03-12 · TA获得超过810个赞
知道小有建树答主
回答量:1011
采纳率:0%
帮助的人:343万
展开全部
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程序
更多追问追答
追问
SHR DX,1 此时dx为1 这个是为什么?dx本来是4的啊
追答
shr是逻辑右移,04h=二进制的00000100,右移一位后为00000010,就变2了
最基本的指令都不会,好好去看看书吧。我都没学过你这个汇编,只学过单片机汇编也看懂了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Henut
2012-03-12 · 超过35用户采纳过TA的回答
知道答主
回答量:87
采纳率:0%
帮助的人:57.5万
展开全部
用汇编生产exe程序
然后用debug调试(开始—运行—debug)
这样你就可以一步一的跟着你的程序走
你能清楚的看到你内存和寄存器的变换
原本现在学汇编就是要了解内存和寄存器的变换,而debug给你提供了一个很好的环境
以后有不懂的就用debug调试
如果程序太大你可以用OD调试
至于debug怎么用你可以到网上去搜索下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阿拴
2012-03-12
知道答主
回答量:29
采纳率:0%
帮助的人:3.2万
展开全部
不知道
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式