汇编网首页登录博客注册
fpamc的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态

[2012-02-21 14:50] 第二章笔记

第二章:寄存器
一个典型的CPU由运算器、控制器、寄存器等器件构成,这些器件靠内部总线相连。
在CPU中:
        运算器进行信息处理;
        寄存器进行信息存储;
        控制器控制各种器件进行工作;
        内部总线连接各种器件,在他们之间进行数据的传送。

程序员通过改变各种寄存器中的内容来实现对CPU的控制。
通用寄存器:AX、BX、CX、DX。
段寄存器:CS、SS、DS、ES。
16位通用寄存器(ax、bx、cx、dx)可以分为两个8位寄存器来用。如:ax可以分为ah和al。

在进行数据传送或运算时,要注意指令的两个操作对象的位数应当是一致的。
操作数
0~9开头的不用加0,A~F开头的要加0.主要是汇编编译器的设计者需要用户按这个规则编程,否则他设计的编译器不知道你写的是什么。因为标号不能以0~9的数字开头,但可以以字母开头,如果不这样规定一下,那你写的东西其语义是标号呢,还是16进制数呢?
例:错误指令:mov ax,bh
当此指令的意图为寄存器与寄存器之间传送数据时:
错误原因为,寄存器ax为16位寄存器,寄存器bh位数为8位。位数不一致!
当此指令的意图为向寄存器ax传送数据b(16进制)时:
错误原因为,无法识别,操作数开头需要加0.

物理地址(定义):所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址。

16位结构CPU具有以下几方面的机构特征:
        运算器一次最多可以处理16位的数据;
        寄存器的最大宽度为16位;
        寄存器和运算器之间的通路为16位。

也就是说,在8086CPU内部,能够一次性处理、传输、暂时存储的信息的最大长度是16位的。

物理地址计算方法:在8086CPU中有一种‘地址加法器’的器件,其采用“物理地址=段地址*16+偏移地址(基础地址+偏移地址=物理地址)”的方法用段地址和偏移地址合成物理地址。
段地址*16必然是16的倍数,所以一个段的起始地址也一定是16的倍数;偏移地址为16位,16位地址的寻址能力为64KB,所以一个段的长度最大为64KB。

CPU可以用不同的段地址和偏移地址形成同一个物理地址。

偏移地址16位,变化范围为0~FFFFH,仅用偏移地址来寻址最多可寻64KB个内存单元。

“数据在21F60H内存单元中”的说法:
①数据存在内存2000:1F60单元中;
②数据在内存的2000段中的1F60单元中。
可以根据需要,将地址连续、起始地址为16的倍数的一组内存单元定义为一个段。

一个数据的十六进制形式左移1位,相当于乘以16;一个数据的十进制形式左移1位,相当于乘以10;一个X进制的数据左移1位,相当于乘以X。

CS为代码段寄存器,IP为指令指针寄存器。任意时刻,CPU将CS:IP指向的内容当做指令执行。
8086CPU的工作过程:
①        从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器;
②        IP指向下一条指令;
③        执行指令。(转到步骤①,重复这个过程。)

程序员可以通过改变寄存器中的内容实现对CPU的控制。

几条汇编指令:
传送指令:MOV
加法指令:ADD
减法指令:SUB
转移指令:JMP

几种形式:MOV 寄存器,寄存器
                寄存器,数据
                寄存器,内存单元
                内存单元,寄存器
                寄存器,段寄存器
                段寄存器,寄存器
                段寄存器,内存单元
                内存单元,段寄存器
          ADD 寄存器,数据
                寄存器,寄存器
                寄存器,内存单元
                内存单元,寄存器
          SUB 寄存器,数据
               寄存器,寄存器
               寄存器,内存单元
               内存单元,寄存器
          JMP 段地址:偏移地址
               某一合法寄存器

运行JMP指令,将会两次修改IP。(执行中,放入指令缓冲器修改一次;执行后,转移指令JPM修改IP的值,第二次修改。)

Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。
几条命令:
查看、修改CPU中寄存器的内容:R命令
查看内存中的内容:D命令
修改内存中的内容:E命令(可以写入数据、指令,在内存中他们实际上没有区别)
将内存中的内容解释为机器指令和对应的汇编指令:U命令
执行CS:IP指向的内存单元处的指令:T命令
以汇编指令形式向内存写入指令:A命令
评论次数(1)  |  浏览次数(650)  |  类型(汇编笔记) |  收藏此文  | 

[  xuer2016   发表于  2012-10-26 10:51  ]

学习了
我书写不规范,16进制字母前不加0,后面不加H,以后要注意了。。。

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码