第六章汇编语言程序设计

更新时间:2023-03-18 20:47:01 阅读量: 人文社科 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第六章汇编语言程序设计 汇编语言的基本知识

常用汇编程序设计方法

汇编语言的基本知识

汇编语言的基本知识

汇编语言的格式

–LABLE:OPCODE ,

汇编语言的构成

–指令性语句

–指示性语句:伪指令

程序设计流程OPRAND ;OMMENT

伪指令

ORG : ORG 2000H

END

EQU:AAA EQU 20H

–MOV A,20H (MOV A,AAA)

DATA (可前可后)

DB 、DW

BIT :A1 BIT 00H(MOV C,A1)

程序设计流程

明确要求和要达到的目的确定解决问题的计算方法和步骤画出流程图分配内存地址按流程图编写程序上机汇编、调试、修改及最后确定源程序

$2 简单程序(顺序结构) 大量使用数据传送类指令

注意正确选择指令以提高效率

编程将20单元内的两个BCD熟变换成ACSII码放在20H, 21H单元内(EX2.ASM)

将20H单元内两个BCD码变换成相应

的ASCII码放在21H:22H中

Org 0hLjmp 2000hORG 2000HMOV R0,#22HMOV @R0,#00MOV A,20HXCHD A,@R0ORL 22H,#30HSWAP AORL A,#30HMOV 21H,ASJMP $END MOV A,20HMOV B,#10HDIV ABORL B,#30HMOV 22H,BORL A,#30HMOV 21H,ASJMP $END ;15BYTE 14T

求16位二进制补码的绝对值MOV A,20H

CPL A

ADD A,#01H ;INC A

MOV 20H,A

MOV A,21H

CPL A

ADDC A,#0

ANL A,#7FH

MOV 21H,A

SJMP $

$6.3 分支程序

根据程序要求无条件或有条件改变程序执行执行的顺序,选择程序的流向. 特点:程序中含有转移类指令 关键:正确选用转移指令

正确运用转移指令

无条件分支程序

–程序设计者事先设计好的

–LJMP、AJMP 、SJMP

有条件分支程序

–根据已经执行的程序对标志位、ACC或内部RAM的某些位的影响结果决定程序的流向–JZ/JNZ、CJNE、DJNZ、位控制转移类指令

注意

使用条件转移指令形成分支前一定安排可供条件转移指令进行判别的条件。–JC LOOP

正确选定所用的转移条件及转移目标地址

$循环程序

循环初始化

–循环次数计数器,工作寄存器设初值等 循环体

–尽量简练;注意地址指针的修改 循环控制

–检查结束条件,及时退出循环

注意循环嵌套

允许外重循环嵌套内重循环

循环体不能交叉

不能从循环程序外部跳入循环程序内部

例:200名学生参加考试,成绩放在8031的外部RAM的一个连续存储单元,95~100分颁发A级证书,90~94分颁发B级证书,编一程序,统计获A、B级证书的人数。将结果存入内部RAM的两个单元。

注意地址指针的分配

ORG 0030H

EG XDATA 1000H

GA DATA20H

GBDATA 21H

MOV GA,#00

MOV GB,#00

MOV DPTR,#EG

MOV R2,#200

LOOP:MOVX A

@DPTR

CJNE A,#95, LOOP1 LOOP1: JNC NEXT1 CJNE A,#90,LOOP2LOOP2: JC NEXTINC GBSJMP NEXTNEXT1: INC GANEXT: INC DPTR DJNZ R2,LOOP SJMP $END ,

数据排序

常用气泡法(两两比较法)它先使E100和E99进行比较,若E100>E99,则两数交换,否则不动,然后E99和E98进行比较,按同样的原则,决定是否交换,一直比较下去,最后完成E2和E1的比较及交换。经过N-1次比较后,E1位置必然得到数组中的最大值。犹如一个气泡冒到水顶。如此下去,经过N-1次便完成N个数据的排序。

例:100个数据,从小到大进行排

MOV R2,#100

BUB:MOV R0,#20H

CLR F0

DEC R2

BL:CJNE R2,#0,BB

MOV 7F,R2

MOV 20H,@R0

MOV A,@R0

INC R0

MOV 21H,@R0 CJNE A,21H,LOPLOP: JC BMOV @R0,20HDEC R0 MOV @R0,21HINC R0SETB F0B:DJNZ 7FH,BLJB F0,BUBBB:SJMP $

$查表程序的设计

主要用于:复杂代码转换显示数据补偿:传感器补偿复杂函数计算: Y=SIN(X)

查表指令

在51中有两条查表指令:MOVC A,@A+DPTR

使用 MOVC A,@A+PC须注意:

1. 使用传送指令将数据表格项数送入ACC

2. ADD A,#DATA指令对A进行修改:PC+DATA=表格首地址

3. MOVC A,@A+PC 完成查表.

例1 ADD A,#01H

MOVC A,@A+PC

RET

DB

00,01,04,09,10H,19H,24H,31H,30H,51H…

例2 设一巡回报警系统,对16路输入进行控制,现根据测量路数,找出每

路的最大允许值.若大于允许值就报警.

TB3:

TAB3:DW 1520,3721,4256 ; MOV A,R2ADD A,R2MOV R3,AADD A,#6MOVC A,@A+PCXCH A,R3ADD A,#3MOVC A,@A+PCMOV R4,ARET256 表格最大长度

本文来源:https://www.bwwdw.com/article/7mfj.html

Top