设(AX)=5,(BX)=3,(CX)=2,执行下列程序段后,(AX)=LOP:ROR BX,CLADC AX,BXLOOP LOP

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/28 21:53:58
设(AX)=5,(BX)=3,(CX)=2,执行下列程序段后,(AX)=LOP:ROR BX,CLADC AX,BXLOOP LOP
xT]OA+󸤛ȃQ؆@>KC?6|IhFQCjHffv_J}kJ;=sνdL2]vk]2mu#W/P'2U6FeKA4/}S2Xv¡̝tL q:`37i DfUڭ7;NSy@lQAU\#pN[qꌄ):n( FdȄ Jq?>iwySt.MyStan<`VitO_QeDdXRiƄVK$ߪ'S݊Ԋ{&Kx\ W" A{[7X3x̆|SN"hrSd7qAۡC--&_yCa0+MrEIH@F^ś7yb

设(AX)=5,(BX)=3,(CX)=2,执行下列程序段后,(AX)=LOP:ROR BX,CLADC AX,BXLOOP LOP
设(AX)=5,(BX)=3,(CX)=2,执行下列程序段后,(AX)=
LOP:ROR BX,CL
ADC AX,BX
LOOP LOP

设(AX)=5,(BX)=3,(CX)=2,执行下列程序段后,(AX)=LOP:ROR BX,CLADC AX,BXLOOP LOP
ROR是循环右移指令,就是把最左边的数移到最右边..同时最左边的数进入CF位(PSW)..最左边的数是零CF就是零...是一CF便置1..(移位的时候要转化成2进制)
在这个程序中ROR BX,CL把数字带进去就是ROR 3,2(这时候CL为2,所以就是左移2位)
3的二进制是0000 0000 0000 0011
左移1位就是1000 0000 0000 0001
再移1位就是1100 0000 0000 0000 此时CF被置为1(因为之前最左边的数为1)
转化为16Bit就是 C000H
下一条指令
ADC AX,BX
带入值为
ADC 5,C000H (因为之前的CF为1.所以结果还要加1不懂为什么可以再去看看ADC指令使用方法)
AX = COO6H
好了第一次循环完毕
CL自减1执行下一次循环
ROR BX,CL
带入值为
ROR COOOH,1
COOOH 16bits为:
1100 0000 0000 0000
右移一位
0110 0000 0000 0000(CF被设为0)

6000H
ADC AX,BX(此时CF为0)
根据上次的值AX = C006H
C006H + 6000H = 2006H