
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
完
// 希望能达到你的要求ORG 0000H
LJMP MAIN
ORG 0003H
ORG 0030H
MAIN:
MOV SP,#30H 设置堆栈
MOV R2,#41H A的ASCII码
MOV R3,#50H 循环50次
MOV DPTR,#2000H 表首地址
MOV A,#00H
GOTO:
PUSH ACC
MOVC A,@A+DPTR
XRL A,R2
JZ CONTROL 如果是41H 则跳出保存
DJNZ R3,GOTO2 是否寻到了50H个地址 寻到了则退出(这时无有效的结果保存)_
LJMP EXIT
GOTO2:
POP ACC
INC A
AJMP GOTO
CONTROL:
POP ACCd出A 即低位地址
MOV R1,A
MOV DPTR,#2051H
MOVX @DPTR,A 存放低位地址
INC DPTR
MOV A,#20H
MOVX @DPTR,A 存放高位地址
EXIT:
END
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)