草庐IT

ARM指令中LDR与MOV的区别与应用——看这一篇就够了

 作者简介:大家好我是IM汤姆凯特,大家可以叫我汤姆 个人主页:IM汤姆凯特的CSDN博客 系列专栏:【ARM嵌入式基础】 每日一句:总有一天,你坚持的东西,会返过来拥抱你我们知道LDR和MOV都是用来传递数据的指令,什么时候用LDR什么时候用MOV呢?🌴想要掌握LDR指令和MOV指令的用法,我们可以先了解一下ARM和x86的区别ARM采用的是RISC(精简指令计算机),x86架构采用的是CISC(复杂指令计算机)CISC架构采用庞大的指令集,可以减少编程所需要的代码行数,减轻程序员的负担,RISC采用精简指令集,包含了简单、基本的指令,通过这些简单、基本的指令,就可以组合成复杂指令,二者各有

自己动手从零写桌面操作系统GrapeOS系列教程——24.加载并运行loader

学习操作系统原理最好的方法是自己写一个简单的操作系统。之前我们在电脑的启动过程中介绍过boot程序的主要任务就是加载并运行loader程序,本讲我们就来实现。本讲代码文件共2个:boot.asmloader.asm一、代码及讲解本讲所用到的知识点都是之前已经用过的,只是在本讲中综合应用了一下。关于如何读取文件在上一讲中已经介绍过了,我们只要在上讲代码中把要读取的文件名改成loader的文件名"LOADER  BIN"即可读取loader程序文件。本讲的boot.asm就是在上讲的基础上稍微改了下,加了3处提示语句。程序一开始先清屏并在屏幕上输出字符串“GrapeOSbootstart.”。然后

自己动手从零写桌面操作系统GrapeOS系列教程——24.加载并运行loader

学习操作系统原理最好的方法是自己写一个简单的操作系统。之前我们在电脑的启动过程中介绍过boot程序的主要任务就是加载并运行loader程序,本讲我们就来实现。本讲代码文件共2个:boot.asmloader.asm一、代码及讲解本讲所用到的知识点都是之前已经用过的,只是在本讲中综合应用了一下。关于如何读取文件在上一讲中已经介绍过了,我们只要在上讲代码中把要读取的文件名改成loader的文件名"LOADER  BIN"即可读取loader程序文件。本讲的boot.asm就是在上讲的基础上稍微改了下,加了3处提示语句。程序一开始先清屏并在屏幕上输出字符串“GrapeOSbootstart.”。然后

实验02_Proteus仿真数码管显示代码

一、原理总结利用两个寄存器R4和R5来存储两个数码管的显示效果,R4是前一个数码管显示所需,而R5是后一个数码管显示所需,利用左移操作RLC来使之每一位被依次输入到C中,然后将C输入到LED中(当LED每位都有数据时,数码管才会显示),利用停顿函数使数码管上数字停留一段时间。二、程序分析以下为全部代码,之后会进行具体分析总体代码;====================================================================;Main.asmfilegeneratedbyNewProjectwizard;;Created:周一九月192022;Proce

实验02_Proteus仿真数码管显示代码

一、原理总结利用两个寄存器R4和R5来存储两个数码管的显示效果,R4是前一个数码管显示所需,而R5是后一个数码管显示所需,利用左移操作RLC来使之每一位被依次输入到C中,然后将C输入到LED中(当LED每位都有数据时,数码管才会显示),利用停顿函数使数码管上数字停留一段时间。二、程序分析以下为全部代码,之后会进行具体分析总体代码;====================================================================;Main.asmfilegeneratedbyNewProjectwizard;;Created:周一九月192022;Proce

继承和多重继承

一、继承的基本概念​ 继承:子类继承父类的属性和行为​ 作用:代码复用继承分类:1.按访问属性分为public、private、protected三类1)public:父类属性无更改,pubic,private,protected仍是自己本身(子类成员函数可以访问父类的public和protected,子类对象可以访问public)2)private:父类属性全变为privates(子类不能访问父类属性)3)protected:父类public变为protected,其他不变(子类成员函数可以访问父类的public和protected,子类对象不能访问)2.按继承父类的个数分为单继承和多继承类

继承和多重继承

一、继承的基本概念​ 继承:子类继承父类的属性和行为​ 作用:代码复用继承分类:1.按访问属性分为public、private、protected三类1)public:父类属性无更改,pubic,private,protected仍是自己本身(子类成员函数可以访问父类的public和protected,子类对象可以访问public)2)private:父类属性全变为privates(子类不能访问父类属性)3)protected:父类public变为protected,其他不变(子类成员函数可以访问父类的public和protected,子类对象不能访问)2.按继承父类的个数分为单继承和多继承类

自己动手从零写桌面操作系统GrapeOS系列教程——15.用汇编向屏幕输出字符

学习操作系统原理最好的方法是自己写一个简单的操作系统。在上一讲中我们介绍了屏幕显示的原理,本讲我们来实战一下。一、向屏幕输出一个字符mbr4.asmmbr4.asm中的代码如下:;将屏幕第一行的第一个字符显示为‘G’。movah,0x07;黑底白字moval,'G';G的ASCII码是0x47,此时ax的值为0x0747。movbx,0xb800moves,bxmov[es:0],ax;文本模式显存地址从0xb8000开始。stop:;标号hltjmpstoptimes510-($-$$)db0;将从上条指令结束到最后2个字节前的空余字节全部置为0。db0x55,0xaa上面代码中的注释比较详

自己动手从零写桌面操作系统GrapeOS系列教程——15.用汇编向屏幕输出字符

学习操作系统原理最好的方法是自己写一个简单的操作系统。在上一讲中我们介绍了屏幕显示的原理,本讲我们来实战一下。一、向屏幕输出一个字符mbr4.asmmbr4.asm中的代码如下:;将屏幕第一行的第一个字符显示为‘G’。movah,0x07;黑底白字moval,'G';G的ASCII码是0x47,此时ax的值为0x0747。movbx,0xb800moves,bxmov[es:0],ax;文本模式显存地址从0xb8000开始。stop:;标号hltjmpstoptimes510-($-$$)db0;将从上条指令结束到最后2个字节前的空余字节全部置为0。db0x55,0xaa上面代码中的注释比较详

自己动手从零写桌面操作系统GrapeOS系列教程——21.汇编语言写硬盘实战

学习操作系统原理最好的方法是自己写一个简单的操作系统。在上一讲中我们学习了用汇编语言读硬盘,本讲我们来学习用汇编语言写硬盘。同样也是设计一个简单的实验,实验内容为:在内存中准备一段有特征的512字节数据,地址为0x7e00~0x7fff,其特征是前3个字节依次为4、5、6,最后3个字节依次为6、5、4。然后将该段内存数据写入到硬盘的第2个扇区,并查看虚拟硬盘第2个扇区的数据是否与内存中0x7e00~0x7fff的数据一致,如果一致则说明写硬盘成功。本讲代码文件只有一个boot2.asm。boot2.asm代码如下:;定义常量DISK_BUFFERequ0x7e00;临时存放数据用的缓存区,放到