欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

微机原理与接口技术--西安电子科技大学-笔记一

程序员文章站 2022-05-13 23:51:17
...

微机原理与接口技术—西安电子科技大学

绪论

微型计算机系统组成

  1. 硬件子系统与软件
  2. 早期计算机硬件组成–ALU-----控制器控制ALU运算–ALU运算的数据
  3. 存储器中的数据被控制器控制器送到ALU
  4. 输入设备(IO)-----控制器控制输入设备
  5. 信息------数据信息、控制信息、地址信息
  6. 总线-----用来传送信息的通道
  7. 数据总线(DB)、地址总线(AB)、控制总线(CB)
  8. 现代微型计算机硬件组成
  9. 引脚------复用引脚–分时复用
  10. 指令-----一种二进制代码(机器码)
  11. 存储器按字节组织的-------寻址-----地址总线条数的多少----数据总线----可管理的数据的大小

计算机中的数制和码制

  1. 十进制 <-----> 二进制 (字长n=8)
  2. 逼近法-----位置加权法
  3. 十进制 <-----> 十六进制
  4. 在程序设计当中,都会遇到把十进制转换成二进制
  5. 二进制 <-----> 十进制 (除10取余法)
  6. 比较法

二进制数的运算

  1. 算数运算 ±*/
    • 字长n 8–字节,16—字,
  2. 8位寄存器----暂存数据
    • AX(16) BX CX DX------AH AL
  3. 助记符 目的操作数 源操作数
  4. 数字0打头
  5. 结果溢出
  6. 处理器状态字寄存器PSW----标志寄存器----运算才可能影响PSW

  1. 逻辑运算
    • 与 AND DST,SRC 应用场合:位清零AND0,有些位置不变
    • 或 OR DST,SRC 应用场合:位置1Or1,某些位置不变
    • 异或 XOR DST,SRC 应用场合:取反XOR1,某些位置不变
    • 非 NOT DST(不影响状态标志位)
      (无符号数)
  2. 8位数据范围:0~255; 16位数据范围: 0~65535

有符号数的表示方法以及溢出问题

  1. D0-D6–数值,D7----符号(机器码)
  2. 原码-----[X]原
  3. 补码-----X>=0,本身;X<0,2^n+X;
    • 负数的原码----符号位不变–取反+1
  4. 在计算机中,有符号数均用补码表示

  1. 补码的运算
  2. n=8,-128~+127; n=16,-32768~+32767
  3. [X+Y]补 = [X]补+[Y]补
  4. 加法是前两位要进都进,减法是要借都借
  5. [X-Y]补 = [X]补-[Y]补
  6. 补码运算结果还是补码,再次求补就是原码
  7. 变补/求负----[Y]补----[-Y]补

  1. BCD码
  2. 组合BCD数—一个字节
  3. 分离BCD数—两个字节
  4. BCD运算—后四位超过9+6调整

  1. 计算机上的字符用ASCII码表示
  2. 可显字符—‘0’----‘9’ ‘a’----‘f’ ‘A’----‘F’
  3. 字符---->数字 -30H || AND 0FH
  4. 大写---->数字 -37H ||
  5. 大写---->小写 20H || 逻辑运算 AND 0DFH||ADN 5FH
    • 0100~0101------> 0110~0111
  6. 小写----> 大写 OR 20H

CPU的结构与功能(第二章)

微型处理器的外部结构

  1. 表现为数量有限的输入输出引脚
  2. 输入输出引脚构成了微处理器总线
  3. 数据总线、地址总线、控制总线
  4. 8086(16-16)/8088(16-8)共40个引脚
  5. A19-A16,A15-A0-----给外部存储器提供地址,2^20=1M
  6. A15-A0-----同时给外部IO提供地址—M/^IO
  7. 一个IO端口至少占用一个IO地址----IO端口地址
  8. 统一编址—缺点:浪费了存储器的空间;优点:IO驱动程序灵活
  9. 独立编制—优点:节约存储器的空间;缺点:,指令记忆复杂,IO编程不灵活

