欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

将AX寄存器中的16位数据分成4组(从高到低),每组4位,然后把这4组数作为数当中的低4位分别放在AL,BL,CL,DL中。

程序员文章站 2022-03-10 09:49:48
...

将AX寄存器中的16位数据分成4组(从高到低),每组4位,然后把这4组数作为数当中的低4位分别放在AL,BL,CL,DL中。

P176
4.14

编程思路:首先用BX、DX存放AX,即原AX=原BX=原DX;
CL为循环移动二进制数位数4位
AL存放AX中的AH的高四位,BL存放AX中的AH的低四位,
CL存放AX中的AL的高四位,DL存放AX中的AL的低四位。
对于AL来说,只需要将原AX的AH右移四位,然后赋值给AL即可
对于BL来说,只需要将原BX的BH赋值给BL,然后再与0FH进行与操作保留后四位即可
对于CL来说,只需要将原DX的DL赋值给DH,然后将DH进行右移四位,此时的DH赋值给CL即可
对于DL来说,原DX的DL就是本身需要的DL,不需要移动

代码如下:

举例,AX为9810-->1001 1000 0001 0000
最后结果为		 AL   BL   CL   DL
CODE	SEGMENT
		ASSUME	CS:CODE
START:	MOV	BX,AX	;BX	1001 1000 0001 0000
		MOV	DX,AX	;DX	1001 1000 0001 0000
		MOV	CL,4	;CL	  	      0000 0100
		SHR	AH,CL	;AH	0000 1001
		MOV	AL,AH	;AL			  0000 1001
		MOV	BL.BH	;BL		      1001 1000
		AND	BL,0FH	;BL	          0000 1000
		MOV	DH,DL	;DH 0001 0000
		SHR	DH,CL	;DH	0000 0001
		MOV	CL,DH	;CL			  0000 0001
					;最后结果AL BL CL DL === AX
					;1001 1000 0001 0000 = AX
		MOV	AH,4CH	;调用4CH号功能返回DOS操作系统
		INT	21H		;终止当前程序的运行,并返回DOS系统
CODE	ENDS
		END	START
相关标签: 微机原理