文档详情

汇编语言程序设计基础.ppt

发布:2025-02-16约7.94千字共10页下载文档
文本预览下载声明

01例4—5负数求补程序:外部RAM地址为3000H的数据块中有100个补码,要求逐一检查,若为负数则取补后放回,正数则不变。02编制循环程序的要点:发现和寻找过程中具有重复性和规律性的部分,并分析出重复的次数、重复结束的条件等。03解:这个任务中规律性的过程是:取数、判符号、若为负数则取补负数求补程序流程图 ORG1000HSTART:MOVDPTR,#3000H ;置地址指针 MOVR7,#64H ;置计数初值LOOP1:MOVXA,@DPTR ;取数 JNBACC.7,LOOP2 ;若正数转LOOP2 CPLA INCA ;负数取补 MOVX@DPTR,A ;负数取补后送回LOOP2:INCDPTR ;修改地址指针 DJNZR7,LOOP1 ;100个数未完继续 END循环程序的结构包括四个部分:初始化部分:为循环做准备。处理部分(循环体部分):实际数据处理部分,是重复执行的程序段部分,是循环程序的主体。控制部分:控制循环的进行和结束。两个内容:修改循环参数为下一次循环做准备;判断是否满足结束条件,若不满足则转去继续执行循环体部分,满足则退出循环。结束部分:存放所得结果,恢复某些工作单元的初值。循环程序的2种组织方式2、程序的出口不同:方式1:程序的出口在最后方式2:程序出口通常不是在最后两种组织方式的区别判断循环结束条件的时刻不同:方式1:处理部分至少执行一次方式2:处理部分可能一次也不执行一串ASCII字符存放在以BLOCK开始的连续片外RAM单元中,以空白字符“0”结尾。要求用串行口发送出去。01循环结束条件是通过检查约定的结束标志0来决定继续循环或终止循环。循环次数不定的情况采用方式2。02例4—6发送字符串程序发送字符串程序流程图 ORG2000H MOVDPTR,#BLOCK;字符块首地址LOOP:MOVXA,@DPTR;取要发送字符 JZNEXT ;0字符转结束LOOP1:JNBTI,LOOP1 ;上个发送完吗? CLRTI ;发送完清TI MOVSBUF,A ;发送字符 INCDPTR ;调整指针下一个 SJMPLOOPNEXT: RET循环中包含另一个循环叫循环嵌套(LOOP1:JNBTI,LOOP1)有多层嵌套时称为多重循环程序1格式:字符名称EQU表达式2功能:汇编程序自动把EQU右边的“表达式(8位或16位)”的值赋给左边的“字符名称”。“字符名称”必须先赋值后使用。EQU伪指令与存储单元无关。3在某程序中,一旦用EQU伪指令对某字符名称赋值之后,就不能再用EQU伪指令来改变其值,其值在整个程序中是固定的。这里“字符名称”不同于标号,因此不加冒号。(3)、赋值伪指令EQU01ORG2000H02BT EQUR303DATA EQU30H04DELAY EQU1050H05MOVR0,DATA;R0←(30H)06MOVA,BT ;A←(R3)07?08LCALLDELAY ;调用1050H子程序09?10END例:[标号:]DBX1,X2,…,Xn格式:01把右边的Xi(i=1~n)依次存放到以左边标号为起始地址的连续的存储单元中。其中Xi为8位二进制数据(或十进制、十六进制、表达式、ASCII码等多种形式)。功能:02(4)、定义字节伪指令DB例:ORG1200H1TAB:DB50H,100,2*5,-4TAB1:DB‘D’,‘2’,‘#’,‘ABC’2TAB的地址1200H3TAB1的地址为1205H例中的字符以ASCII码存入(例如:D、#、ABC)。负数用补码存入(例如:-4)。4格式:[标号:]DWX1,X2,…,Xn功能:DW与DB功能相似,区别在于DB定义的是字节,DW定义的是字(两个字节),所以Xi是16位的数据字或标号,但该标号必须事先赋值。汇编时一个字数据占用两个连续的存储单元。(5)、定义字伪指令DW例:ORG1500HDATA EQU3522HADDR:DW3456H,9BH,10DWDATA高字节在前(低地址单元)低字节在后(高地址单元)12[标号:]DS表达式格式:指示汇编程序

显示全部
相似文档