微处理器的内部结构(一般)–效率较低

  1. ALU–算数逻辑运算
  2. 工作寄存器—数据寄存器只可以提供数据–地址寄存器可以提供地址也可以提供数据—
  3. 控制器—*指挥机关—取指令–指令寄存器(指令队列)—译码
  4. IO控制逻辑电路

  1. 外部存储器

  1. 控制器
    • 程序计数器(PC)–16
    • 指令寄存器(IR)–8
    • 指令译码器(ID)–
    • 控制逻辑部件

  1. 堆栈-----先进后出原则组织的一段存储器区域----在外部存储器
  2. 8086:堆栈必须按字操作
  3. SP—堆栈指针寄存器(16)----栈底+1的地址----SP—>SP-2;一个字单元的数据压入
  4. SP----指向的地址是栈顶
  5. 堆栈溢出就出现死机状态
  6. pop---->取出数据;SP+2

8086/8088CPU的内部结构—8086/8088***

  1. 虚线分为两大部分—BIU 和 EU
  2. BIU
    • CS\SS\ES\DS\IP(相当于PC)
  3. 为了16位的地址可以寻找1M的空间,内存分为段管理
  4. 内部只提供16位地址,寻址16,把外部分为多个64K段地址,段地址(16)+偏移—>地址产生—>20

  1. 指令队列 REG(IR)----6个字节----效率提高—8088(4个字节)
  2. BIU—主要职责:从外部存储器取指令,并将取回的指令放到指令队列中,直至6个字节
  3. EU----主要负责从指令队列获取指令—遵循先进先出原则—并译码分析并指令
  4. 图–时序周期–EU如果使用总线执行命令,BIU暂停取指令

8086CPU的寄存器组织

  1. 共有14个16位的寄存器
  2. 通用寄存器–8个

    数据寄存器(4个16位)

    • AX—累加器(特殊功能)| AH AL
    • BX—基址寄存器(特)—段内的–DS段的
    • CX—计数器
    • DX—数据寄存器(IO)

    地址指针寄存器 (2)与变址寄存器(2)-----16位

    • SP—堆栈指针寄存器(段内–偏移)
    • BP—地址指针寄存器—类似于BX做基址寄存器
      在段内讲偏移地址–64K—逻辑段
      MOV BX,0002H—DS
      MOV BP,0002H—SS
      MOV DS:[BP],AL//段超越前缀,存储到不属于自己的逻辑段内
    • SI—源变址寄存器
    • DI—目的变址寄存器—SI、DI对字符串的操作体现变\自动变
    • BX,SI,DI—DS段
    • 字符串操作指令—源在DS–SI提供---->目的必须在ES段–DI提供首地址
    • MOVSB

  1. 段寄存器(4个)
    • CS—代码段寄存器----与外部存储器的段联系,段地址–初始化由系统完成
    • DS—数据段寄存器----可以人为初始化
    • ES—附加数据段寄存器—可以人为
    • SS—
  2. 控制寄存器(2个)
    • IP—指令指针寄存器(16)—与CS配合
    • PSW—处理器状态寄存器(16)—有用的只有9—3.8标志位操作指令(CF\DF\IF)
      状态标志(ZF、CF、PF、OF、AF、SF)–运算才影响----反应的是ALU运算后、结果的状态
      控制标志-----用来控制CPU的运行状态
      • DF(方向控制)—CLD;DF=0----STD;DF=1
      • IF(中断允许)—外部可屏蔽----
      • TF(陷阱、单步标志)–DEBUG

存储器和IO组织

