为了更深入理解嵌入式汇编,了解下下面x86汇编

1、什么是计算机的数据总线(Date Bus)、地址总线(Address Bus)和控制总线(Control Bus)?

总线是将信息以一个或多个源部件传送到一个或多个目的部件的一组传输线。通俗的说,就是多个部件间的公共连线,用于在各个部件之间传输信息。 
系统总线上传送的信息包括数据信息、地址信息、控制信息,因此,系统总线包含有三种不同功能的总线,即数据总线DB(Data Bus)、地址总线AB(Address Bus)和控制总线CB(Control Bus) 
数据总线DB:用于传送数据信息。数据总线是双向三态形式的总线,即他既可以把CPU的数据传送到存储器或I/O接口等其它部件,也可以将其它部件的数据传送到CPU。数据总线的位数是微型计算机的一个重要指标,通常与微处理的字长相一致。例如Intel 8086微处理器字长16位,其数据总线宽度也是16位。需要指出的是,数据的含义是广义的,它可以是真正的数据,也可以指令代码或状态信息,有时甚至是一个控制信息,因此,在实际工作中,数据总线上传送的并不一定仅仅是真正意义上的数据。
地址总线AB:是专门用来传送地址的,由于地址只能从CPU传向外部存储器或I/O端口,所以地址总线总是单向三态的,这与数据总线不同。地址总线的位数决定了CPU可直接寻址的内存空间大小,比如8位微机的地址总线为16位,则其最大可寻址空间为2^16=64KB,16位微型机的地址总线为20位,其可寻址空间为2^20=1MB。一般来说,若地址总线为n位,则可寻址空间为2^n字节。

控制总线CB:用来传送控制信号和时序信号。控制信号中,有的是微处理器送往存储器和I/O接口电路的,如读/写信号,片选信号、中断响应信号等;也有是其它部件反馈给CPU的,比如:中断申请信号、复位信号、总线请求信号、限备就绪信号等。因此,控制总线的传送方向由具体控制信号而定,一般是双向的,控制总线的位数要根据系统的实际控制需要而定。实际上控制总线的具体情况主要取决于CPU。

2、寄存器

存放CPU要执行的的数据或者指令

寄存器分为通用寄存器和段寄存器(段寄存器专门存放基地址)

3、CPU组成

寄存器

运算器

控制器,控制各种器件运行

内部总线连接各种器件,在他们之间进行数据传输

4、内存地址的表示方法

基地址:偏移地址=实际内存地址

实际物理内存地址=基地址*16+偏移地址

5、段概念

6、CS和IP寄存器

决定了代码段位置

CS寄存器保存了要被CPU执行的代码的基地址 (code segment=cs)

IP寄存器保存了要被CPU执行代码的偏移地址,IP寄存器别名为指令指针寄存器

CPU开始执行代码的起始地址=CS*16+IP

7、debug工具使用

(win7 x64无效,在xp x86下能够使用)

命令

R:查看和改变各个寄存器的内容

CS=1409 IP=0100,则CPU

D:查看内存中的内容

直接回车会默认将CS和IP组合地址的内存内容显示出来

d ss:0000将ss处内存显示出来

U:将内存的机器码转换为汇编指令

u cs:0100

T:跟踪代码运行

A:以汇编指令格式在内存写入指令

a

mov ax, 1234

8、DS寄存器(Data Segment内存访问)

决定了数据段位置

mov ds:[13ABH], 1234H=mov [13ABH], 1234H

=> ds*16+13ABH = 1234H

9、ss、sp寄存器

决定了堆栈段的位置

段寄存器ss:存放栈顶的基地址

寄存器sp:存放栈顶的偏移地址

任何时候,ss、sp都指向栈顶的位置

push ax:将ax中的内容送入ss:sp指向的内存的单元处,sp = sp-2;ss:sp指向新栈顶

入栈数据是从高字节往低字节排序

pop ax:将ss:sp指向的内存单元处的内容赋给ax寄存器,然后sp = sp+2,ss:sp此时指向新栈顶

出栈数据是从低字节往高字节排序

windows下汇编编译环境

masm for windows

10、assume关键字

表示用来假设某一段寄存器和程序中的某一个用segment...ends定义的段相关联

11、db

define byte

assume cs:code, ds:data

data segment

;数据段内容

msg db "hello world"

data ends

code segment

;代码段内容

mov bx, 0b800h

mov es, bx

code ends

后面的课程主要讲解了如何在电脑上写BIOS汇编程序,有点类似于《自己动手写操作系统》内容,讲的还不错,入门挺好的,以后又需要再看。

