章4   80C51的汇编语言程序设计

1.80C51单片机汇编语言有何特点?

答:

汇编语言结构紧凑、灵活,汇编成的目标程序效率高,具有占存储空间少、运行速度快、实时性强等优点。它是面向机器的语言,对于单片机硬件的操作直接、方便,有利于初学者对单片机结构的认知。

但它与高级语言相比移植性不好、编程复杂、对编程人员的基础要求高。

2.利用80C51单片机汇编语言进行程序设计的步骤如何?

答:

一、任务分析

首先,要对单片机应用系统的设计目标进行深入分析,明确系统设计任务:功能要求和技术指标。然后对系统的运行环境进行调研。这是应用系统程序设计的基础和条件。

二、算法设计

经过任务分析和环境调研后,已经明确的功能要求和技术指标可以用数学方法(或模型)来描述,进而把一个实际的系统要求转化成由计算机进行处理的算法。并对各种算法进行分析比较,并进行合理的优化。

三、流程描述

程序的总体构建。先要确定程序结构和数据形式,资源分配和参数计算等。然后根据程序运行的过程,规划程序执行的逻辑顺序,用图形符号将程序流程绘制在平面图上。应用程序的功能通常可以分为若干部分,用流程图将具有一定功能的各部分有机地联系起来。

流程图可以分为总流程图和局部流程图。总流程图侧重反映程序的逻辑结构和各程序模块之间的相互关系;局部流程图反映程序模块的具体实施细节。

3.常用的程序结构有哪几种?特点如何?

答:

顺序程序:无分支、无循环结构的程序,其执行流程是依指令在存储器中的存放顺序进行的;

分支程序:可以改变程序的执行顺序;

循环程序:按某种控制规律重复执行的程序,控制一部分指令重复执行若干次,以便用简短的程序完成大量的处理任务。

4.子程序调用时,参数的传递方法有哪几种?

答:

利用累加器或寄存器;

利用存储器;

利用堆栈。

5.什么是伪指令?常用的伪指令功能如何?

答:

伪指令是汇编程序能够识别并对汇编过程进行某种控制的汇编命令。常用的伪指令包括:

ORG,功能是向汇编程序说明下面紧接的程序段或数据段存放的起始地址;

END,功能是结束汇编;

DB,功能是从标号指定的地址单元开始,在程序存储器中定义字节数据;

DW,功能是从标号指定的地址单元开始,在程序存储器中定义字数据空间;

EQU,功能是将表达式的值或特定的某个汇编符号定义为一个指定的符号名;

BIT,功能是将位地址赋给指定的符号名。

6.设被加数存放在内部RAM的20H、21H单元,加数存放在22H、23H单元,若要求和存放在24H、25H中,试编写出16位无符号数相加的程序(采用大端模式存储)。

答:程序如下:

ORG   0000H

MOV   R0,#21H

MOV   R1,#23H

MOV   A,@R0

ADD   A,@R1

MOV   25H,A

DEC    R0

DEC    R1

MOV   A,@R0

ADDC  A,@R1

MOV   24H,A

SJMP   $

END

7.编写程序,把外部RAM中1000H~101FH的内容传送到内部RAM的30H~4FH中。

答:

ORG  0000H

MOV

DPTR,#1000H

MOV

R0,#30H

MOV

R7,#32

LOOP:MOVX  A,@DPTR

MOV

@R0,A

INC

R0

INC

DPTR

DJNZ

R7,LOOP

RET

8.编写程序,实现双字节无符号数加法运算,要求(R0R1)+(R6R7)→(60H61H)。

答:

ORG  0000H

MOV   A,R1

ADD   A,R7

MOV   61H,A

MOV   A,R0

ADDC  A,R6

MOV   60H,A

SJMP

$

END

9.若80C51的晶振频率为6MHz,试计算延时子程序的延时时间。

DELAY:MOV   R7,#0F6H

LP:MOV   R6,#0FAH

DJNZ  R6,$

DJNZ  R7,LP

RET

答:延时时间:2μs*{[1+((1+2*250+2)*246)+2]+2}=0.247486秒(含调用指令2个机器周期)

10.在内部RAM的30H~37H单元存有一组单字节无符号数。要求找出最大数存入BIG单元。试编写程序实现。

答:

ORG

0000H

BIG  DATA

2FH

ONE  DATA

2AH

TWO  DATA

2BH

START:MOV   R7,#7     ;比较次数

MOV

R0,#30H

LOOP:MOV   A,@R0

MOV

ONE,A

INC

R0

MOV

TWO,@R0

CLR

C

