微机课设--汇编语言在51单片机上写一个四位十进制加法器

代码如下

  

KEYVAL EQU 30H

KEYTM EQU 31H

KEYSCAN EQU 32H

DAT  EQU 33H

SCANLED EQU 37H

S_DAT EQU 38H

D_DAT EQU 39H

R_DATL EQU 3AH

R_DATH EQU 3BH
CALFLAG EQU 3CH

FLAG BIT 00H

ORG 0000H

LJMP MAIN

ORG 000BH

LJMP T0ISR

ORG 0030H

MAIN:

  MOV SP,#5FH

  MOV TMOD,#01H

  MOV TH0,#0D8H

  MOV TL0,#0F0H

  MOV KEYVAL,#0

  MOV P2,#00H

  MOV SCANLED,#0

  MOV 33H,#0H

  MOV 34H,#0H

  MOV 35H,#0H

  MOV 36H,#0H

  MOV S_DAT,#0

  MOV D_DAT,#0

  CLR FLAG

  SETB EA

  SETB ET0

  SETB TR0

LOOP:

  LCALL KEYSEL

  MOV A,KEYVAL

  CJNE A,#0FFH,LOOP1

  SJMP LOOP

LOOP1:

  CJNE A,#11,LOOP2 ;“=”

  MOV A,33H

  MOV B,#10

  MUL AB

  ADD A,34H

  MOV D_DAT,A

  LCALL DEALDAT

  LCALL HB2

  MOV A,R5

  ANL A,#0FH

  MOV 34H,A

  MOV A,R5

  SWAP A

  ANL A,#0FH

  MOV 33H,A

  MOV A,R4

  ANL A,#0FH

  MOV 36H,A

  MOV A,R4

  SWAP A

  ANL A,#0FH

  MOV 35H,A

  SJMP LOOP

LOOP2:

  CJNE A,#15,LOOP3 ;“+”

  LCALL GETDAT

  SJMP LOOP

LOOP3:

  CJNE A,#14,LOOP4 ;“-”

  MOV CALFLAG,#1

  LCALL GETDAT

  SJMP LOOP

LOOP4:

  CJNE A,#13,LOOP5 ;“*”

  MOV CALFLAG,#2

  LCALL GETDAT

  SJMP LOOP

LOOP5:

  CJNE A,#12,LOOP6 ;"/"

  MOV CALFLAG,#3

  LCALL GETDAT

  SJMP LOOP

LOOP6:

  CJNE A,#10,LOOP7  ;数字键

LOOP7:

  JC LOOP8

  LJMP LOOP

LOOP8:

  MOV 33H,34H

  MOV 34H,KEYVAL

  LJMP LOOP

;------------------

HB2:

  MOV R6,R_DATH

  MOV R7,R_DATL

  CLR  A   ;BCD码初始化

  MOV  R3,A

  MOV  R4,A

  MOV  R5,A

  MOV  R2,#10H   ;转换双字节十六进制整数

HB3:

  MOV  A,R7   ;从高端移出待转换数的一位到 CY 中

  RLC  A

  MOV  R7,A

  MOV  A,R6

  RLC  A

  MOV  R6,A

  MOV  A,R5   ;BCD码带进位自身相加,相当于乘2

  ADDC  A,R5

  DA  A   ;十进制调整

  MOV  R5,A

  MOV  A,R4

  ADDC  A,R4

  DA  A

  MOV  R4,A

  MOV  A,R3

  ADDC  A,R3

  MOV  R3,A   ;双字节十六进制数的万位数不超过6,不用调整

  DJNZ  R2,HB3   ;处理完16bit

  RET

;------------------

GETDAT:

  MOV A,33H

  MOV B,#10

  MUL AB

  ADD A,34H

  MOV S_DAT,A

  MOV 33H,#0

  MOV 34H,#0

  MOV 35H,#0

  MOV 36H,#0

  RET

;------------------

DEALDAT:

  MOV A,CALFLAG

  JNZ DEAL01

DEAL00:    ;+

  MOV A,S_DAT

  ADD A,D_DAT

  MOV R_DATL,A

  CLR A

  ADDC A,#0

  MOV R_DATH,A

  RET

DEAL01:    ;=

  DEC A

  JNZ DEAL02

  CLR C

  MOV A,S_DAT

  SUBB A,D_DAT

  MOV R_DATL,A

  SUBB A,#0

  MOV R_DATH,A

  RET

