查表程序设计【VIP专享】
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
堆栈指令的使 用
4.3 汇编语言实用程序设计-查表程序设计
例2:求一个0~9的数是立方
特A点BC:: xM为O一V 字A节,、Ry0为两字节, y=f(x)在ROM中的地址
是RTLAB1+A2x及TAB1+2x+1
入口参数MMOO:VV在RD0P中TR;,
B, A #TAB
出口参数MO:V在CRA2, 、@RA1+中D,PT高R字节在R2中
执行查表指令时,发出读程序存储器选通脉冲/PSEN。 指令“MOVC A,@A+DPTR”完成把A中的内容作为一
个无符号数与DPTR中的内容相加,所得结果为某一程序存 储单元的地址,然后把该地址单元中的内容送到累加器A 中。
指令“MOVC A,@A+PC”以PC作为基址寄存器,PC的内 容和A的内容作为无符号数,相加后所得的数作为某一程 序存储单元的地址,然后把该地址单元中的内容送到累加 器A中。
4.3 汇编语言实用程序设计
一个完整的源程序必备的四个要素:
❖ 有ORG 0000H,即源程序的机器码从ROM的0000H单元开 始存放。
❖ 通常源程序的存放要跳过中断向量区。实现方法:在0000H 单元存放一条转移指令,转向中断向量区后的主程序的真实 的入口地址,如START、MAIN等。
❖ 有END,告知汇编程序,你的源程序结束了。 ❖ 源程序的主程序框架一定是一个顺序执行的无限循环的程序,
END
复习EQU 功能?
有错吗?
包装成子程 序?
START: LOOP:
LENG EQU 10
SUM EQU 21H
BLOCK EQU 22H
ORG 0000
LJMP START
ORG 0030H
CLR A
MOV R7, # LENG
MOV R0, #BLOCK
LCALL LOOP
SJMP
$
ADD A, @R0
MPOUVSH DDPPTHR,#TAB;1保存DPH
MPOUVSCH AD,PL@A+DP;TR保存DPL
RMEOTV DPTR,#TAB1
MOVC A,@A+DPTR
POP DPL
;恢复DPL
POP DPH
;恢复DPH
RET
TAB1: DB 00H,01H,04H,09H,10H DB 19H,24H,31H,40H,51H
MOV
R2, A
MOV
A, B
INC
A
MOVC A, @A+DPTR
MOV
R1, A
RET
TAB: DW 0, 1, 8, 27, 64
DW 125, 216, 343, 512, 729
4.3 汇编语言实用程序设计-查表程序设计
例例 特4点4-6:-传6在本y感=一例器f(个的x输)在以x出和RM的yOC均电MS为-中压51双的与为字地温核节址度心无为的符是非温号T线度A数性B控。2关制+2系器x及,中T传,A感B温2器度+输2x+1
DB 19H,24H,31H,40H,51H
第1条指令 ADD A,#01H 的作用是加上偏移量,可以根 据A的内容查出X对应的平方。
4.3 汇编语言实用程序设计-查表程序设计
例1:求x的平方,x:0~9 特点:x、y均为一字节, y=f(x)在ROM中的地址是TAB1+x
AABBCC:: MMOOVV AA,, RR00
入口参出 得数的的:电不在压同R已温2R由度3下A中/D的;转电换压为值1数0位据二构进成制一数个x表。,根表据中测放 出口参温数度:值在y,R2xR为3电中压; 值数据。设测得的电压值x放入 ***学习R2双R字3中节,无根符据号电数压乘值2的x,解查决找方对法应。的温度值y,仍
第九课
复习 4.3 汇编语言实用程序设计
4.3.3 查表程序设计 4.3.7 分支转移程序设计 4.3.8 循环程序设计
复习
❖ 一个源程序的四个要素 ❖ 子程序:形式、功能、入口参数、出口参数 ❖ 子程序的调用:调用过程示意图 ❖ 子程序调用及返回指令的执行过程 ❖ 子程序的现场保护和参数传递 ❖ 查表程序
4.3 汇编语言实用程序设计-查表程序设计
例4-5 子程序的功能为:根据累加器A中的数x(0~9之间) 查x的平方表y,根据x的值查出相应的平方y。x和y均为单字 节数。
地址
子程序
Y
ADD A,#01H
Y+2
MOVC A,@A+PC
MOVC A,@A+PC 的学习
Y+3
RET
Y+4
DB 00H,01H,04H,09H,10H
运行过程必须构成一个圈;子程序与主程序相对独立。
4.3 汇编语言实用程序设计
ORG 0000H LJMP MAIN
MOV O3R0GH, 0#03200H MMAOIVN: M4O0VH,3#0H5,0H#20 CLR MAOV 40H, #50H LCALLCLARBC A 按照规LSCJ则AMLP包L$装ABC成.ASM
INC R0
DJNZ R7, LOOP
MOV SUM, A
RET
END
4.3 汇编语言实用程序设计
4.3.3 查表程序设计
数据补偿、修正、计算、转换等各种功能,具有程序简单、 执行速度快等优点。
查表就是根据自变量x,在表格中寻找y,使y=f(x)。
首先是用DB、DW伪指令建表,把握表格中的数据的位置与x的 关系。由x来表达y在程序存储器中的地址,然后用MOVC指令 实现查表。 例如:求x平方时的表格结构。
DB 00H,01H,04H,09H,10H DB 19H,24H,31H,40H,51H
举例:自编例1、例2、例3及课本上的例4-5、例4-6、例4-7。
4.3 汇编语言实用程序设计-查表程序设计
指令系统中给用户提供了两条极为有用的查表指令: ⑴ MOVC A,@A+DPTR ⑵ MOVC A,@A+PC
ABC: MOV R3, #30H MOV R1, #wk.baidu.com0H CLR A
L1: MOV @R1,A INC R1 DJNZ R3, L1 RET END
;?30H ;?40H
START: LOOP:
LENG EQU 10 SUM EQU 21H BLOCK EQU 22H ORG 0000 LJMP START ORG 0030H CLR A MOV R7, #LENG MOV R0, #BLOCK ADD A, @R0 INC R0 DJNZ R7, LOOP MOV SUM, A ESNJDMP $