您的“把十进制数20载入26H”这个说法有些糊涂。
数的本身是无所谓“进制”的。一个数就是一个数,所谓“进制”只不过是一种表示方式而已。
您的这一条指令,不过就是把“这个数”送入26H单元。
这个指令中,数字20,只不过是您的程序里写成10进制的样子了,但并不是要求CPU也按照“这个样子”来载入存储单元。
这个指令中,你把20改写成14H,CPU来说,含义完全一样。因为这仍然是同一个数。这个数如果化为二进制就是00010100。
至于CPU实际载入存储单元时只可能是按二进制:00010100。
所谓“字节”,就是指8位二进制的存储单元存放的数据。
一般说一个字节的高四位、低四位,都是指二进制形式中的位。
所以,您的题目中的措辞“十进制字节的高四位与低四位”非常糊涂。
何谓“十进制字节”?何谓“位”?是哪个进位制的“位”?
顺便指出:楼上DMF_WYW的解答,是“二进制的高四位与低四位”。
拆分高四位和低四位分别送P1和P2程序如下(假如存在26H中):
DATDL:
MOV A,26H
ANL A,#0F0H
SWAP A
MOV B,A
MOV A,P1
ANL A,#0F0H
ORL A,B
MOV P1,A
MOV A,26H
ANL A,#0FH
MOV B,A
MOV A,P2
ANL A,#0F0H
ORL A,B
MOV P2,A
RET
拆分一个字节的高四位与低四位,除以16,即可。
MOV A, 26H
MOV B, #16
DIV AB ;分解成功
MOV P1, B
MOV P2, A
SJMP $
MOV A,26H
ANL A,#0FH
ANL P2,#0F0H
ORL P2,A
MOV A,26H
ANL A,#0F0H
SWAP A
ANL P1,#0F0H
ORL P1,A