DEAL02:    ;*

  DEC A

  JNZ DEAL03

  MOV A,S_DAT

  MOV B,D_DAT

  MUL AB

  MOV R_DATL,A

  MOV R_DATH,B

  RET

DEAL03:    ;/

  MOV A,S_DAT

  MOV B,D_DAT

  DIV AB

  MOV R_DATL,A

  MOV R_DATH,#0

  RET

;------------------

KEYSEL: 

  MOV KEYVAL,#0

  MOV KEYSCAN,#0EFH

  LCALL GETKEY

  MOV A,KEYTM

  JZ KEYS1

  MOV KEYVAL,A

  SJMP KEYRTN

KEYS1: 

  MOV KEYSCAN,#0DFH

  LCALL GETKEY

  MOV A,KEYTM

  JZ KEYS2

  CLR C

  ADD A,#4

  MOV KEYVAL,A

  SJMP KEYRTN

KEYS2: 

  MOV KEYSCAN,#0BFH

  LCALL GETKEY

  MOV A,KEYTM

  JZ KEYS3

  CLR C

  ADD A,#8

  MOV KEYVAL,A

  SJMP KEYRTN

KEYS3: 

  MOV KEYSCAN,#7FH

  LCALL GETKEY

  MOV A,KEYTM

  JZ KEYRTN

  CLR C

  ADD A,#12

  MOV KEYVAL,A

KEYRTN: 

  LCALL CHGKEY

  RET

;--------------------

GETKEY: 

  MOV KEYTM,#0

  MOV A,KEYSCAN

  MOV P3,A

  NOP

  MOV A,P3

  ANL A,#0FH

  XRL A,#0FH

  JZ NOKEY

  MOV R2,#10

  LCALL DELAY

  MOV A,P3

  ANL A,#0FH

  XRL A,#0FH

  JZ NOKEY

  MOV A,P3

  ANL A,#0FH

  MOV R7,A

SF:

  MOV A,P3

  ANL A,#0FH

  XRL A,#0FH

  JNZ SF

  MOV A,R7

  CJNE A,#0EH,NK1

  MOV KEYTM,#1

  SJMP NOKEY

NK1:

  CJNE A,#0DH,NK2

  MOV KEYTM,#2

  SJMP NOKEY

NK2:

  CJNE A,#0BH,NK3

  MOV KEYTM,#3

  SJMP NOKEY

NK3:

  CJNE A,#07H,NOKEY

  MOV KEYTM,#4

NOKEY: RET

;--------------------

DELAY:

  MOV R3,#50

DELAY1:

  MOV R4,#100

  DJNZ R4,$

  DJNZ R3,DELAY1

  DJNZ R2,DELAY

  RET

;--------------------

T0ISR:

  PUSH ACC

  CLR TR0

  MOV TH0,#0D8H

  MOV TL0,#0F0H

  SETB TR0

  MOV DPTR,#LEDTAB

T000:      ;数字显示

  MOV R0,#DAT

  MOV A,SCANLED

  ADD A,R0

  MOV R0,A

  MOV A,SCANLED

  JNZ T001

  MOV P2,#01H

  SJMP T0DIS

T001:

  DEC A

  JNZ T002

  MOV P2,#02H

  SJMP T0DIS

T002:

  DEC A

  JNZ T003

  MOV P2,#04H

  SJMP T0DIS

T003:

  MOV P2,#08H

T0DIS:

  MOV A,@R0

  MOVC A,@A+DPTR

;  CPL A

  MOV P0,A

  INC SCANLED

  MOV A,SCANLED

  ANL A,#03H

  MOV SCANLED,A

  POP ACC

  RETI

;--------------------

CHGKEY:

  MOV A,KEYVAL

  JZ KV16

  DEC A

  JNZ KV01

  MOV KEYVAL,#7

  RET

KV01:

  DEC A

  JNZ KV02

  MOV KEYVAL,#4

  RET

KV02:

  DEC A

  JNZ KV03

  MOV KEYVAL,#1

  RET

KV03:

  DEC A

  JNZ KV04

  MOV KEYVAL,#10

  RET

KV04:

  DEC A

  JNZ KV05

  MOV KEYVAL,#8

  RET

KV05:

  DEC A

  JNZ KV06

  MOV KEYVAL,#5

  RET

KV06:

  DEC A

  JNZ KV07

  MOV KEYVAL,#2

  RET

KV07:

  DEC A

  JNZ KV08

  MOV KEYVAL,#0

  RET

KV08:

  DEC A

  JNZ KV09

  MOV KEYVAL,#9

  RET

KV09:

  DEC A

  JNZ KV10

  MOV KEYVAL,#6

  RET

