假定(dx)=0B9H,(CL)=3,(CF)=1,下列指令单独执行,DX的值为多少
发布网友
发布时间:2022-04-25 14:59
我来回答
共3个回答
热心网友
时间:2023-10-10 11:52
0B9H=10111001
一:
SHR:逻辑右移指令
SHR指令向右逐位移动cl次,每次逐位移动后,最高位用0来补充,最低位移入CF
执行后结果为:
10111
CF=0
过程:
10111001
1->1011100 CF=1
2->0101110 CF=0
3->0010111 CF=0
二:
ROR:循环右移指令
ROR对由第一个操作数指定的寄存器或存储器操作数右移循环移动cl所指定的次数,每右移一次,把最低位同时移入CF和操作数最高位
执行后结果为:
00110111
CF=0
过程:
10111001
1->11011100 CF=1
2->01101110 CF=0
3->00110111 CF=0
三:
RCL:带进位的循环左移
RCL对由第一个操作数指定的寄存器或存储器操作数,连同进位标志CF左循环移动cl所指定的次数,每左移一次,把操作数的最高位移入CF,而CF中原有内容移入操作数的最低位
执行后结果为:
11001110
CF=1
过程:
10111001
1->01110011 CF=1
2->11100111 CF=0
3->11001110 CF=1
=============================================
上周没怎么回答问题,没得几分
热心网友
时间:2023-10-10 11:53
rcl的功能是将数据的内容连同cf标志一起向左循环移动所规定的位数
在这道题中(dx) = 0b9h, (cl) = 3, (cf) = 1;要求执行rcl dx,cl
首先(dx) = 0b9h = 0000 0000 1011 1001b(二进制)
cf = 1,
0000 0000 1011 1001
移动0位(初始化)
cf = 0,
0000 0001 0111 0011
移动1位(第一次左移), 最右边的1是第0次的cf(1)
cf = 0, 0000 0010 1110 0110
移动2位(第二次左移), 最右边的0是第1次的cf(0)
cf = 0, 0000 0101 1100 1100
移动3次(第三次左移), 最右边的0是第2次的cf(0)
所以dx最后的值为05cch
具体debug
ps:若有不明白的地方,可以追问
热心网友
时间:2023-10-10 11:54
文刀舍予,上周跑哪去了?