SUBB

A,@R0

JC

NEXT        ;ONE小,TWO大继续比下一对数

MOV

@R0,ONE     ;ONE大放后面(交换)

DEC

R0

MOV

@R0,TWO     ;TWO小放前面

INC

R0          ;

NEXT:DJNZ

R7,LOOP

MOV

BIG,37H

SJMP

$

END

11.编写程序,把累加器A中的二进制数变换成3位BCD码,并将百、十、个位数分别存放在内部RAM的50H、51H、52H中。

答:单字节二进制数转换为压缩的BCD码仅需要2个字节;在将压缩的BCD码拆分存于3个单元。

org

0

MOV

52H,#0

MOV

51H,#0

MOV

50H,#0

MOV

A,#0FDh

LCALL

DCDTH

SJMP

$

DCDTH:MOV

R7,#8

MOV

R0,A   ;暂存于R0

LOOP:CLR   C

MOV

A,R0

RLC

A

MOV

R0,A

MOV

R1,#51H;

MOV

A,@R1  ;

ADDC

A,@R1  ;

DA

A      ;

MOV

@R1,A  ;

DEC

R1

MOV

A,@R1

ADDC

A,@R1

DA

A

MOV

@R1,A

DJNZ

R7,LOOP

INC

R1      ;50H已是结果,R1指向51H,51H单元需拆分

MOV

A,#00H

XCHD

A,@R1

MOV

52H,A

MOV

A,@R1

SWAP  A

MOV   @R1,A

RET

END

12.编写子程序,将R1中的2个十六进制数转换为ASCII码后存放在R3和R4中。

答:

ORG     0

MOV     R1,#5BH

MOV     A,R1

ANL

A,#0F0H

SWAP

A

ACALL

ASCII

MOV

R3,A

MOV

A,R1

ANL

A, #0FH

ACALL

ASCII

MOV

R4, A

SJMP

$

ASCII:PUSH    ACC

CLR

C

SUBB

A, #0AH

POP

ACC

JC

LOOP

ADD

A, #07H

LOOP: ADD     A, #30H

RET

END

13.编写程序,求内部RAM中50H~59H十个单元内容的平均值,并存放在5AH单元。

答:

ORG

0000H

MOV

R7,#10

MOV

R0,#50H

MOV

B,#10

CLR

C

CLR

A

LOOP:ADDC  A,@R0

INC

R0

DJNZ

R7,LOOP

DIV

AB

MOV

5AH,A

SJMP

$

END

14.如图4.10所示,编制程序实现:上电后显示“P”,有键按下时显示相应的键号“0”~“7”。

答:

实现程序如下:

TEMP  EQU

30H

ORG   0000H

JMP   START

ORG

0100H

START:MOV   SP,#5FH

MOV

P0,#8CH          ;正序显示"P"

MOV   P3,#0FFH         ;输入方式

CLR   CY

NOKEY:MOV   A,P3

CPL

A

JZ    NOKEY            ;无键按下

MOV   TEMP,P3          ;有键按下

CALL  D10ms

MOV   A,P3

CJNE  A,TEMP,NOKEY       ;去抖动

MOV

R2,#0            ;键号计数器复位

MOV

A,TEMP

LP:RRC

A

JNC

DONE

INC   R2

SJMP  LP

DONE:MOV

A,R2

MOV   DPTR,#CODE_P0

MOVC  A,@A+DPTR

MOV

P0,A

JMP   NOKEY

D10ms:MOV   R5,#10    ;10MS

D1ms:MOV   R4,#249

DL:NOP

NOP

DJNZ  R4,DL

DJNZ  R5,D1ms

RET

CODE_P0:

DB

0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H

DB

80H,90H,88H,83H,0C6H,0A1H,86H,8EH

END