KV10:

  DEC A

  JNZ KV11

  MOV KEYVAL,#3

  RET

KV11:

  DEC A

  JNZ KV12

  MOV KEYVAL,#11 ;=

  RET

KV12:

  DEC A

  JNZ KV13

  MOV KEYVAL,#12 ;/

  RET

KV13:

  DEC A

  JNZ KV14

  MOV KEYVAL,#13 ;*

  RET

KV14:

  DEC A

  JNZ KV15

  MOV KEYVAL,#14 ;-

  RET

KV15:

  DEC A

  JNZ KV16

  MOV KEYVAL,#15 ;+

  RET

KV16:

  MOV KEYVAL,#0FFH

  RET

;--------------------

LEDTAB:

  DB 0C0H ;"0" 00H

  DB 0F9H ;"1" 01H

  DB 0A4H ;"2" 02H

  DB 0B0H ;"3" 03H

  DB 99H ;"4" 04H

  DB 92H ;"5" 05H

  DB 82H ;"6" 06H

  DB 0F8H ;"7" 07H

  DB 80H ;"8" 08H

  DB 90H ;"9" 09H

  DB 88H ;"A" 0AH

  DB 83H ;"B" 0BH

  DB 0C6H ;"C" 0CH

  DB 0A1H ;"D" 0DH

  DB 86H ;"E" 0EH

  DB 8EH ;"F" 0FH

  DB 0FFH ;" " 10H

;--------------------

END

proteus仿真测试

ps:

我对汇编也是只只了解一点点,这里的代码和仿真都是看贴吧大佬的,我只是做一下整合

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/189356.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

过渡曲线的构造之平面PH曲线

平面PH曲线的构造及其相应性质 平面PH曲线的构造及其相应性质PH曲线理论三次PH曲线的构造及性质四次PH曲线的构造及性质五次PH曲线的构造及性质非尖点五次PH曲线尖点五次PH曲线 参考文献 平面PH曲线的构造及其相应性质 过渡曲线常需要满足在连接点处位置连续、曲率连续以及切线…

如何看待 2023 OPPO 开发者大会?潘塔纳尔进展如何?AndesGPT 有哪些亮点?

在2023年11月16日举行的OPPO开发者大会(ODC23)上,OPPO带来了全新ColorOS 14、全新互联网服务生态以及健康服务进展,这些新动态中有许多值得关注的地方。 1、全新ColorOS 14: 效率提升:ColorOS 14通过一系列…

java基于springboot公益帮学网站 新闻发布系统的设计与实现vue

以Java为开发平台,综合利用Java Web开发技术、数据库技术等,开发出公益帮学网站。用户使用版块:可以选择注册并登录,可以浏览信息、可以网上互动、发布文章、内容推荐等。后台管理员管理版块:以管理员身份登录网站后台…

常见的数据库面试题含答案

1、什么是数据库? 数据库是一个组织和存储数据的集合,它采用特定的数据结构和管理模式,以提供对数据的高效访问和管理。 2、请解释 SQL 是什么? SQL(Structured Query Language)是一种用于管理和操作关系…

机器学习---贝叶斯网络与朴素贝叶斯

1. 贝叶斯法则 如何判定一个人是好人还是坏人? 当你无法准确的熟悉一个事物的本质时,你可以依靠与事物特定本质相关的事件出现的次数来判断 其本质属性的概率。如果你看到一个人总是做一些好事,那这个人就越可能是一个好人。 数学语言表达…

JVM字节码文件的相关概述解读

Java全能学习面试指南:https://javaxiaobear.cn 1、字节码文件 从下面这个图就可以看出,字节码文件是可以跨平台使用的 想要让一个Java程序正确地运行在JVM中,Java源码就必须要被编译为符合JVM规范的字节码。 https://docs.oracle.com/java…

【一文讲清楚 Anaconda 相关环境配置】

文章目录 0 前言1 Package 与环境1.1 module1.2 package1.3 环境 2 Conda、Miniconda、Anaconda和Pip & PyPI2.1 Conda2. 2 Miniconda2.3 Anaconda2.3.1 Anaconda Navigator2.3.2 Anaconda PowerShell Prompt & Anaconda Prompt2.3.3 Jupyter notebook 2.4 Pip & P…

【数据结构】什么是栈?

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 📌栈的定义 📌元素进栈出栈的顺序 📌栈的抽象数据类型 📌栈的顺序存储结构 📌栈的链式存储结构 链栈的进…

