mov 30h, #1
mov 31h, #3
mov 32h, #5
mov 33h, #7
mov 34h, #9
mov 35h, #2
mov 36h, #4
mov 37h, #6
mov 38h, #8
mov 39h, #10
call SQRT
sjmp $
查表法求平方的程序如下。
SQRT:
MOV R0, #30H
MOV R1, #40H
MOV R2, #10
LOOP:
MOV A, @R0
ADD A, #S_TAB - ($ + 4)
MOVC A, @A + PC
MOV @R1, A
INC R0
INC R1
DJNZ R2, LOOP
RET
S_TAB:
DB 1, 4, 9, 16, 25, 36, 49, 64, 81, 100
完
LTB2:-------------------下面是R2R3乘以2
MOV A, R3
CLR C
RLC A
MOV R3, A
XCH A, R2
RLC A
XCH R2, A
------------------下面是表首地址加上R2R3
MOV DPTR, #TAB2
ADD A, DPL (R2R3)+(DPTR)→(DPTR)
MOV DPL, A
MOV A, DPH
ADDC A, R2
MOV DPH, A
------------------下面是查表,查出两个字节
CLR A
MOVC A, @A + DPTR
MOV R2,A
CLR A
INC DPTR
MOVC A, @A + DPTR
MOV R3,A
RET
----
这个程序,是根据两个字节的数据来查表,查出的,也是两个字节。
如果先弄懂了一个字节的查表程序,看这个程序,也就没有什么难的了。
如下:ORG 0000H
BUF1 EQU 30H
BUF2 EQU 40H
NEQU 0AH
MOV 30H, #05H 00~09H,加上这行,就是给定30H单元数据。
MOV R0, #5 这里不应该是5, 应该是BUF1
MOV R1, #BUF2以下不变
……
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)