80c51汇编语言程序设计,章4 80C51的汇编语言程序设计相关推荐

  1. 用汇编语言程序设计实现c=a b,汇编语言程序设计1.pdf

    第三章 汇编语言程序设计第三章 汇编语言程序设计 概述概述 汇编语言程序的格式汇编语言程序的格式 伪操作命令伪操作命令 DOS 和和BIOS调用调用 汇编语言程序设计举例汇编语言程序设计举例 汇编程序 ...

  2. 计算机组成原理汇编语言设计实验,《计算机组成原理汇编语言程序设计》实验指导书.doc...

    <计算机组成原理汇编语言程序设计>实验指导书,汇编语言实验指导书,微机原理与汇编语言,微机原理及汇编语言,汇编转c语言原理,汇编语言原理,汇编语言和编译原理,汇编语言编译原理,计算机原理与 ...

  3. 16位汇编语言学习笔记(2)—— 汇编程序设计

    文章目录 4. 顺序程序设计 4.1 十进制的算数运算 4.2 输入输出功能调用 4.3 综合案例 5. 分支程序设计 5.1 转移指令 5.1.1 条件转移指令 单标志条件转移指令 无符号数专用条件 ...

  4. 汇编语言与计算机系统组成课后答案,汇编语言与计算机系统组成

    前言 第1篇 计算机系统组成基础 第1章 计算机系统概论 1.1 计算机的基本概念 1.1.1 存储程序的工作方式 1.1.2 信息的数字化表示 1.1.3 计算机体系结构.组成与实现 1.2 计算机 ...

  5. c语言程序设计第二版(张磊),C语言程序设计教程(第2版) 教学课件 张磊 第1章 程序设计概述.pdf...

    C语言程序设计 第1章 程序设计概述 C语言程序设计教程 第2版 中国铁道出版社 张磊 编著 C语言程序设计(第2版)张磊编著中国铁道出版社 第1章 程序设计概述 1.1 程序设计语言 1.2 算 ...

  6. 第三章 系统指令与汇编程序设计 3.1 单片机指令系统

    第三章 系统指令与汇编程序设计 3.1 单片机指令系统 3.1.1 寻址空间及常用符号 3.1.2 寻址方式 3.1.3 数据传送与交换指令 3.1.4 算术运算指令 3.1.5 逻辑操作指令 3.1 ...

  7. 第14章传智书城前台程序设计

    第14章传智书城前台程序设计 一.填空题 1.在传智书城注册页面中,可以采用[ 单击图片 ]方式切换验证码图片. 2.[ 用户注册 ]是用户参与网站活动最直接的桥梁. 3.图书根据其[ 题材 ]和[ ...

  8. QT编程从入门到精通之三十四:“第五章:Qt GUI应用程序设计”之“5.5 Qt Creator使用技巧”

    目录 第五章:Qt GUI应用程序设计 5.5 Qt Creator使用技巧 第五章:Qt GUI应用程序设计 在"Qt 程序创建基础"上,本章将继续深入地介绍Qt Creator ...

  9. python程序设计第七章答案_MOOC课程答案第七章单元测试答案_Python语言程序设计答案免费微信公众号...

    MOOC课程答案第七章单元测试答案_Python语言程序设计答案免费微信公众号 更多相关问题 [问答题,简答题] 什么叫仰视图? [问答题,简答题] 常见事故一般分为? [问答题,简答题] 进行气藏. ...

最新文章

  1. aspx页面与ascx控件脚本冲突的问题
  2. java shape类_Java——Shape类
  3. Python3 写JSON数据到文件(多行格式化版)
  4. 日常((⊙_⊙)…)
  5. 输入关键字生成对联_教你一秒变大师,亲手提笔写对联
  6. 美国CISA 列出300个已遭利用漏洞,督促组织机构及时修复
  7. openlayers5学习笔记-001
  8. 微信公众号完美解决关注后三次获取media_id重复3次的问题
  9. 如何在Mac电脑上的聚焦搜索中隐藏内容?
  10. 阶段3 1.Mybatis_09.Mybatis的多表操作_2 完成account表的建立及实现单表查询
  11. aid learning安装应用_Aid Learningapp下载
  12. MySQL(9)-----多表创建及描述表关系(需求)
  13. Xftp6-连接Linux传输文件---干货!!!(无私奉献无需积分)
  14. 搜索引擎算法研究(一)
  15. 2019icpc南京网络赛 Holy Grail(SPFA)
  16. 小牛电动Q2财报:国外不乐观,国内狂下沉
  17. Oracle创建同义词
  18. 利用LVS(Linux Virtual Server)系统实现Web服务器集群的负载均衡
  19. 华为手机热点无法连接_别傻了!不能只会给别人开热点,要尝试华为手机的WiFi分享功能...
  20. APP软件中的DID作用

热门文章

  1. 重阳节绘画软件测试,幼儿园重阳节绘画.docx
  2. css类似于打马赛克
  3. 小程序使用阿里字体图标
  4. GNSS地表水平位移监测站
  5. 【立创开源】N32G430C8L7最小系统板
  6. 【不做手机控】如何屏蔽微信朋友圈?
  7. php 转化为英文月份,php怎么实现月份数字转英文
  8. 基于Python完成的配音软件之适用于有声主播
  9. linux crs,linux上oracle rac集群 crs常用命令
  10. 2023cfa一级冲刺笔记