·一道简单的汇编语言问题求详细解答

(AX)=00H ,(BX)=00H,(CX)=10H下列程序段执行后(AX)=?
QQ: SHR CX,1
RCR AX,1
ADD BX,1
LOOP QQ
请逐句翻译。。20分送上,谢谢,请教会我这题
答案是4000H
问下 ax 和bx什么关系
还有逻辑右移后应该变成8H吧

(AX)=00H=0000 0000 0000 0000B ,(BX)=00H,(CX)=10H=0000 0000 0001 0000B
QQ:shr cx,1 ;是将cx逻辑右移1位,CX=0000 0000 0000 1000B,CF=0
RCR AX,1 ;带进位循环右移,AX=0000 0000 0000 0000 0000B,CF=0
ADD BX,1 ;bx=bx+1,BX=01H
LOOP qq ;CX-1,即CX=0000 0000 0000 0111B,不等于0,转到QQ继续循环。

为了看到每次循环的结果,将各次循环情况分别写在下面:

第二次循环情况:
QQ:shr cx,1 ;是将cx逻辑右移1位,CX=0000 0000 0000 0011B,CF=1
RCR AX,1 ;带进位循环右移,AX=1000 0000 0000 0000 0000B,CF=0
ADD BX,1 ;bx=bx+1,BX=02H
LOOP qq ;CX-1,即CX=0000 0000 0000 0010B,不等于0,转到QQ继续循环。

第三次循环情况:
QQ:shr cx,1 ;是将cx逻辑右移1位,CX=0000 0000 0000 0001B,CF=0
RCR AX,1 ;带进位循环右移,AX=0100 0000 0000 0000 0000B,CF=0
ADD BX,1 ;bx=bx+1,BX=03H
LOOP qq ;CX-1,即CX=0000 0000 0000 0000B,等于0,结束循环。

此时AX=4000H
AX和BX没什么直接关系,BX中存放实际循环的次数。
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-10-07
答案是对的:4000h。

ax和bx没有关系。没有 add bx,1 这句,答案还是4000h

第一次执行后:ax=0,cx=7:因为移位后为8,但是loop语句后就为7了。
第二次:shr 后,cx=3,但是标志位为1了,所以rcr后,ax=8000h,loop后cx=2,
第三次:shr后,cx=1,rcr后,ax=4000h,loop后cx=0,退出循环结束了。
因此,ax=4000h。
第2个回答  2008-10-06
QQ:shr cx,1 ;是将cx逻辑右移1位,变成40h,十进制也就是64,代表循环次数
RCR AX,1 ;带进位循环右移
ADD BX,1 ;bx=bx+1
LOOP qq ;执行循环体,同时CX-1
AX最后应该还是00H
第3个回答  2008-10-06
55555学了好久了,还是不懂

一道简单的汇编语言问题求详细解答
XOR ax,ax ;ax清零 mov bx,2 ;bx=2 mov cx, 4 ;cx=4做循环用 MOV DX,3 ;dx=3;l20:inc ax ;ax=ax+1 adc bx,ax ;bx=ax+bx+cf这个是防止溢出,SHR DX,1 ;移位指令,将DX进行移位,该指令会影响cf位。右移指令,是将最低位移入CF,CF位移入最高位。loope l20 ...

·一道简单的汇编语言问题求详细解答
QQ:shr cx,1 ;是将cx逻辑右移1位,CX=0000 0000 0000 1000B,CF=0 RCR AX,1 ;带进位循环右移,AX=0000 0000 0000 0000 0000B,CF=0 ADD BX,1 ;bx=bx+1,BX=01H LOOP qq ;CX-1,即CX=0000 0000 0000 0111B,不等于0,转到QQ继续循环。为了看到每次循环的结果,将各次循环情况分别写在...

汇编语言中的问题
buf可以理解为存储器内存的某个单元的符号地址,即用符号代表这个地址。在本题中,buf是存储数据3的内存单元的地址。而L是存放数据0的单元的地址ABUF和BUF两个地址的差,值应该是6。计算过程为:设BUF代表的地址值为0(其中存放数据3),那么其后4,5,‘123’,0分别占有地址1,2,3,4,5,6,;...

简单C语言问题
从错误提示来看,是类型不兼容。这个在C里面是合法的,算Warning,但在C++中是错误。用gcc可以编译过去:[root@ ~]# cc -o 2 -Wall 2.c 2.c:6: 警告:‘main’的返回类型不是‘int’2.c: 在函数‘sort’中:2.c:23: 警告:传递‘strcmp’的第 1 个参数时将整数赋给指针,未作类型转换...

一部分,汇编题。。。跪求 这些题的答案~··##!
1、根据自己上机经验,详细写出用汇编语言程编写序设的完整流程(大致包括以下主要步骤:编辑源文件,生成目标文件,生成可执行文件,运行程序查错,跟踪调试)首先用记事本或者edit.exe文件编写源程序,源程序保存为.asm格式;然后利用masm.exe对源程序进行编译,得到后缀名位.obj的目标代码程序,如果编译...

C语言入门题目,求详细易懂的解答过程。
答案为第一行:Tony。解答:for循环共循环2次,然后strcpy(a,b)比较两串字符大小,如果strcpy值大于0,则a大于b。具体的比较是看字符串的字母的ASCII码的大小,如果相同,再继续比较第二个,这个不赘述。主要看一下name[],对于一维数组来讲,它是元素,对于二维数组来讲,它不是具体的元素,而是...

汇编语言mov指令。刚开始自学计算机,这道题没有答案,求大神详细解答
-u100,115139B:0100 B80060 MOV AX,6000139B:0103 8ED8 MOV DS,AX139B:0105 A20060 MOV [6000],AL139B:0108 89C3 MOV BX,AX139B:010A C60778 MOV BYTE PTR [BX],78139B:010D C747013412 MOV WORD PTR [BX+01],1234139B:0112 8B0F MOV ...

求一个汇编语言程序实例(MASM for windows环境下)
;分析:每个元素是一个8位有符号二进制数,因此要判断其是否为正数,;需选择带符号数条件转移指令进行判断转移(例如JG,JNG,JL,JNL)。;由于共有n个元素,因此整个程序的结构就是对以上判断重复n次.ASSUME CS:CODE, DS:DATA DATA SEGMENT BUF DB 1,2,3,4,5,6,7,-8,-9,0 N EQU $ - BUF...

...y = x++ + x++; 求y的值。答案为y = 2,求详细解答。。。
语序为 y = (x++) + (x++) ; 优先级问题··· ++运算符是传值后+1 , 等价y = x + x; x+1;x+1 最后y=2,x=3

...若int x=6;则x+=x-=x*x表达式最后x的值是( )。 要详细的解答...
c语言问题 若int x=6;则x+=x-=x*x表达式最后x的值是( )。 要详细的解答步骤和说明 5 求知海涛 | 浏览1361 次 |举报 我有更好的答案推荐于2017-12-16 09:09:55 最佳答案 从右往左计算:x-=x*x所以x=6-6*6=-30x+=x所以x=(-30)+(-30)=-60所以最后结果等于-60求给分 追问 哦,明白...

相似回答