存储器地址空间与数据存放格式

  1. 地址空间
    • A19-A16,A15-A10,A9-A0
    • 给外部变址20-1M,IO:16-64k
    • 在pc机中,给IO分配A9-A0–10–1K—前512(主板上的IO)(000H-1FFH)–后512(给插件板上)(200H-3FFH)
  2. 数据存放格式
    • 字节型、字型、双字型
    • 字节型数据:一个地址单元,定义在存储器中的DS段,DB(字节型定义伪指令)—如何编译
    • 字型数据:DW------对准(高低同时写/读)与未对准(在各个时序中通过)–时间周期是2倍
    • [BX BP SI DI]----所存的地址;BX BP SI DI—它本身
  3. 存储器的分段与物理地址的形成
    • 为什么要分段----20根地址线—16位地址寄存器
    • 如何分—每个逻辑段最大64K,每个逻辑段的起始地址必须可以被16整除
    • 物理地址—实际存在的地址----0000 0–0001 0----0段、1段、2段、。。。65535段
    • 段的段首单元的地址----段基址:偏移地址(段内偏移地址、相对于段基址偏移)----0 0000:0000H
    • 由于段相互有叠加,所以一个单元的逻辑地址可能不同,但是物理地址一定
    • 程序、调试都是逻辑地址
    • 物理地址(PA)的形成----> 物理地址=段基址X16(左移加个0)+段内偏移地址(段内有效地址)

  1. 取指令操作
    • CS(段基地址)X16+IP(段内偏移地址)------>取指令所存储的PA----无条件转移
    • 堆栈操作(SS:SP+2) 和 数据操作(DS+IP)
  2. 各类指令的地址信息
  3. 实际上汇编后在存储器内不会重叠----当前段

8086指令系统

