;把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になります。 AXは4ビット右にシフトされ、結果は0123'0567です。4は失われます。ここで使用する方法は、最初に34を格納し、次に4ビットの左シフトを実行して、40になり、次に05とORするだけです。 45になりますので、合わせると0123'4567となります。