码迷,mamicode.com
首页 > 编程语言 > 详细

汇编语言基础2

时间:2015-06-09 20:09:26      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:汇编   linux   架构   

                                 汇编语言基础(寄存器)

首先一个CPU 的结构一般包含运算器,控制器,寄存器,高速缓存,总线等等他们的功能简要来说就是:

1.运算器进行信息处理

2.寄存器进行信息处理

3.控制器控制个种器件进行工作

4.内部总线连接各种器件


不同的CPU ,寄存器的个数,结构是不相同的。8086有14个寄存器每一个都有一个名字:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW。

它的寄存器都是16位的,可以存放两个字节,AX,BX,CX,DX这4个寄存器通常用来存放一般性的数据。

特别一提:

8086是现阶段主流PC处理器X86架构处理器的鼻祖,虽然已经是64位了,但是他们还是有很多相似之处的,X86有4种模式,真实模式,保护模式,系统管理模式,虚拟V86模式。


关于寄存器:

以普通的存放一般性数据的寄存器AX 来说,这是一个十六位的寄存器,它可以被从中间等分点分开成两个八位的寄存器,叫AL(low),AH(high),这两个寄存器可以分别使用,就是说可以当作两个寄存器来使用。

字:

      字在这里是一个新的概念,一个由16位二进制数据组成的数据就叫做一个字,这是以往没有接触过的。

简单的几条汇编指令:

指令                 举例                     执行动作                                                      高级语言表示

MOV             MOV AX,18          将18送入寄存器AX                                     AX = 18

        ADD              ADD  AX,8            将AX 寄存器的值加8                                  AX+=8

        SUB              SUB   AX,BX         将BX 的值与AX 相减存入AX                      AX-=BX

JMP              JMP    XXXX:YYYY     将地址跳转到XXXX:YYYY

注意:

汇编语言并不区分大小写,MOV与mov 是一样的随便写那种都可以

在使用指令传送数据时两个操作对象的位数应当是一致的(例如,8位不可以和16位互相传数据),不能超过上限。

物理地址:

物理地址 = 段地址*16 + 偏移地址

8086得出物理地址的方法:

1.CPU提供两个16位的地址一个称之为段地址,一个叫偏移地址。

2.段地址和偏移地址通过内部总线送入一个地址加法器的部件,然后使用上面的公式来进行计算

3.地址加法器将两个16位地址合成一个20位物理地址

4.通过内部总线将20位的物理地址送入输入输出的控制电路

5.输入输出的控制电路将20位的物理地址送上地址总线

6.20位物理地址被地址总线传送到存储器

        7。不同的段地址和偏移地址可能合成同样的物理地址

其中CS寄存器中存储的就是段地址,IP存储器中存储的是偏移地址。


使用:

windos 用户直接使用DOS就好

        linux     用户需要使用dosbox模拟一个DOS 环境



汇编语言基础2

标签:汇编   linux   架构   

原文地址:http://blog.csdn.net/zmrlinux/article/details/46428989

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!