思路:
主要是通過SHR指令對AX寄存器進行移位,有個容易出錯的地方就是,當移位數超過1時,不能直接用指令SHR,而應該先將移位數存入CL,再使用指令SHR AH,CL。舉個例子:
SHR AX,1 ;是可以的 SHR AX,4 ;會報錯MOV CL,4 ;這樣不會報錯 SHR AX,CL
代碼如下:
DATA SEGMENTAX_VAL DW 1001100000010000B
DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMOV AX,AX_VAL ;AX 1001 1000 0001 0000START:MOV BX,AX ;BX 1001 1000 0001 0000MOV DX,AX ;DX 1001 1000 0001 0000MOV CL,4 ;CL 0000 0100SHR AH,CL ;AH 0000 1001MOV AL,AH ;AL 0000 1001MOV BL,BH ;BL 1001 1000AND BL,0FH ;BL 0000 1000MOV DH,DL ;DH 0001 0000SHR DH,CL ;DH 0000 0001MOV CL,DH ;CL 0000 0001AND DL,0FH ;DL 0000 0000MOV AH,4CH ;調用4CH號功能返回DOS操作系統INT 21H ;終止當前程序的運行,并返回DOS系統
CODE ENDSEND START
將AX寄存器中的16位數據分成4組(從高到低),每組4位,然后把這4組數作為數當中的低4位分別放在AL,BL,CL,DL中。_將ax寄存器中的16位數分成4組-CSDN博客
其實最好將AL,BL,CL,DL寄存器的值打印出來。后面再改吧......................................................