📄 let.asm
字号:
;多字节一维数组的赋值算法
FRONT EQU 2000H ;数组存放首址。
MAX EQU 64H ;数组元素总个数。
SIZE EQU 3 ;每个数组元素所占字节数。
X EQU 31H ;待赋值数组元素的数值存放单元首址。
I DATA 30H ;待赋值数组元素的序号存放单元。
ORG 0000H
LJMP TEST
ORG 100H
TEST: MOV I,#0AH ;准备将序号为10的元素
MOV X,#08H ;赋值为08856CH
MOV X+1,#85H
MOV X+2,#6CH
LCALL LET ;调用赋值算法
STOP: LJMP STOP
LET: SETB C ;计算MAX-I-1。
MOV A,#MAX
SUBB A,I
JC LETEND ;待赋值数组元素的序号超范围。
MOV DPTR,#FRONT;取数组首址。
MOV A,I
MOV B,#SIZE ;按每个数组元素所占字节数计算偏移量。
MUL AB
ADD A,DPL
MOV DPL,A
MOV A,B
ADDC A,DPH
MOV DPH,A ;得到待赋值数组元素的实际地址。
MOV R0,#X ;指向数组元素的数值存放单元。
MOV R2,#SIZE ;传送一个完整的数据。
LETS: MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R2,LETS
CLR C ;赋值成功。
LETEND: RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -