当前位置: 首页 > news >正文

百度最新泛站群程序wordpress更换主题菜单

百度最新泛站群程序,wordpress更换主题菜单,网站建设cms,NET网站开发程序员目录 汇编整体分类 1.指令 2.伪操作 3.伪指令 汇编代码 汇编初始化 数据搬运指令 算术运算指令 加法 减法 乘法 比较指令 跳转指令 逻辑运算指令 与或,异或 左移右移 内存操作 LOAD/STORE 指令 写 读 CPU的栈机制 栈的概念 栈的种类 1.空栈(…

 

目录

汇编整体分类

1.指令

2.伪操作

3.伪指令

汇编代码

汇编初始化

数据搬运指令

算术运算指令

加法

减法

乘法

比较指令

跳转指令

逻辑运算指令

与或,异或

左移右移

内存操作 LOAD/STORE 指令

CPU的栈机制

栈的概念

栈的种类

1.空栈(Empty)

2.满栈(Full)

栈的基本操作

PUSH/POP

栈的应用

叶子函数

非叶子函数


汇编整体分类

1.指令

        编译完生成一条机器码存储在内存单元当中,CPU执行时能完成对应的操作(类似于C中的语句)

2.伪操作

        伪操作(相当于c中的#的内容,告诉编译器怎么编译),不会生成机器码也不会占用内存,其作用是告诉编译器怎样编译(类似于C中的预处理指令)

3.伪指令

        伪指令不是指令,编译器在编译时将其替换成等效的指令 (如:cpu中没有乘法器,对应没有乘法指令,3*3 ---》用加法器实现3+3+3,替换实现)

汇编代码

汇编初始化

 AREA    STACK, NOINIT, READWRITE
__initial_spAREA    RESET, DATA, READONLY
__Vectors       DCD     __initial_spDCD     main              AREA    |.text|, CODE, READONLYENTRY
mainloopB loop                  END

1.AREA STACK, NOINIT, READWRITE: 这一行指定了一个名为STACK的内存区域,它用于存储堆栈。NOINIT表示这个内存区域在程序启动时不需要初始化,READWRITE表示这个内存区域可以被读取和写入。
2.__initial_sp: 这一行定义了一个名为`__initial_sp`的符号,它表示堆栈指针的初始值。在这里,它被定义为堆栈的起始地址。通常,这个符号会在链接脚本中进一步定义为实际的堆栈内存区域的起始地址。
3.AREA RESET, DATA, READONLY: 这一行指定了一个名为RESET的内存区域,用于存储重置向量表。DATA表示这个区域包含数据,READONLY表示这个区域只能被读取。
4.__Vectors DCD __initial_sp: 这一行定义了一个重置向量表,用于指示程序启动时应该执行的操作。`DCD`表示存储一个双字(32位)的数据。在这里,第一个双字存储的是堆栈指针的初始值,即__initial_sp。
5.DCD main: 这一行将程序的入口地址(main函数)添加到重置向量表中。这意味着程序在启动时将跳转到main函数开始执行。
6.AREA |.text|, CODE, READONLY: 这一行指定了一个名为.text的内存区域,用于存储代码。CODE表示这个区域包含代码,READONLY表示这个区域只能被读取。
7.ENTRY main: 这一行指定了程序的入口点为main函数。这意味着程序将从`main`函数开始执行。
8.loop B loop: 这一行是一个无限循环,它会不断地跳转到`loop`标签所在的位置,导致程序永远循环执行这条指令。
9.END: 这一行表示程序的结束。

数据搬运指令

改变PC的值实现程序跳转

 AREA    STACK, NOINIT, READWRITE
__initial_sp                 AREA                 RESET, DATA, READONLY
__Vectors       DCD     __initial_sp                  DCD     main                               AREA    |.text|, CODE, READONLY                 ENTRY
main  
MOVS R0,#2
MOVS R1,R0
;改变PC的值实现程序跳转,0x08000008
;先把地址给一个寄存器,再把这个寄存器的值赋给PC
LDR R2,=0x08000008
MOV PC,R2
loop                 B loop                                   
END

算术运算指令

加法

    AREA    STACK, NOINIT, READWRITE
__initial_sp                 AREA                 RESET, DATA, READONLY
__Vectors       DCD     __initial_sp                  DCD     main                               AREA    |.text|, CODE, READONLY                 ENTRY
main  
MOVS R0,#2
MOVS R1,R0
ADDS R3,R0,R1  ;R3=0X04
LDR R8,=0X01
ADD R8,R8,R3   ;R8=R8+R3 =0X05
loop                 B loop                                   
END

减法

    AREA    STACK, NOINIT, READWRITE
__initial_sp                 AREA                 RESET, DATA, READONLY
__Vectors       DCD     __initial_sp                  DCD     main                               AREA    |.text|, CODE, READONLY                 ENTRY
main  
MOVS R0,#2
MOVS R2,#2
MOVS R1,R0
SUBS R2,R0,R1  ;R2=R0-R1
loop                 B loop                                   
END

乘法

    AREA    STACK, NOINIT, READWRITE
__initial_sp                 AREA                 RESET, DATA, READONLY
__Vectors       DCD     __initial_sp                  DCD     main                               AREA    |.text|, CODE, READONLY                 ENTRY
main  
MOVS R0,#2
MOVS R2,#2
MOVS R1,R0
MULS R2,R0,R2  ;R2=R0*R2
loop                 B loop                                   
END

比较指令

跳转指令

    AREA    STACK, NOINIT, READWRITE
__initial_sp                 AREA                 RESET, DATA, READONLY
__Vectors       DCD     __initial_sp                  DCD     main                               AREA    |.text|, CODE, READONLY                 ENTRY
JUMP
MOVS R0,#1
MOVS R2,#1
LDR R3,=0X0800001A
MOV PC,R3main  
MOVS R0,#2
MOVS R2,#2
MOVS R1,R0
CMP R0,R2  ;if(a==b)
BEQ JUMP  
MOVS R0,#3
loop                 B loop                                   
END
    AREA    STACK, NOINIT, READWRITE
__initial_sp                 AREA                 RESET, DATA, READONLY
__Vectors       DCD     __initial_sp                  DCD     main                               AREA    |.text|, CODE, READONLY                 ENTRY
JUMP
MOVS R0,#1
MOVS R2,#1
MOV PC,LRmain  
MOVS R0,#2
MOVS R2,#2
MOVS R1,R0
BL JUMP
MOVS R0,#3
loop                 B loop                                   
END

逻辑运算指令

与或,异或

    AREA    STACK, NOINIT, READWRITE
__initial_sp                 AREA                 RESET, DATA, READONLY
__Vectors       DCD     __initial_sp                  DCD     main                               AREA    |.text|, CODE, READONLY                 ENTRYmain  
MOVS R0,#2   ;R0:0010
MOVS R1,#1 ;R1:0001
ANDS R1,R1,R0   ;R1=R1&R0 R1=0000
EORS R1,R1,R0   ; 0010  0000  0010
loop                 B loop    END

左移右移

  AREA    STACK, NOINIT, READWRITE
__initial_sp                 AREA                 RESET, DATA, READONLY
__Vectors       DCD     __initial_sp                  DCD     main                               AREA    |.text|, CODE, READONLY                 ENTRYmain  
MOVS R0,#2   ;R0:0010  左移1位  0100--4
MOVS R1,#1 ;R1:1
LSLS R0,R0,R1
loop                 B loop    END

内存操作 LOAD/STORE 指令

CPU的栈机制

栈的概念

栈是一种具有特殊的访问方式的存储空间,特殊性就在于后进先出

栈的种类

1.空栈(Empty)

栈指针指向的地址是空的,在栈中存储数据时,可以直接存储,存储完成之后需要将栈指针再次指向空的位置。

EA:Empty Ascending 空增栈

ED:Empty Descending 空减栈

2.满栈(Full)

栈指针指向的地址有数据,在栈中存储数据时,需要先将栈指针,指向一个空的位置,然后在存储数据。

增栈(Ascending)

        栈指针向高地址方向移动

减栈(Descending)

        栈指针向低地址方向移动

FA:Full Ascending 满增

FD:Full Descending 满减

ARM默认采用的是满减栈

栈指针指向有数据的顶,接收数据时,栈指针先移动,再放数据。指针的移动是地址的降低

栈的基本操作

栈有两种基本的操作:入栈和出栈

1.入栈:将一个新的元素放到栈顶

2.出栈:从栈顶取出一个元素

栈顶元素总是最后一个入栈的,需要出的时候,又会是第一个被取出的

操作规则:LIFO后进先出

PUSH/POP

PUSH 入栈,压栈

POP 出栈,弹栈

//主程序给R1,R2,R3,R4分别存入:0x11111111 0x22222222 0x33333333 0x44444444然后跳入函数JUMP
//2.写一个函数JUMP,函数内修改R1为0x20000001 R3为0x00000000
//3.修改结束后返回主函数
//4.主函数再使R1和R3相加后存入R1跳出主程序进入死循环
//子程序返回主程序时,不可以使用MOV指令和B BL BX BXLAREA    STACK, NOINIT, READWRITE
__initial_sp                 AREA                 RESET, DATA, READONLY
__Vectors       DCD     __initial_sp                  DCD     main                               AREA    |.text|, CODE, READONLY                 ENTRY
main  ADD SP,SP,#0X100;上调栈指针LDR R1,=0X11111111;LDR R2,=0X22222222;LDR R3,=0X33333333;LDR R4,=0X44444444;BL JUMPADD R1,R1,R3B loop
JUMPPUSH {R0-R4,LR} ;保护现场LDR R1,=0X44324302;LDR R3,=0X33222055;POP{R0-R4,PC} ;恢复现场
loop                 B loop    
END

栈的应用

叶子函数

        叶子函数是指一个函数内部没有调用其他函数的函数,也就是说,它是程序调用树的末端节点,不依赖于其他函数。

非叶子函数

        非叶子函数是指一个函数内部调用了其他函数的函数,也就是说,它不是程序调用树的末端节点,可以被其他函数调用。

http://www.yayakq.cn/news/132375/

相关文章:

  • 做域名后就得做网站吗wordpress 随机名言插件
  • 庐江县建设局网站wordpress get_pages 输出格式
  • 深圳有什么网站网站页面统计代码是什么意思
  • 华为快速建站wordpress wp_handle_upload
  • 网站制作什么关键词查询工具免费
  • 建设速干裤移动网站大地资源免费视频观看
  • 动易网站默认密码网站开发切换电脑版与手机版
  • 佛山建网站永网wordpress无法超链接
  • 金融公司网站建设模板网页设计与制作实验报告心得体会
  • 经营范围 网站建设2345浏览器官网
  • 网站开发技术包括什么登录全球最大的域名注册商网站
  • 青县建设银行网站设计与制作网站
  • 免费高清视频素材网站网站建设报价方案.xls
  • 乐清网站制作电话潜江哪里做网站
  • 网站建设的基本技术东莞大岭山做网站公司
  • 扁平化网站模板下载网站优化计划书
  • 汝州市城乡建设局网站优秀单页网站
  • 团购做的好的网站学习资料黄页网站免费
  • 石家庄市网站制作做图片视频的网站
  • 沭阳网站开发数据库网站有哪些
  • 注册公司的网站qq电脑版网页登录入口
  • 网站标题关键词描述天元建设集团有限公司滨州分公司
  • 网站开发协议百度网站图文列表
  • 网站首页title假网站备案
  • dede网站模板wordpress 多栏主题
  • 辽宁建设工程质量监督站网站哪个网站可以接广告做
  • 网站开发工程师的经验网站设计素材网站有哪些
  • 关键词搜索引擎网站服务器证书与网站不符
  • 网上拿货做哪个网站好电商怎么入门
  • 网站建设甲方原因造成停工襄阳seo费用