微机原理之期中突击

24人阅读 评论(0) 收藏 举报
分类:

WOC,明天期中,今晚不调车了,突击一波。。。


1、8086体系结构中寄存器的认识

存在14个16位的寄存器和8个8位寄存器

通用寄存器:传送、暂存数据和接受相关的运算结果。

  • 16位数据寄存器,保存操作数和操作结果,缩短了访问内存的时间和并且不会占用相关的系统总数。

    • AX(累加器、被除数的低16位和除法结果) = AH + AL(8位)<两个独立的寄存器,下面的相同>

    • BX(基址寄存器) = BH + BL(8位)<用于基址寻址,唯一一个作为存储器指针使用的寄存器>

    • CX(字符串操作、控制循环次数) = CH + CL (移位的时候使用,保存移位的位数)(8位)

    • DX(32位乘除法,存放被除数的高16位,或者保留余数,AX保留结果) = DH + DL(8位)

  • 8个八位寄存器

    • AH 、AL 、BH、 BL、 CH、 CL、 DH、 DL

指针寄存器:存储某个存储单元的地址或者是一段存储单元的起始地址

  • 16位指针寄存器

    • BP(基址指针 base point 堆栈数据区基址的偏移 )

    • SP(堆栈指针 stack pointer <push pop 指令的时候使用,保存栈顶地址>) (上面两个指针一般是和SS合用)

  • 16位变值寄存器<一般在字符串操作的时候用的比较多>

    • DI (目的地址 destination )

    • SI(源地址 source) (上面的两个寄存器一般是和DS、ES合用)

控制寄存器

  • IP(指令指针)<下一条指令的地址,但是不代表是下次将会执行的指令>
  • 在计算机的组成原理中还有PC**(程序计数器,始终指向下一条将要执行的指令,有时候PC和IP的内容相同,有时候又不同,个人理解?)**

FLAG(标志寄存器),其中包含了9个标志,主要反映存储器的状态和相关的运算状态。(前6个运算结果标志,后3个控制标志)

结果标志

  • 0 CF (carry flag ) 进位标志 反映运算是否产生进位或者借位<加法和减法>
  • 2 PF (parity flag ) 奇偶标志 反映运算结果中1的个数是奇数还是偶数(偶数则置为1)
  • 4 AF(assist flag ) 辅助标志 在字节操作中,发生低半字节向高半字节进位或借位;在字操作中,低半字向高半字进位或者借位
  • 6 ZF(zero flag ) 零标志 反映运算结果是否为0
  • 7 SF(signed flag )符号标志 反映运算结果的符号位,与运算结果的最高位相同
  • 11 OF(over flag) 溢出标志 反映有符号数加减运算是否引起溢出

控制标志

  • 8 TF(trace flag ) 跟踪标志 置为1后,cpu进入单步方式。主要用于调试,cpu执行一条指令后被中断
  • 9 IF(interrupt flag)中断标志 决定CPU是否相应外部可屏蔽中断请求,1则响应,0则不响应

  • 10 DF(direction flag) 方向标志决定串操作指令执行时有关指针寄存器调整方向,为1,则串操作指令按减方式改变有关寄存器的值,反之则用加方式

2、地址分段和寻址

明确地址分段的原因

  • 因为在8086中CPU的地址线是20位,那么实际可用的最大物理地址空间是1MB,但是因为寄存器都是只有16位和8位之分,最大寻址范围是64KB,为了寻找到所有的物理地址,需要对物理地址空间进行分段。
  • 分段一般是由段首地址+段内偏移地址组成。
  • 对于段的首地址不是随意乱取,通常都以“小段的起始地址为主”
  • “小段”即是在物理地址中从00000H开始,每16个字节而划分的,那么整个物理地址空间就可以划分为64K个小段,且首地址的最后四位均为0(用二进制表示时),所以是16的倍数
  • 进行分段后,段与段之间就会有重叠、相邻、不会相干的现象产生。
  • 物理地址= 段首地址*16+段内偏移地址,或者 段首地址*10H + 段内偏移地址
  • 前者为物理地址,后者段首地址:偏移地址为逻辑地址。所以一个物理地址可能对应多个逻辑地址的表示。

