《单片机原理及应用》第4章-汇编语言程序设计课件_第1页
《单片机原理及应用》第4章-汇编语言程序设计课件_第2页
《单片机原理及应用》第4章-汇编语言程序设计课件_第3页
《单片机原理及应用》第4章-汇编语言程序设计课件_第4页
《单片机原理及应用》第4章-汇编语言程序设计课件_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章汇编语言程序设计程序设计的步骤和伪指令。源程序、目标代码、编辑和汇编的基本概念。顺序程序、分支程序、循环程序、子程序的设计。算术运算和数码转制程序设计。10/7/2023广东松山职业技术学院课件制作组第4章汇编语言程序设计程序设计的步骤和伪指令。10/6/1本章主要内容

4.1汇编语言程序设计基础

4.2顺序程序设计4.3分支程序设计

4.4

循环程序设计

4.5

子程序设计

4.6

算术运算和数码转制程序设计10/7/2023广东松山职业技术学院课件制作组本章主要内容4.1汇编语言程序设计基础4.224.1汇编语言程序设计基础

1.机器语言4.1.1程序设计语言简介2.汇编语言用二进制编码表示每条指令。计算机能够直接执行用机器语言编出的机器码程序。不同种类的计算机,由于其内部结构不完全相同,它的机器码指令也不一定相同。符号化的机器语言。它用一些容易理解和记忆的符号代替机器码指令,又称为助记符语言,助记符指令与机器码指令一一对应。不同结构的计算机,汇编指令不相同。10/7/2023广东松山职业技术学院课件制作组4.1汇编语言程序设计基础1.机器语言4.1.1程序34.1.1程序设计语言简介汇编语言和特点:对比机器码,汇编语言克服了机器语言的缺点,方便了用户记忆指令和编写程序,但用汇编语言编写的源程序需用汇编程序“翻译”成机器码后方可执行。采用汇编语言编写程序,可以直接访问和操作单片机中的寄存器及存储器单元,对数据的处理表述的非常具体。因此,在计算机实时测试和控制领域中得到了广泛应用。接近自然语言和数学语言的算法语言,具有直观、通用等特点。不象机器语言和汇编语言编写程序需要完全了解CPU硬件结构,且程序不能移植。

3.高级语言10/7/2023广东松山职业技术学院课件制作组4.1.1程序设计语言简介汇编语言和特点:对比机器码,汇编44.1.2汇编语言程序设计步骤1.分析问题,确定算法

程序设计中最重要的一步。设计人员必须认真、仔细地考虑系统需要解决的各种问题以及将来系统功能的进一步扩展,明确知道程序要解决的问题和接收、处理、发送的数据范围以及使用什么样的算法。

2.画流程图

流程图是用各种图形、符号、有向线段来直观地表示程序执行的步骤和顺序。它可使人们通过流程图的基本线索,对全局有完整的了解。10/7/2023广东松山职业技术学院课件制作组4.1.2汇编语言程序设计步骤1.分析问题,确定算法

程序54.1.2汇编语言程序设计步骤4.调试、测试程序调试是利用仿真器等开发工具,采用单步、设断点、连续运行等方法排除程序中的错误,完善程序的功能。3.编写汇编语言源程序

根据流程图用汇编语言指令实现流程图的每一个步骤,从而编写出汇编语言的源程序。10/7/2023广东松山职业技术学院课件制作组4.1.2汇编语言程序设计步骤4.调试、测试程序3.编写汇64.1.3伪指令

1.汇编起始伪指令ORG格式:ORG

16位地址功能:规定该指令后面的源程序汇编后所产生的目标程序存放的起始地址。例4.1ORG2000HMAIN:MOVA,#50H2.汇编结束伪指令END格式:END功能:通知汇编程序结束汇编。汇编时遇到END指令,则结束所有汇编工作,而END之后的所有指令将不予处理。10/7/2023广东松山职业技术学院课件制作组4.1.3伪指令1.汇编起始伪指令ORG格式:ORG74.1.3伪指令

3.赋值伪指令EQU格式:字符名称

EQU

赋值项

功能:把该伪指令右边的值赋项给左边用户定义的符号。

例4-3COUNTEQU64HMOVA,COUNT;A←(64H)注意:使用EQU伪指令时,必须先赋值,后使用,故该指令通常放在程序开头。而赋值后的“字符”,其值在整个程序中不改变,并可多次使用。

