作业帮 > 综合 > 作业

1.假设寄存器AX=1234H,DX=0A000H

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/18 04:50:30
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____.
像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.
做了很久了,希望帮得到你~
^-^