3、寻址方式

  • 汇编代码是由两部分组成:操作码+操作数

    • 一般操作码在相应的机器指令体系中有相关的表示,但是操作数的存储就会不同了。
  • 操作数存储在如下地方:

    • 直接在汇编代码中:那么这种寻址方式就是立即数寻址 mov ax, 1234H

    • 存放在寄存器中:那么这种寻址方式就是寄存器寻址 mov ax,bx

    • 存放在内存中,那么这种寻址方式就比较多了

寻址方式:(以源操作数的寻址为例)

  • 1、立即数寻址 mov ax,1234H
  • 2、寄存器寻址 mov ax,bx
  • 3、直接寻址 mov ax,【1234H】 (ax) = (ds*16+1234H)
  • 4、寄存器间接寻址
    mov ax,【bx】 (ax) = (ds*16+bx)
    mov ax,【BP】 (ax) = (ss*16+bp)
    因为bp的默认是通过ss来寻址,不过也可以通过段地址前缀来进行强加了
    mov ax,ds:[BP] (ax) = (ds*16+bp)
  • 5、寄存器相对寻址
    • mov ax,[bx+1234H] (ax) = (ds*16+bx+1234H)也可以表示为
      mov ax,1234H【bx】.同4,也存在这样的关系
  • 6、基址变址寻址
    mov ax,【bx+si】 (ax)= (ds*16+bx+si) <bx是基址寄存器,默认是和ds合用>也可以表示为mov ax,【bx】【si】或者是mov ax,【si】【bx】

  • 7、相对基址变址寻址
    mov ax,【bx+si+1234H】 (ax)=(ds*16+bx+si+1234H)

3、指令系统

  • 如果需要在两个存储单元中进行数据传送,可以利用一个寄存器过渡MOV AX,VARW1然后MOV VARW2,AX,实现了VARW1->VARW2的数据传送。
  • 立即数是不能直接送段寄存器的,立即数必须先送达一个普通的寄存器,然后再送到段寄存器。
  • IO的地址有16位,即64K个地址。 64K个地址中如果是小于255也就是8位地址可以直接送,但是如果大于8位需要用一个DX来传送!

  • 以A~F打头的数字出现在指令中时,前面必须加数字0。以免与其它符号相混淆(如:0AF22H)

查看评论

微机原理与汇编语言期中微机原理与汇编语言期中微机原理与汇编语言期中

  • 2010年03月01日 16:48
  • 1.83MB
  • 下载

微机原理与汇编语言期中参考答案微机原理与汇编语言期中参考答案微机原理与汇编语言期中参考答案

  • 2010年03月01日 16:47
  • 58KB
  • 下载

苏州大学微机原理试卷

  • 2010年12月05日 20:58
  • 83KB
  • 下载

南昌大学微机原理期中试题

  • 2013年11月06日 10:15
  • 13KB
  • 下载

微机原理复习提纲

  • 2013年04月23日 23:13
  • 94KB
  • 下载

微机原理期中自测试题

  • 2009年04月21日 12:26
  • 59KB
  • 下载

清华大学-微机原理(考试大纲及作业)

  • 2008年12月23日 20:43
  • 4.17MB
  • 下载

《艺术人生:士兵突击》专访中震撼心灵的几段话

昨晚和今天看了《艺术人生:士兵突击》专访,采访了几位主要演员和导演、编剧,采访过程中各位嘉宾的即兴回答很精彩,其中有几段话特别让我感动,于是整理出来和大家共勉! 陈思成: ——面对挫折的选择 1、我觉...
  • chenyusiyuan
  • chenyusiyuan
  • 2008-01-04 15:36:00
  • 2661

笔试面试前突击用

1、C和C++的结构体有什么区别 C中struct没有访问权限修饰,封装而不隐藏,成员不能是函数 C++中struct与类基本相同,不同的是默认访问权限,struct不能用于定义模版类 如果不是为了与...
  • luchengtao11
  • luchengtao11
  • 2017-05-04 23:15:11
  • 496

数据结构 适合考试之前突击

  • 2009年09月03日 12:05
  • 1.29MB
  • 下载
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 8万+
    积分: 4426
    排名: 8459
    博客专栏
    最新评论