《IT播吧.-.大灰狼老师出品的零基础汇编视频课程》学习笔记相关推荐

  1. 第二行代码学习笔记——第六章:数据储存全方案——详解持久化技术

    本章要点 任何一个应用程序,总是不停的和数据打交道. 瞬时数据:指储存在内存当中,有可能因为程序关闭或其他原因导致内存被回收而丢失的数据. 数据持久化技术,为了解决关键性数据的丢失. 6.1 持久化技 ...

  2. 第一行代码学习笔记第二章——探究活动

    知识点目录 2.1 活动是什么 2.2 活动的基本用法 2.2.1 手动创建活动 2.2.2 创建和加载布局 2.2.3 在AndroidManifest文件中注册 2.2.4 在活动中使用Toast ...

  3. 第一行代码学习笔记第八章——运用手机多媒体

    知识点目录 8.1 将程序运行到手机上 8.2 使用通知 * 8.2.1 通知的基本使用 * 8.2.2 通知的进阶技巧 * 8.2.3 通知的高级功能 8.3 调用摄像头和相册 * 8.3.1 调用 ...

  4. 第一行代码学习笔记第六章——详解持久化技术

    知识点目录 6.1 持久化技术简介 6.2 文件存储 * 6.2.1 将数据存储到文件中 * 6.2.2 从文件中读取数据 6.3 SharedPreferences存储 * 6.3.1 将数据存储到 ...

  5. 第一行代码学习笔记第三章——UI开发的点点滴滴

    知识点目录 3.1 如何编写程序界面 3.2 常用控件的使用方法 * 3.2.1 TextView * 3.2.2 Button * 3.2.3 EditText * 3.2.4 ImageView ...

  6. 第一行代码学习笔记第十章——探究服务

    知识点目录 10.1 服务是什么 10.2 Android多线程编程 * 10.2.1 线程的基本用法 * 10.2.2 在子线程中更新UI * 10.2.3 解析异步消息处理机制 * 10.2.4 ...

  7. 第一行代码学习笔记第七章——探究内容提供器

    知识点目录 7.1 内容提供器简介 7.2 运行权限 * 7.2.1 Android权限机制详解 * 7.2.2 在程序运行时申请权限 7.3 访问其他程序中的数据 * 7.3.1 ContentRe ...

  8. 第一行代码学习笔记第五章——详解广播机制

    知识点目录 5.1 广播机制 5.2 接收系统广播 * 5.2.1 动态注册监听网络变化 * 5.2.2 静态注册实现开机广播 5.3 发送自定义广播 * 5.3.1 发送标准广播 * 5.3.2 发 ...

  9. 第一行代码学习笔记第九章——使用网络技术

    知识点目录 9.1 WebView的用法 9.2 使用HTTP协议访问网络 * 9.2.1 使用HttpURLConnection * 9.2.2 使用OkHttp 9.3 解析XML格式数据 * 9 ...

  10. 安卓教程----第一行代码学习笔记

    安卓概述 系统架构 Linux内核层,还包括各种底层驱动,如相机驱动.电源驱动等 系统运行库层,包含一些c/c++的库,如浏览器内核webkit.SQLlite.3D绘图openGL.用于java运行 ...

最新文章

  1. 浅谈MySQL中utf8和utf8mb4的区别
  2. 华为:憧憬6G,共同定义6G
  3. 中科院博士返乡卖汉服:3个月卖了300万,预计全年能破1500万
  4. 相机标定原理和opencv代码解析
  5. DataGridView的单元格内容即时更新方法
  6. float/文档流/清除浮动
  7. Centos上安装jdk版本出错的问题
  8. Illustrator 教程,如何在 Illustrator 中保存项目?
  9. 数值分析2.1 Gauss(高斯)消去法
  10. 用报表工具Style Report制作排名前N名的分组报表
  11. 十大最受欢迎蓝牙耳机品牌推荐,学生党打工人平价蓝牙耳机
  12. YUV格式详解【全】
  13. acer软件保护卡怎么解除_Acer软件保护卡使用说明资料
  14. 内存和flash区别
  15. ANSYS入门——模态分析步骤与实例详解
  16. vue项目引入iconfont图标
  17. python正则匹配内网IP
  18. HbuilderX导入项目运行到微信小程序代码杂乱问题
  19. iPad goodnotes 5 打开很慢“准备自己的资料库,获得更快体验”解决
  20. Druid连接池开启数据库监控功能

热门文章

  1. jsp九大内置对象的使用详解
  2. 软件项目建议书模板(免费)
  3. pdf需要简体中文语言支持包_收集全网最好用的PDF转Word工具,赶快收藏起来!...
  4. talib函数功能一览表
  5. 极光im php,极光IM- IM 集成指南 - 极光文档
  6. 在一个窗口显示多个视频子窗口
  7. c语言网格搜索,基于C
  8. 代码保护软件VMProtect加壳脱壳原理总结
  9. VTD-传感器使用小结
  10. 微信小程序添加新图标