10/7/2023广东松山职业技术学院课件制作组4.1.3伪指令3.赋值伪指令EQU格式:字符名称84.1.3伪指令

4.定义数据字节伪指令DB

格式:[标号:]DB字节数据表

功能:从指定的地址单元开始,定义若干个字节的数据或ASCII码字符

例4-4ORG2000HTAB:DB99H,00H,01H,02H,03H,04HSTR:DB‘ABC’┆以上伪指令经汇编后在程序储存器中的2000H~2008H单元的内容为:99H、00H、01H、02H、03H、04H、41H、42H、43H。10/7/2023广东松山职业技术学院课件制作组4.1.3伪指令4.定义数据字节伪指令DB格式:[标94.1.3伪指令

5.定义数据字节伪指令DW

格式:[标号:]DW16位数据表

功能:从指定的地址单元开始,定义若干个字数据(16位)。

例4-5ORG2000HTAB:DW1234H,50H,‘CD’以上伪指令经汇编后,程序存储器中的2000H~2005H单元的内容为:12H、34H、00H、50H、43H、44H。10/7/2023广东松山职业技术学院课件制作组4.1.3伪指令5.定义数据字节伪指令DW格式:[标104.1.3伪指令

6.数据地址赋值伪指令DATA格式:标号

DATA

表达式功能:把由表达式指定的数据地址或代码地址赋予规定的标号。DATA伪指令的功能和EQU伪指令相似,但DATA伪指令所定义的符号可先使用后定义。在程序中它常用来定义数据地址。该语句一般放在程序的开头和末尾。

10/7/2023广东松山职业技术学院课件制作组4.1.3伪指令6.数据地址赋值伪指令DATA格式:标114.1.3伪指令

7.定义存储区伪指令DS

格式:[标号:]DS

表达式功能:从指定的地址单元开始,保留由表达式指定的若干字节空间,以备程序使用。例4-6ORG2000HDS05DB11H,22H,33H以上伪指令经汇编后从2000H单元开始,保留5个字节的存储单元,从2005H单元开始连续存放11H,22H,33H代码。

10/7/2023广东松山职业技术学院课件制作组4.1.3伪指令7.定义存储区伪指令DS格式:[标号:124.1.3伪指令

8.位地址赋值伪指令BIT格式:字符名称

BIT

位地址功能:把位地址赋予规定的字符名称,常用于定义位符号地址。例4-7AABITP1.7BBBITP1.6汇编后P1.7和P1.6(位地址)赋给变量AA和BB,在程序中就可以把AA和BB作为位地址使用。上面介绍了MCS-51单片机汇编语言中常用的伪指令。在编写汇编语言源程序时,必须严格按照汇编语言的规范书写。

10/7/2023广东松山职业技术学院课件制作组4.1.3伪指令8.位地址赋值伪指令BIT格式:字符名称134.2顺序程序设计顺序程序(又称简单程序)是一种最简单、最基本的程序。程序按编写的顺序从第一条指令开始执行,直到最后一条指令为止。计算机是按指令在存储器中存放的先后次序来顺序执行程序的。它会在PC控制下顺序执行。这种程序虽然简单,但它是构成复杂程序的基础。例4-9将两个半字节数合并成一个一字节数。设内部RAM的40H、41H单元中分别存放着8位二进制数。要求取出两个单元中的低半字节、合并成一个字节后,存42H单元。10/7/2023广东松山职业技术学院课件制作组4.2顺序程序设计顺序程序(又称简单程序)是一种最简单、14ORG0000HSTART:MOVR1,#40HMOVA,@R1ANLA,#0FHSWAPAINCR1XCHA,@R1ANLA,#0FHORLA,@R1INCR1MOV@R1,ARETEND4.2顺序程序设计10/7/2023广东松山职业技术学院课件制作组ORG0000H4.215例4-10拆字程序:将40H单元中的内容拆开后分别送41H、42H单元中。ORG0000HSTART:MOVR1,#40HMOVA,@R1MOVB,A;暂存B中ANLA,#0FH;取第一个半字节INCR1MOV@R1,A;存放第一个半字节MOVA,BSWAPAANLA,#0FH;取第二个半字节INCR1MOV@R1,A;存放第二个半字节END4.2顺序程序设计10/7/2023广东松山职业技术学院课件制作组例4-10拆字程序:将40H单元中的内容拆开后分别送41164.3分支程序设计分支程序条件分支无条件分支LJMP、AJMP单分支多分支JZ、JNZCJNZ、DJNZ等JNC、JB、JNB、JBC等10/7/2023广东松山职业技术学院课件制作组4.3分支程序设计分支程序条件分支无条件分支LJMP、A174.3分支程序设计例4-11两个无符号数比较大小设两个连续外部RAM单元ST1和ST2中存放无符号的二进制数,找出其中的大数存入ST3单元中。用减法指令SUBB来比较两数的大小。执行该指令前,先把进位位清零。通过借位(CY)的状态判断两数的大小。设两个数X和Y,当X≥Y时,(CY)=0;X<Y,(CY)=1。用减法指令比较大小,会破坏累加器中的内容,故作减法前先保存累加器中的内容。执行JNC指令后,形成了分支。执行SJMP指令后,实现程序的转移。10/7/2023广东松山职业技术学院课件制作组4.3分支程序设计例4-11两个无符号数比较大小用减法18

ORG8000H

ST1EQU8040H

START1:CLRC

MOVDPTR,#ST1MOVXA,@DPTRMOVR2,AINCDPTR

MOVXA,@DTPRSUBBA,R2JNCBIG1XCHA,R2BIG0:INCDPTRMOVX@DPTR,A4.3分支程序设计SJMP$BIG1:MOVXA,@DPTRSJMPBIG0END10/7/2023广东松山职业技术学院课件制作组

ORG800019例4-12将ASCII码表的ASCII码转换为十六进制数,如果ASCII码不能转换成十六进制数,用户标志位置1。

由ASCII码表可知,30H~39H为0~9的ASCII码,41H~46H为A~F的ASCII码。在这一范围内的ASCII码减30H或37H就可以获得对应的十六进制数。设ASCII码放在累加器A中,转换结果放回A中。流程图如右图所示。4.3分支程序设计10/7/2023广东松山职业技术学院课件制作组例4-12将ASCII码表的ASCII码转换为十六进制数,204.3分支程序设计

ORG0000HSTART:CLRCSUBBA,#30HJCNASCCJNEA,#0AH,MMMM:JCASCSUBBA,#07HCJNEA,#0AH,NNNN:JCNASCCJNEA,#10H,LLLL:JCASCNASC:SETBF0ASC:RETEND10/7/2023广东松山职业技术学院课件制作组4.3分支程序设计

ORG214.4循环程序设计在程序设计中,只有简单程序和分支程序是不够的。因为简单程序,每条指令只执行一次,而分支程序则根据条件的不同,会跳过一些指令,执行另一些指令。它们的特点是,每一条指令至多执行一次。在处理实际事务时,有时会遇到多次重复处理的问题,用循环程序的方法来解决就比较合适。循环程序中的某些指令可以反复执行多次。采用循环程序,使程序缩短,节省存储单元。重复次数越多,循环程序的优越性就越明显。但是并不节省程序的执行时间。由于要有循环准备、结束判断等指令,循环程序执行速度要比简单程序稍慢些。10/7/2023广东松山职业技术学院课件制作组4.4循环程序设计在程序设计中,只有简单程序和分支程序是224.4.1循环程序结构1.循环程序的组成

初始化部分:为循环程序做准备。如设置循环次数计数器的初值,地址指针置初值,为循环变量赋初值等。处理部分:为反复执行的程序段,是循环程序的实体。修改部分:每执行一次循环体后,对指针做一次修改,使指针指向下一数据所在位置,为进入下一轮处理做准备。控制部分:根据循环次数计数器的状态或循环条件,检查循环能否继续执行,若循环次数已达到或循环条件不满足,应控制退出循环,否则继续循环。

通常处理、修改、控制部分又称为循环体。结束部分:分析及存放执行结果。10/7/2023广东松山职业技术学院课件制作组4.4.1循环程序结构1.循环程序的组成初始化部分:234.4.1循环程序结构2.循环程序的结构

先进入处理部分,再控制循环。即至少执行一次循环体。先控制循环,后进入处理部分。即先根据判断结果,控制循环的执行与否,有时可以不进入循环体就退出循环程序。10/7/2023广东松山职业技术学院课件制作组4.4.1循环程序结构2.循环程序的结构先进入处理部244.4.2循环程序设计1.单循环程序

循环次数已知的循环程序例4-14工作单元清零。将40H为起点的8个单元清0。注:此程序的前2~4句为设定循环初值,5~7句为循环体。

ORG0000H

CLEAR:CLRA

MOVR0,#40H

MOVR7,#08

LOOP:MOV@R0,A

INCR0

DJNZR7,LOOP

END10/7/2023广东松山职业技术学院课件制作组4.4.2循环程序设计1.单循环程序循环次数已知的循254.4.2循环程序设计1.单循环程序

循环次数已知的循环程序例4-14工作单元清零。将外部2000H开始的50个RAM单元清零。注:本例中循环次数已知,用R2作循环次数计数器,用DJNZ指令修改计数器值,并控制循环的结束与否。ORG0000H

MOVDPTR,#2000H

CLEAR:CLRA

MOVR2,#32HLOOP:MOVX@DPTR,A

INCDPTRDJNZR2,LOOPEND

10/7/2023广东松山职业技术学院课件制作组4.4.2循环程序设计1.单循环程序循环次数已知的循264.4.2循环程序设计循环次数未知的循环程序例4-17测试字符串长度设有一串字符依次存放在从50H单元开始的连续单元中,该字符串以回车符为结束标志,测得的字符串长度存入R2中。

ORG0000HCONT:MOVR2,#00HMOVR0,#50HNT:CJNE@R0,#0DH,LPRETLP:INCR0INCR2SJMPNTEND待测字符以ASCII码形式存放在RAM中,回车符的ASCII码为0DH,程序中用一条“CJNE@R0,#0DH,LP”指令实现字符比较及控制循环任务的结束。

10/7/2023广东松山职业技术学院课件制作组4.4.2循环程序设计循环次数未知的循环程序274.4.2循环程序设计2.多循环程序

例4-18试编写10秒延时程序。

延时程序与MCS-51执行指令的时间有关,如果使用6MHz晶振,一个机器周期为2μs,计算出执行一条指令以至一个循环所需要的时间,给出相应的循环次数,便能达到延时的目的。

DEL:MOVR5,#100

DEL0:MOVR6,#200

DEL1:MOVR7,#248NOP

DEL2:DJNZR7,DEL2;248×2+4

DJNZR6,DEL1;(248×2+4)×200+4

DJNZR5,DEL0;[(248×2+4)×200+4]×100+4

RET10/7/2023广东松山职业技术学院课件制作组4.4.2循环程序设计2.多循环程序例4-18试284.4.2循环程序设计上例延时程序实际延时为10.000303秒。它是一个三重循环程序,利用程序嵌套的方法对时间进行延迟是程序设计中常用的方法。使用多重循环程序时,必须注意以下几点:

(1)循环嵌套,必须层次分明,不允许产生内外层循环交叉。

(2)外循环可以一层层向内循环进入,结束时由里往外一层层退出。

(3)内循环体可以直接转入外循环体,实现一个循环由多个条件控制的循环结构方式。10/7/2023广东松山职业技术学院课件制作组4.4.2循环程序设计上例延时程序实际延时为10.000294.5子程序设计在实际程序中,常常会多次进行一些相同的计算和操作。如数制转换、函数式计算等。如果每次都从头开始编制一段程序,不仅麻烦,而且浪费存储空间。因此对一些常用的程序段,以子程序的形式,事先存放在存储器的某一区域,当主程序在运行过程中,需要用子程序时,只要执行调用子程序的指令,使程序转至子程序。子程序处理完毕,返回主程序,继续进行以后的操作。调用子程序有几个优点:

(1)避免对相同程序段的重复编制。

(2)简化程序的逻辑结构,同时也便于程序调试。

(3)节省存储器空间。

MCS-51指令系统中,提供了两条调用子程序指令ACALL、LCALL和一条返回主程序的指令RET。

10/7/2023广东松山职业技术学院课件制作组4.5子程序设计在实际程序中,常常会多次进行一些相同的计304.5.1工作寄存器或累加器传递参数

此方法是把入口参数或出口参数存放在工作寄存器或累加器中。使用这种方法程序最简单,运算速度也最高。它的缺点是工作寄存器数量有限,不能传递太多的数据;主程序必须先把数据送到工作寄存器;参数个数固定,不能由主程序任意改变。例4-20请编出能把20H单元内两个BCD数变换成相应ASCII码并放在21H(高位BCD数的ASCII码)和22H(低位BCD数的ASCII码)单元的程序。根据ASCII表,0~9的BCD数和它们的ASCII码之间仅相差30H。因此,仅需把20H单元中两个BCD数拆开,分别和30H相加就行了。10/7/2023广东松山职业技术学院课件制作组4.5.1工作寄存器或累加器传递参数此方法是把入口参数或314.5.1工作寄存器或累加器传递参数

ORG0000H

ASCH:MOVR0,#22H

MOV@R0,#00H

MOVA,20H

XCHDA,@R0

ORL22H,#30H

SWAPA

ORLA,#30H

MOV21H,A

SJMP$

END

10/7/2023广东松山职业技术学院课件制作组4.5.1工作寄存器或累加器传递参数324.5.2用指针寄存器传递参数

由于数据一般存放在存储器中,而不是工作寄存器中,故可用指针来指示数据的位置,这样可以大大节省传递数据的工作量,并可实现可变长度运算。一般如参数在内部RAM中,可用R0或R1作指针。可变长度运算时,可用一个寄存器来指出数据长度,也可在数据中指出其长度(如使用结束标记符)。例4-21将R0和R1指出的内部RAM中两个3字节无符号整数相加,结果送R0指出的内部RAM中。入口时,R0、R1分别指向加数和被加数的低位字节,出口时R0指向结果的高位字节。利用MCS-51的带进位加法指令,可以直接编写出程序。10/7/2023广东松山职业技术学院课件制作组4.5.2用指针寄存器传递参数由于数据一般存放在存储器中334.5.2用指针寄存器传递参数

ORG0000H

NADD:MOVR7,#3

CLRC

NADD1:MOVA,@R0

ADDCA,@R1

MOV@R0,A

DECR0

DECR1

DJNZR7,NADD1

INCR0

RET

END

10/7/2023广东松山职业技术学院课件制作组4.5.2用指针寄存器传递参数344.5.3用堆栈传递参数

堆栈可以用于传递参数。调用时,主程序可用PUSH指令把参数压入堆栈中。之后子程序可按堆栈指针访问堆栈中的参数,同时可把结果参数送回堆栈中。返回主程序后,可用POP指令得到这些结果参数。这种方法的优点是简单,能传递大量参数,不必为特定的参数分配存储单元。使用这种方法时,由于参数在堆栈中,故大大简化了中断响应时的现场保护。10/7/2023广东松山职业技术学院课件制作组4.5.3用堆栈传递参数堆栈可以用于传递参数。调用时,主354.5.3用堆栈传递参数

例4-22一位十六进制数转换为ASCII码子程序。子程序HASC把堆栈中的一位十六进制数变成ASCII码。它先从堆栈中读出表格中存放的数据,然后用它的低4位去访问一个局部的16项的ASCII码表,把得到的ASCII码放回堆栈中,然后返回。它不改变累加器的值。可以按不同的情况调用这个程序。ORG0000H

HASC:MOVR0,SP

DECR0

DECR0

XCHA,@R0

ANLA,#0FH

ADDA,#2

MOVCA,@A+PC

XCHA,@R0

RET

DB′0123456789′

DB′ABCDEF′

END

10/7/2023广东松山职业技术学院课件制作组4.5.3用堆栈传递参数例4-22一位十六进制数转换364.5.4程序段参数传递以上这些参数传递方法,多数是在调用子程序前,把值装入适当的寄存器传递参数。如果有许多常数参数,这种技术不太有效,因为每个参数需要一个寄存器传递,并且在每次调用子程序时需分别用指令把它们装入寄存器中。

如果需要大量参数,并且这些参数均为常数时,程序段参数传递方法(有时也称为直接参数传递)是传递常数的有效方法。调用时,常数作为程序代码的一部分,紧跟在调用子程序后面。子程序根据栈内的返回地址,决定从何处找到这些常数,然后在需要时,从程序存储器中读出这些参数。10/7/2023广东松山职业技术学院课件制作组4.5.4程序段参数传递以上这些参数传递方法,多数是在调374.5.4程序段参数传递例4-23字符串发送子程序。

在实际应用中,经常需要发送各种字符串。这些字符串,通常放在EPROM(程序存储器)中。按通常方法,需要先把这些字符装入RAM中,然后用传递指针的方法来实现参数传递。为了简便,也可把字符串放在EPROM独立区域中,然后用传递字符串首地址的方法来传递参数。以后子程序可按该地址用MOVC指令从EPROM中读出并发送该字符串。但是最简单的方法是采用程序段参数传递方法。下例中,字符串以全0结束。

10/7/2023广东松山职业技术学院课件制作组4.5.4程序段参数传递例4-23字符串发送子程序。384.5.4程序段参数传递ORG0000H

SOUT:POPDPH;栈中指针

POPDPL

SOT1:CLRA

MOVCA,@A+DPTR

INCDPTR

JZSEND

JNBTI,$;$为本条指令地址

CLRTI

MOVSBUF,A

SJMPSOT1

SEND:JMP@A+DPTR

END

10/7/2023广东松山职业技术学院课件制作组4.5.4程序段参数传递O394.5.4程序段参数传递下面以发送字符串′MCS-51CONTROLLER′为例,说明该子程序使用方法。

ACALLSOUT

DB′MCS—51CONTROLLER′

DB0AH,0DH,0┆

后面紧接其他程序。

上面这种子程序有几个特点:

(1)它不以一般的返回指令结尾,而是采用基址寄存器加变址寄存器间接转移指令来返回到参数表后的第一条指令。一开始的POP指令已调整了栈指针的内容。10/7/2023广东松山职业技术学院课件制作组4.5.4程序段参数传递下面以发送字符串′MCS-51404.5.4程序段参数传递(2)它可适用于ACALL或LCALL,因为这两种调用指令均把下一条指令或数据字节的地址压入栈中。调用程序可位于MCS-51全部地址空间的任何地方,因为MOVC指令能访问所有64K字节。(3)传递到子程序的参数可按最方便的次序列表,而不必按使用的次序排列。子程序在每一条MOVC指令前累加器装入适当的参数,这样基本上可“随机访问”参数表。(4)子程序只使用累加器A和数据指针DPTR,应用程序可以在调用前,把这些寄存器压入堆栈中,保护它们的内容。

10/7/2023广东松山职业技术学院课件制作组4.5.4程序段参数传递(2)它可适用于ACALL或LC414.6.1算术运算程序的设计一般说来,单片机应用系统的任务就是对各种物理参数进行测试和控制。因此,数据的处理是避免不了的。尽管数据处理并不是MCS-51单片机的优势所在,但运用一些编程技巧和方法,对于大部分测控应用MCS-51单片机还是能胜任的。

MCS-51的指令系统提供的是字节运算指令,所以在处理多字节数的加减运算时,要合理地运用进位(借位)标志。例4-24多字节无符号数的加法。

设两个N字节的无符号数分别存放在内部RAM中以DATA1和DATA2开始的单元中。相加后的结果要求存放在DATA2数据区。10/7/2023广东松山职业技术学院课件制作组4.6.1算术运算程序的设计一般说来,单片机应用系统的任424.6.1算术运算程序的设计程序段如下:

ORG2000H

MOVR0,#DATA1

MOVR1,#DATA2

MOVR7,#N;置字节数

CLRC

LOOP:MOVA,@R0

ADDCA,@R1;求和

MOV@R1,A;存结果

INCR0;修改指针

INCR1

DJNZR7,LOOP

END10/7/2023广东松山职业技术学院课件制作组4.6.1算术运算程序的设计程序段如下:

434.6.2数码转制程序设计计算机中常用的是二进制码、BCD码和ASCII码。但是,计算机能识别和处理的只有二进制码,而输入输出设备(如显示器、打印机等)常使用BCD码和ASCII码。因此,在计算机中经常需要通过软件进行相互间的转换。1.十六进制数与ASCII码之间的转换

二进制数与十六进制数有着直接的对应关系。所以,介绍十六进制数与ASCII码的转换。10/7/2023广东松山职业技术学院课件制作组4.6.2数码转制程序设计计算机中常用的是二进制码、BC444.6.2数码转制程序设计例4-29将一位十六进制数转换为ACSII码。

设十六进制数存放于R0中,转换后的ASCII码存放于R2中。

程序如下:

HTASC:MOVA,R0;取出4位二进制数

ANLA,#0FH;屏蔽高位

PUSHA;入栈保护

CLRC

SUBBA,#0AH;4位二进制数减10

POPA;弹出原4位二进制数

JCLOOP;该数小于10,加30H

ADDA,#37H;大于等于10,加37H

SJMPLOOP1

LOOP:ADDA,#30H

LOOP1:MOVR2,A

RET

10/7/2023广东松山职业技术学院课件制作组4.6.2数码转制程序设计例4-29将一位十六进制数45本课小结汇编语言的源程序结构紧凑

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论