汇编语言指令

  1. 名词解释
  • 指令—一种二进制代码(机器码)
  • 指令系统–CPU能识别的所以指令集合
  • 机器语言–指令代码语言
  • 机器语言程序–
  • 汇编语言–符号化语言 如:B0 12—MOV AL,12
  • 汇编语言源程序
  • 汇编–将汇编语言翻译机器语言的过程–masm.exe
  • 反汇编–将机器语言翻译成汇编语言
  • .ASM—.OBJ–(连接)----.exe
  1. 8086汇编语言程序中语句的种类
  • 指令语句—CPU可以执行的语句(汇编后可以汇编成二进制)
  • 伪指令语句–CPU不可以执行的语句(不会成二进制)
  • 宏指令语句–本身是8086指令系统没有的指令,是用户用宏定义伪指令的指令语句–类似于函数
  1. 汇编语言中语句的组成
  • 变量名(标号名:) 助记符 操作数 ;注释
  • 地址符号化 DATA1—变量名
  1. 汇编语言中的常数及表达式
  • 十进制常数、十六进制常数、字符常数、字符串常数、?(随机数)
  • 表达式–操作符—算数操作符、逻辑操作符、关系操作符、属性操作符、其他操作符
  1. 标号、变量及伪指令
  • NEXT:----标号–一定定义了,就具有3个属性—段地址属性(SEG)—段内偏移地址属性(OFFSET)—类型属性(TYPE)
  • MOV BX,OFFSET NEXT //属性表达式的值是十六位的常表达式
  • TYPE:NEAR—近程(段内转)-- -1;FAR–远程(段间)-- -2;
  • 变量:DB–定义字节型—1;DW—字型----2;DD—双字型—4;
  • 变量一定定义就有五个属性:段地址属性、段内偏移地址属性(OFFSET)、类型属性、长度属性(LENGTH)、大小属性(SIZE)
  • 在MASM.EXE中有一个$位置计数器,汇编过程中指向存储的位置,16位
  • DATA6 DW DATA3—DATA的OFFSET;–DD—OFFSET+SEG
  • DATA8 DB 4 DUP(?);DUP操作符:重复操作符,允许嵌套
  • 长度属性: 在变量名定义语句中,所定义的变量的个数,8086规定如果有GUP操作,长度就是DUP的前的数值;其他的变量定义就是1
  • 大小属性:所有变量所占的总的字节数,变量数字节数(TYPELENGTH)
  • 其他操作符就是PTR操作符----MOV AL,DATA1+2;类型不一致,汇编会出错–类型要强制转换,属性临时修改操作符
  • MOV [BX] 10H;错误----MOV TYPE PTR [BX] 10H

  1. 指令的分类(课本P31)
  2. 数据与转移地址的寻址方式
  • 寻址方式:求操作数所在地(寄存器、立即数)或所在存储器单元地址的方法
  • 求得的操作数当作成数据 或 用作转移地址用(IP:段内、IP+CS:段间)
  • 寻找数据的寻址方式(取操作数—源操作数,存数据–目的操作数)
    1. 立即数寻址–常数形式;MOV AX,1234H;立即数–只能做源操作数
    1. 寄存器寻址—MOV AX,BX—数据在BX寄存器中; MOV AX,CL;类型不一致,错误—寄存器寻址类型要一致
      MOV [0200H],56H;错误,没有明确给出存储单元的类型—MOV WORD PTR [0200H],56H;
      MOV DS,1500H;错误----==当DS\ES\SS做DST时,SRC不能为立即数,立即数寻址;==MOV AX,1500H;MOV DS AX;
      MOV CS;CS\IP不能做DST;人为无法改变;程序自动改变;但是可以做SRT
    1. 存储器寻址—书上的3-7;要寻找的OPR在存储器某单元中;要知道这个单元的地址,存储操作数的单元的EA(有效地址),可以由以下5种寻址方式求得
 > 1. 直接寻址
 > 2. 寄存器(REG)间接寻址  [BX\SI\DI]:操作数
 > 3. REG相对寻址 [BX\BP\SI\DI]+8\16位DISP(相对位移量)
 > 4. 基址、变址选址  --两部分组成---[BS\BP][SI\DI]
 > 5. 基址、变址且相对寻址--三部分组成--[BS\BP][SI\DI]+8\16位DISP

 > 1. 直接寻址:操作数所在存储单元的有效地址(EA)指令中直接给出
 > 1. MOV AL,[2000H];把DS:2000H存储单元的操作数直接给AL,一般会把操作数所在的存储单元符号化---也就是变量---变量具有5个属性
 > 1. ==两个存储器单元之间不能直接操作,传送、算数都不可以;需要通用寄存器作为桥梁过渡==
 > 1. PTR临时改变属性操作,会影响相邻存储单元,MOV WORD PTR DATA1(DB) AX;
 
 > 2. 寄存器间接寻址:EA = 地址寄存器间接给[BX\SI\DI]----默认在DS段内
 > 2. MOV BX,OFFSET DATA1;----(BX)<---DATA1的有效地址
 > 2. MOV AL,[BX];REG间接寻址
 > 3. REG相对寻址:EA = [BX\BP\SI\DI]+8\16位DISP(相对位移量);DISP为常数时[BX\SI\DI]默认DS;[BP]默认SS;
 > 3. EA = [BX]+3;[BX+3];3[BX];
 > 3. MOV BX,0;MOV AL,00H;MOV DATA1[BX] AL;  DS:(OFFSET DATA1(16位) + (BX))就是EA
 > 3. BP的相对寻址默认在SS段可以在堆栈中读取数据,而不破环SP
 > 4. 基址、变址寻址:EA = [BX\BP][SI\DI];数据默认看[BS\BP]
 > 4. MOV [BX][SI],AL;
 > 5. 基址、变址且相对寻址:EA = [BX\BP][SI\DI]+8\16位DISP;DISP为常量,以[BX\BP]为准;DISP为变量时,OFFSET DATA 16位;以变量位置为准
    1. 隐含寻址:PUSH AX;(SP)-2---->SP;(SS:(SP))<----(AX);
    1. 变量不可以在指令中运算

本篇截止于第三章数据与指令的寻址方式

相关标签: 专业学习笔记