把DX,AX中的双字右移四位

;把DX,AX中的双字右移四位。
assume cs:code
code segment
start:
	MOV DX, 0FFFFH
	MOV CL, 4  ;设置循环次数为4
	SHR AX, CL ;实现将AX逻辑右移
	MOV BL, DL ;将DL的低4位暂存在BL中
	SHR DX, CL ;实现将DX逻辑右移
	SHL BL, CL ;将BL逻辑左移
	OR  AH, BL ;将BL或上AH   ;也就是使DL的低4位或上AH高4位,从而实现了DX、AX中的双字右移四位。

	mov ax, 4c00H
	int 21H
code ends
end start

思路:假如DX+AX存储的一串8位16进制数(双字)是:1234‘5678,那我们右移4位后得到的显然应当是0123’4567,可若只是简单分别将DX、AX右移4位,那样得到的是:0123‘0567。4就丢了,这里我们采用的方法是把34先存起来,然后执行一个左移四位变成:40再和05相或,就变成45了,拼起来就是结果0123’4567了

发布了78 篇原创文章 · 获赞 3 · 访问量 5596

猜你喜欢

转载自blog.csdn.net/qq_43071318/article/details/105171708