社交网站的设计,做网站一般收取多少钱,小红书账号代运营,ui交互设计案例编写一个程序#xff0c;实现将存放在AX和DX中的32位数据循环右移二进制数的4位。#xff08;DX存放高字节内容#xff0c;AX存放低字节内容#xff09;
P151 例4.9
汇编思路#xff1a;
AX右移四位后#xff0c;使用BH接收AL的低四位数据#xff0c;得到BH的八位数据…编写一个程序实现将存放在AX和DX中的32位数据循环右移二进制数的4位。DX存放高字节内容AX存放低字节内容
P151 例4.9
汇编思路
AX右移四位后使用BH接收AL的低四位数据得到BH的八位数据循环左移四位将原先AL中的低四位放到BH的高四位中最后结果BH的高四位存放AX的低四位BH的低四位存放0000H DX右移四位后使用BL接收DL的低四位数据得到BL的八位数据循环左移四位将原先DL中的低四位放到BL的高四位中最后结果BL的高四位存放DX的低四位BL的低四位存放0000H
详细过程这里的CL用来移动位数即移动4位二进制数据。首先因为AX存放低字节内容所以循环右移4位之后AL中的低四位会被移除此时需要使用BH接收AL的低四位数据但是由于BH和AL存放的都是八位二进制数所以将AL值赋给BH之后BH再进行左移只保留AL中的第四位即可最后BH的高四位存放AL的低四位BH的低四位存放0000H。BH的高四位存放AX中的低四位数据之后AX开始循环右移四位二进制数。 接着BL存放DL中的低四位数据DX开始循环右移四位二进制数BL的低四位存放原先DX的低四位然后BL左移四位即BL的高四位为原先DX的低四位BL的低四位为0000H。 由于AX已经循环右移了四位AH的高四位为0000HAH的低四位存放原先AH的高四位而且BL高四位存放的是原先DX的低四位BL的低四位为0000HAH和BL求或运算即将BL存放的高四位数据即DX的低四位传递给AH的高四位即AX的高四位。 同样由于DX已经循环右移了四位DH的高四位为0000HDH的低四位存放原先DH的高四位BH的高四位存放原AX中的低四位DH和BH求或运算BH的高四位传递给DH的高四位DH的低四位存放原DH的高四位。
代码和具体存储器中数值如下
CODE SEGMENT ; DX,5678H AX,1234HASSUME CS:CODE ; XH XL
START: MOV AX,1234H ; 0001 0010 0011 0100 AXMOV DX,5678H ; 0101 0110 0111 1000 DXMOV CL,04 ; 0000 0100 CLMOV BH,AL ; 0011 0100 BH BH获取AX循环右移四位即将丢失的低四位数据SHL BH,CL ; 0100 0000 BH BH左移四位将AX失去的低四位放置到BH的高四位处此时BH高四位为AX原先的低四位BH的低四位为0000HSHR AX,CL ; 0000 0001 0010 0011 AX BH接收AX的低四位AX开始循环右移四位MOV BL,DL ; 0111 1000 BL BL接收DX的低四位SHR DX,CL ; 0000 0101 0110 0111 DX BL接收DX的低四位DX开始循环右移四位SHL BL,CL ; 1000 0000 BL BL左移四位将DX的低四位放置到BL的高四位处此时BL高四位为DX原先的低四位BL的低四位为0000HOR AH,BL ; 1000 0001 AX AH高四位存放0000H低四位存放原AX的高四位 BL高四位存放原DX的低四位BL的低四位为0000H 或运算结束后AX的AH高四位存放原DX的低四位AH低四位存放原AX的高四位OR DH,BH ; 0100 0101 DH DH高四位存放0000H低四位存放原DX的高四位 BH高四位存放原AX的低四位BH的低四位为0000H 或运算结束后DX的DH高四位存放原AX的低四位DH低四位存放原DX的高四位MOV AH,4CH ; 0100 0101 0110 0111 DXINT 21H ; 1000 0001 0010 0011 AX
CODE ENDS ; DX,4567H END START ; AX,8123H