请写出下面题目的详细过程
1.假设寄存器AX=1234H,DX=0A000HMOVBX,0MOVCX,BXSUBCX,AXSBBBX,DXMOVAX,CXMOVDX,BX上述程序段执行后AX=__...
1.假设寄存器AX=1234H,DX=0A000H
MOV BX, 0
MOV CX, BX
SUB CX, AX
SBB BX, DX
MOV AX, CX
MOV DX, BX
上述程序段执行后AX=___0EDCCH____ ,DX=__5FFFH_____
2.MOV AX, 234H
MOV CL, 3
ROL AX, CL
DEC AX MOV CX, 4
MUL CX
此段程序执行完后,(AX)= ___467CH____ , (CX)= _____4__
3.DA1 DB 83H,72H,61H,94H,5AH
┇
MOV CX,WORD PTR [DA1]
AND CX,0FH
MOV AL,[DA1+3]
SHL AL,CL
上述指令序列执行后,AL=___0A0H____,CL=___03H____。
请过程要详细一点。 展开
MOV BX, 0
MOV CX, BX
SUB CX, AX
SBB BX, DX
MOV AX, CX
MOV DX, BX
上述程序段执行后AX=___0EDCCH____ ,DX=__5FFFH_____
2.MOV AX, 234H
MOV CL, 3
ROL AX, CL
DEC AX MOV CX, 4
MUL CX
此段程序执行完后,(AX)= ___467CH____ , (CX)= _____4__
3.DA1 DB 83H,72H,61H,94H,5AH
┇
MOV CX,WORD PTR [DA1]
AND CX,0FH
MOV AL,[DA1+3]
SHL AL,CL
上述指令序列执行后,AL=___0A0H____,CL=___03H____。
请过程要详细一点。 展开
展开全部
像83H、0A0H这些数,都是表示的是16进制数。
1、
MOV BX, 0-------BX=0
MOV CX, BX--------CX=BX=0
SUB CX, AX--------CX-AX=0EDCCH (你可以用电脑的计算器选到程序员情况下来算一下)
-------------(SUB是不带结尾的减法指令,这里的执行操作:CX-AX,结果放在CX里面)
SBB BX, DX-------BX-DX=5FFFH
-------------(SBB是带借位减法,这里的执行操作:BX-DX-CF,其中,CF是借位,最后结果放在BX里,BX-CF=6000H,再减去CF=1,就是5FFFH了。)
MOV AX, CX---------把CX 里的数放到AX,AX=0EDCCH
MOV DX, BX---------把BX里的数放到DX
2、
ROL是循环左移指令,表示将操作数左移,由CL指定移位位数,最高位一方面进入标志位CF,一方面移入最低位形成环路。
这里先说一下~~AX组成是高位AH和低位AL,AH和AL都各有8位。所以这里你看到的ROL和SHL的结果一样,因为他们都没有移出去的。
MOV AX, 234H-------AX=234H,用二进制表示就是1000110100
MOV CL, 3-----------CL指定左移位数,左移3位
ROL AX,CL-----------左移3位, 就是1000110100000,也就是AX=11A0H,
DEC AX---------------AX自减一,AX=119FH
MOV CX, 4-----------CX=4
MUL CX--------------AX*CX,结果的低位字(16位)放在AX中,高位字(16位)放在DX中,这里不需要高位,AX=467CH。
3、
DA1 DB 83H,72H,61H,94H,5AH ---定义的数据段,DB表示是字节型的
┇
MOV CX,WORD PTR [DA1]---------CX指向前面定义的数据段DA1,WORD PTR [DA1]表示是取字型的,就是说两个字节,这里取的是83H,72H,但是因为存放的缘故,低位在前,高位在后,所以83H是低位
AND CX,0FH ---------AND表示是‘与’操作,即两个操作数对应位都为1时才为1。0FH换为二进制为00001111,和刚刚取的83H相与,83H二进制为10000011,相与后,为00000011,
所以CX=3H(CL=3H)。
MOV AL,[DA1+3]--------去数据段中DA1+3这个数 94H放在AL中,AL=10010100
SHL AL,CL --------------SHL,逻辑左移指令,左移后,低位补0,和ROL不同的是,不形成环路。这里逻辑左移CL位,即移动3位,为10100000,即AL=0A0H.
做了很久了,希望帮得到你~~
^-^
1、
MOV BX, 0-------BX=0
MOV CX, BX--------CX=BX=0
SUB CX, AX--------CX-AX=0EDCCH (你可以用电脑的计算器选到程序员情况下来算一下)
-------------(SUB是不带结尾的减法指令,这里的执行操作:CX-AX,结果放在CX里面)
SBB BX, DX-------BX-DX=5FFFH
-------------(SBB是带借位减法,这里的执行操作:BX-DX-CF,其中,CF是借位,最后结果放在BX里,BX-CF=6000H,再减去CF=1,就是5FFFH了。)
MOV AX, CX---------把CX 里的数放到AX,AX=0EDCCH
MOV DX, BX---------把BX里的数放到DX
2、
ROL是循环左移指令,表示将操作数左移,由CL指定移位位数,最高位一方面进入标志位CF,一方面移入最低位形成环路。
这里先说一下~~AX组成是高位AH和低位AL,AH和AL都各有8位。所以这里你看到的ROL和SHL的结果一样,因为他们都没有移出去的。
MOV AX, 234H-------AX=234H,用二进制表示就是1000110100
MOV CL, 3-----------CL指定左移位数,左移3位
ROL AX,CL-----------左移3位, 就是1000110100000,也就是AX=11A0H,
DEC AX---------------AX自减一,AX=119FH
MOV CX, 4-----------CX=4
MUL CX--------------AX*CX,结果的低位字(16位)放在AX中,高位字(16位)放在DX中,这里不需要高位,AX=467CH。
3、
DA1 DB 83H,72H,61H,94H,5AH ---定义的数据段,DB表示是字节型的
┇
MOV CX,WORD PTR [DA1]---------CX指向前面定义的数据段DA1,WORD PTR [DA1]表示是取字型的,就是说两个字节,这里取的是83H,72H,但是因为存放的缘故,低位在前,高位在后,所以83H是低位
AND CX,0FH ---------AND表示是‘与’操作,即两个操作数对应位都为1时才为1。0FH换为二进制为00001111,和刚刚取的83H相与,83H二进制为10000011,相与后,为00000011,
所以CX=3H(CL=3H)。
MOV AL,[DA1+3]--------去数据段中DA1+3这个数 94H放在AL中,AL=10010100
SHL AL,CL --------------SHL,逻辑左移指令,左移后,低位补0,和ROL不同的是,不形成环路。这里逻辑左移CL位,即移动3位,为10100000,即AL=0A0H.
做了很久了,希望帮得到你~~
^-^
展开全部
第一题:AX=1234H;令AX中为十六进制数1234H。DX=0A000H ;令DX中为十六进制数A000H(汇编中规定:对于以字母开头的十六进制数,必须在字母前面加0,所以A前面的0无实际意义)。MOV BX, 0 ;对BX赋值,BX中为0000H。MOV CX, BX;将BX中数赋值给CX,此时BX,CX中均为0000H。SUB CX, AX;不带进位减法,将CX(0000H)减去AX(1234H),结果为EDCCH,放进CX中。SBB BX, DX;带进位减法,将BX(0000H)减去DX(A000H)再减去CF (CF为进位,借位标志,当被减数小于减数时,产生借位,此时CF为1),结果为5FFFH。MOV AX, CX;将CX的值(EDCCH)赋给AX,此时,AX也为EDCCH。MOV DX, BX;将BX(5FFFH)的值赋给DX,DX也为5FFFH。
第二题:MOV AX, 234H,MOV CL, 3同第一题,都是赋值。ROL AX, CL,将AX中内容不带进位循环左移3位(末尾补0),相当于把AX扩大到了原来的2^3=8倍。DEC AX;把AX内容减1,结果再放回AX,MOV CX, 4,CX赋值4。MUL CX;将AX内容乘以CX(4),结果为32位的,高16位放在DX中,第十六位放在AX中。
第三题:DA1 DB 83H,72H,61H,94H,5AH ;在内存单元中定义字节型(DB的作用)数组83H,72H,61H,94H,5AH。 MOV CX,WORD PTR [DA1] ,将DA1字节型强制转换为16位的字型。 AND CX,0FH;将CX内容与OFH相与,也就是将CX的高12位置为0,低四位保存在CX中 。 MOV AL,[DA1+3],将地址DA1+3的内容赋给AL。 SHL AL,CL;将AL中内容逻辑左移CL中内容的次数(如CL=3,就是将AL内容逻辑左移3位) 。
写了这么多,你看看能否给你有点帮助···
第二题:MOV AX, 234H,MOV CL, 3同第一题,都是赋值。ROL AX, CL,将AX中内容不带进位循环左移3位(末尾补0),相当于把AX扩大到了原来的2^3=8倍。DEC AX;把AX内容减1,结果再放回AX,MOV CX, 4,CX赋值4。MUL CX;将AX内容乘以CX(4),结果为32位的,高16位放在DX中,第十六位放在AX中。
第三题:DA1 DB 83H,72H,61H,94H,5AH ;在内存单元中定义字节型(DB的作用)数组83H,72H,61H,94H,5AH。 MOV CX,WORD PTR [DA1] ,将DA1字节型强制转换为16位的字型。 AND CX,0FH;将CX内容与OFH相与,也就是将CX的高12位置为0,低四位保存在CX中 。 MOV AL,[DA1+3],将地址DA1+3的内容赋给AL。 SHL AL,CL;将AL中内容逻辑左移CL中内容的次数(如CL=3,就是将AL内容逻辑左移3位) 。
写了这么多,你看看能否给你有点帮助···
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询