MySql之索引,视图,事务以及存储过程举例详解

一.数据准备 数据准备可参考下面的链接中的数据准备步骤 MySql之内连接,外连接,左连接,右连接以及子查询举例详解-CSDN博客 (如有问题可在评论区留言) 二.存储过程 1.定义 存储过程 PROCEDURE ,也翻译…

【代码】基于量子粒子群算法(QPSO)优化LSTM的风电、负荷等时间序列预测算法matlab

程序名称:基于量子粒子群算法(QPSO)优化LSTM的风电、负荷等时间序列预测算法 实现平台:matlab 代码简介:代码是基于QPSO-LSTM的负荷、光伏、风电等时间序列预测,MATLAB编写。包含LSTM(长短时记…

大数据技术之数据安全与网络安全——CMS靶场(文章管理系统)实训

大数据技术之数据安全与网络安全——CMS靶场(文章管理系统)实训 在当今数字化时代,大数据技术的迅猛发展带来了前所未有的数据增长,同时也催生了对数据安全和网络安全的更为迫切的需求。本篇博客将聚焦于大数据技术背景下的数据安全与网络安全&#xff…

面对困境时的力量——《难不难》与歌手荆涛的坚持

歌手荆涛演唱的《难不难》不仅是一首歌曲,更是一种精神的呈现。它告诉我们,面对问题时,只要我们坚持并勇往直前,一切困难都会变得简单。无论前方有多少险阻,总有过去的那一天,只要我们不放弃,就…

【计算机网络学习之路】日志和守护进程

文章目录 前言一. 日志介绍二. 简单日志1. 左字符串2. 右字符串 三. 守护进程1. ps -axj命令2. 会话扩展命令 3. 创建守护进程 结束语 前言 本系列文章是计算机网络学习的笔记,欢迎大佬们阅读,纠错,分享相关知识。希望可以与你共同进步。 本…

JDK、JRE、JVM的特点和关联

Java 的三个重要的概念是 JDK(Java Development Kit)、JRE(Java Runtime Environment)和 JVM(Java Virtual Machine)。它们之间有着密切的关联,同时又有不同的职责和特点。 JDK(Java…

中伟视界:创新解决方案,搭建自适应的AI算法模型训练平台

搭建AI算法模型自训练平台是当今人工智能领域的热门话题,但是其中存在着许多技术难点需要克服。 自训练平台需要具备高效的算法模型,这就要求能够处理庞大的数据量并进行高速计算。 平台需要具备强大的数据管理及存储能力,以满足训练过程中的…

C#,《小白学程序》第二十六课:大数乘法(BigInteger Multiply)的Toom-Cook 3算法及源程序

凑数的&#xff0c;仅供参考。 1 文本格式 /// <summary> /// 《小白学程序》第二十六课&#xff1a;大数&#xff08;BigInteger&#xff09;的Toom-Cook 3乘法 /// Toom-Cook 3-Way Multiplication /// </summary> /// <param name"a"></par…

C语言进阶之笔试题详解(1)

引言&#xff1a; 对指针知识进行简单的回顾&#xff0c;然后再完成笔试题。 ✨ 猪巴戒&#xff1a;个人主页✨ 所属专栏&#xff1a;《C语言进阶》 &#x1f388;跟着猪巴戒&#xff0c;一起学习C语言&#x1f388; 目录 引言&#xff1a; 知识简单回顾 指针是什么 指针变…

基于51单片机的公交自动报站系统

**单片机设计介绍&#xff0c; 基于51单片机的公交自动报站系统 文章目录 一 概要公交自动报站系统概述工作原理应用与优势 二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 很高兴为您介绍基于51单片机的公交自动报站系统&#xff1a; 公交自动报…

[网鼎杯 2020 朱雀组]Nmap

启动环境 结合题目首先就是要知道关于关于nmap命令 相关的命令-oN 标准保存 -oX XML保存 -oG Grep保存 -oA 保存到所有格式 -iL 读取文件内容&#xff0c;以文件内容作为搜索目标 -o 输出到文件 -sP Ping 扫描 还有许多 nmap命令https://blog.csdn.net/weixin_735627…

【知网稳定检索】第九届社会科学与经济发展国际学术会议 (ICSSED 2024)

第九届社会科学与经济发展国际学术会议 (ICSSED 2024) 2024 9th International Conference on Social Sciences and Economic Development 第九届社会科学与经济发展国际学术会议(ICSSED 2024)定于2024年3月22-24日在中国北京隆重举行。会议主要围绕社会科学与经济发展等研究…