通过实验理解汇编

el/2024/7/13 10:15:55

实验课题

汇编程序实验

掌握汇编程序调试。

分析程序功能。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ORG 0000H //一条汇编伪指令,程序从这里开始。

AJMP MAIN//程序跳转到主程序

ORG 0030H//从这里开始直到下一个ORG指令前的程序语句都顺序放在它指定的地址里

MAIN://主程序入口

    MOV SP,#60H//设置堆栈的长度为60H byte

    MOV A,#0H//将0H立即数送入累加器A

    MOV R1,#30H//将30H立即数送入寄存器R1

    MOV R7,#30H //将30H立即数送入寄存器R7

LOOP1: //循环控制指令

    MOV @R1,A //将A里的内容传给寄存器R1 作为R1的地址

    INC R1   //将R1内容自加1

    DJNZ R7,LOOP1 //R7减1不为0时转到LOOP1标号处继续循环

    NOP  //空操作指令,占用一个机器周期

    MOV R1,#30H //将30H立即数传给R1寄存器

    MOV R7,#10H //将10H立即数传给R7寄存器

LOOP: //循环控制指令

    MOV @R1,A //将累加器A里的内容传给R1作为R1的地址

    INC R1 //将R1的内容自加1

    INC A  //将A的内容自加1

    DJNZ R7,LOOP //R7减1不为0时转到LOOP处继续循环

    SJMP $ //自循环,等待中断程序

END  //结束

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

通过对原程序进行调试,可以看到,通过MOV指令,将r1和R7进行赋值操作,在第1个循环loop1中寄存器r1和r7在不断的变化,其中寄存器r1多次自加1,r7多次自减1, 当寄存器R7自减1逐渐减到零时结束循环,当跳转到第2个loop循环中,累加器a进行自加1,同时可以看到d:30H地址段中的数据在不断变化,最终运行到SJMP $,这时不断的进行,自循环等待中断程序,如果中断程序运行完了,然后返回来继续运行,等待另一个中断程序。

源程序通过两个循环,将累加器和寄存器中的值进行互相传递,同时在d30H的地址段中进行显示加1的过程,通过这次实验调试汇编程序,观察运行的情况,对汇编指令有了更深刻的理解,对程序的执行次序顺序,有了清晰的认识。

 

 

 

 


http://www.ngui.cc/el/2274291.html

相关文章

Proteus7.8完美不闪退,亲身试用

简介 Proteus是一款由英国公司出品的EDA工具软件,可以说是目前市场上仿真单片机及外围器件功能比较好的一款软件了。便于操作且功能强大的EDA工具Proteus可支持用于各种电子电器、电子元件的设计与开发,Proteus几乎可以支持多达800中的微控制器型号&…

超好用的PDF转换软件

简介 该程序允许用户将PDF转换为Word、PowerPoint、Exce、Html、图像、Text等格式,并具有强有力的PDF创建、PDF编辑、PDF扫描与存档功能。 扫描功能将允许你通过该软件直接将纸质文件转变为PDF文档。 另外, 软件使用非常简单,具有功能强大所见即所得(WYSIWYG )用户界面…

无线网络技术有哪些-智能家居,物联网

说起无线控制方式,与无线技术的发展是息息相关的。 随着科技的高速发展无线技术也有着日新月异的进步。 基本上一种新的无线技术出现,智能无线产品中都会立即跟进。 特点 应用灵活、无需布线、扩展性好、移动便利等。 通用的无线技术主要包括 红外…

数据库练习sql超详细(期末不挂科系列)

一、设计题:按以下要求用代码完成数据库及表的创建。本大题共3个小题,共40分。 1.创建一个数据库,数据库的名称以学生自己姓名命名。(4分) CREATE DATABASE 陆小马 ON PRIMARY (NAME =陆小马_mdf,FILENAME = C:\陆小马_mdf.MDF,SIZE = 15MB,MAXSIZE = 30MB,FILEGROWTH =…

数据结构复习-链队列入队出队(期末不挂科系列)

章节思维导图: 代码: /***链队的基本操作***/ #include<iostream> #include<fstream> using namespace std;#define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef char QElemType; typedef int Status; typedef char SElemType;//- - - - - 队列的链式存…

数据结构复习-顺序栈入栈出栈(期末不挂科系列)

章节思维导图: 代码: /***顺序栈的实现***/#include<iostream> #include<fstream> using namespace std;//顺序栈定义 #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define MAXSIZE 100//顺序栈存储空间的初始分配量 typedef int Status; typedef char …

数据结构复习-二叉树遍历(期末不挂科系列)

思维导图: 代码: //算法5.1 后序遍历的递归算法 #include<iostream> using namespace std; typedef struct BiNode{ //二叉链表定义 char data; struct BiNode *lchild,*rchild; }BiTNode,*BiTree; void PostorderTraverse(BiTree T);//后序遍历二叉树T的递归函数声明…

数据结构复习-循环队列入队(期末考试不挂科系列)

章节思维导图: 队列情况: 代码: #include<iostream> #include<fstream> using namespace std;#define MAXQSIZE 100 #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef char QElemType; typedef char SElemType; typedef int Status;typedef struct {…

怎样让百度搜到自己?提高权重排名,优化网络流量,搜索霸屏,浏览器,SEO,上热搜,上头条

作为新媒体从业者,不管是个人博客,还是个人社区,通过提高主流搜索引擎权重,让自己的博客或者自己的创作获得一个高流量,高排名,甚至搜索霸屏,是非常重要,且效果显见的。那怎么才能优化网络搜索,提高自己搜索的存在感呢?我总结了几点如下: 知己知彼: 先了解搜索原理…

前缀编码是什么?哈夫曼编码是什么?

前缀编码&#xff1a; 如果在一个编码方案中&#xff0c;任何一个编码都不是其他任何编码的前缀&#xff08;最左子串&#xff09;&#xff0c;则称该编码是前缀编码。 如上图&#xff0c;不等长编码方案1是前缀编码&#xff1b; 分析如下&#xff1a; 在不等长编码方案1中&…