微机原理与接口技术全套课件完整版电子教案最新板_第1页
微机原理与接口技术全套课件完整版电子教案最新板_第2页
微机原理与接口技术全套课件完整版电子教案最新板_第3页
微机原理与接口技术全套课件完整版电子教案最新板_第4页
微机原理与接口技术全套课件完整版电子教案最新板_第5页
已阅读5页,还剩544页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一章 微型计算机系统概述微机原理与接口技术第一章 微型计算机系统概述概述 微处理器 微型计算机及微型计算机系统计算机中数的表示和编码计算机的发展第一代 电子管时代(1946-1958) 耗电高,体积大,定点计算,机器语言,汇编语言第二代 晶体管时代(1958-1965) 变集中处理为分级处理,浮点运算、高级语言第三代 中小规模集成电路时代(1965-1970) 存储容量大,运算速度快,几十至几百万次/秒第四代 大规模、超大规模集成电路时代(1971至今) 向大型机和微型机两个方向发展现代计算机发展方向 巨型化,微型化,网络化,智能化,多媒体化 1-1 概述 经历了4位机、8位机、16位机至高

2、性能的32位机,64 位机正在广泛应用。 微型计算机的发展 应用领域科学和工程计算 密码破译,天气预报,地质勘探,卫星轨道计算工业控制 机器人以及各种自动化装备,温度调节,阀门控制辅助设计/分析/制造/教学 机械CAD,建筑CAD,CAE,CAM,CAI数据处理 数据库管理,企业信息管理,统计汇总、办公自动化智能模拟 人工智能、专家系统、自学习 1-2 微处理器 微处理器微处理器 中央处理器:运算器和控制器合在一起称中央处理器。 微处理器:利用超大规模集成电路技术把运算器和控制器集成在一片硅片上形成微处理器,即CPU。一般由算术逻辑单元、累加器和通用寄存器组、程序计数器、数据地址锁存器缓冲器、

3、时序和控制逻辑部件及内部总线等组成。 微处理器结构CPU的主要功能是取出指令、分析、并执行指令,也就是不断地从存储器中取出指令和操作数,完成指令所规定的操作工作。 1-2 微处理器 微处理器1-2 微处理器 微处理器1)算术逻辑单元ALU:进行各种算术运算和逻辑运算。2)累加器和通用寄存器组 :保存参加运算的数据和运算的 中间结果。累加器是特殊的寄存器,它既向ALU提供操作 数,又接收ALU的运算结果。3)CPU中有一些专用寄存器(如程序计数器PC、堆栈指针 SP和标志寄存器FR等)。4)程序计数器用来存放下一条要执行的指令地址。1-2 微处理器 微处理器5)堆栈指针SP:用来存放栈顶地址。堆

4、栈是一种特殊的存 贮区域,按照“先进后出”的原则工作。6)标志寄存器:存放指令执行结果的特征和处理器的状态。7)指令译码器:对指令进行译码,产生相应的控制信号 送至时序和控制逻辑电路,组合成外部电路工作所需 要的时序和控制信号。1-2 微处理器 微处理器 指令执行的基本过程:(1)开始执行程序时,程序计数器中保存第一条 指令的地址,指明当前将要执行的指令存放 在存储器的哪个单元。(2)控制器: a) 将程序计数器中的地址送至地址寄存器MAR。 b) 发出读命令。(3)存储器:根据地址取出一条指令。 1-2 微处理器 微处理器 (4)指令译码器译码,控制逻辑阵列发操作命令,执行指 令操作码规定的

5、操作。 (5)修改程序计数器的内容。1-2 微处理器 微处理器 微型计算机工作过程。 1.取指令 2.执行指令 3.取指令 4.执行指令1-2 微处理器 指令流水线 CPU主要功能:取指令、对指令进行译码和执行指令 传统结构CPU执行程序时,取指令与执行指令交替进行: 为提高CPU的工作效率,采用指令流水线技术,各个部件并行工作,减少了指令的平均执行时间 1-2 微处理器 指令流水线80868088CPU二级流水线:Fetch1-2 微处理器 指令流水线PC指向正被取指的指令,而非正在执行的指令ARM7TDMI核采用了3级流水线 复杂指令集计算机 CISC处理器的主要特点 指令集庞大,指令的长

6、度不相同,指令译码步骤较复杂等为何形成CISC处理器? 为高级语言编程方便和提高程序的运行速度,用接近高级语言的语句的机器指令来帮助软件设计 硬件成本的不断下降,软件成本的不断提高。 程序兼容性的需求 1-2 微处理器 CISC与RISC 精简指令集计算机 提出背景:使用指令的80,只占处理器指令集的20RISC的基本思想 简化指令功能,指令集中只包含使用频度高、功能简单、能够在一个节拍内执行完成的指令 将较复杂的功能用一段子程序来实现 大量使用寄存器,优化 CPU的控制逻辑,提高程序执行的速度 问题:软件开发变得复杂;性能依赖于编译器的有效性等 1-2 微处理器 CISC与RISC 1-3

7、微型计算机及微型计算机系统1-3-1微型计算机微型计算机 微型计算机由CPU、存储器、输入输出接口及系统总线组成。微机与外部交换信息通过总线控制。外部采用三总线结构AB、DB、CB。内部采用单总线 , 即内部所有单元电路都挂在内部总线上,分时使用总线。1-3-1 微型计算机1、总线及存储器 系统总线包括数据总线DB、地址总线AB和控制总线CB。 地址总线:传送地址信息,单向。其位数决定了CPU可以直接寻址的内 存空间、I/O口数目。 A15A0,可寻址216=64KB内存单元 。A7A0,可寻址 28=256外设接口。数据总线:传送数据,双向。其位数和微处理器的位数相对应。控制总线:传输控制信

8、号。 1-3-1 微型计算机存储器1)存储器是用来存储数据、程序的部件。按照存储器与CPU的关系,分为内存储器(主存储器)和外存储器。按其工作方式,又可分为随机存储器和只读存储器。2)三级存储体系结构 :高速缓冲存储器、内存储器和外存储器 1-3-1 微型计算机输入输出设备和接口: 外设: 计算机中除主机以外的其它机电或电子设备统 称外部设备,简称外设。 I/O接口:CPU和外设之间的IO适配器,是微型计算机 的重要组成部件。1-3-1微型计算机2、微型计算机分类 从微型计算机的结构形式来分,为单片机、单板机和多板机。 单片微型计算机(即单片机)。把微型计算机的主要部件CPU、一定容量的存储器

9、、IO接口及时钟发生器集成在一块芯片上的单芯片式微型计算机。具有体积小、指令系统简单、性价比高等优点,广泛应用于工业控制、智能仪器仪表等领域。 单板微型计算机,即单板机。是将微处理器、一定容量的存储器、输入输出接口、简单的外部设备、辅助设备通过总线装配在一块印刷电路板上的微型计算机。主要用于实验室以及简单的控制场合。 1-3-1 微型计算机 多板微型计算机也叫系统机。是将单板机模块、存贮器模块和IO接口等模块组装在一块主机板上,通过主机板上的系统总线和各种外设适配器连接键盘、显示器、打印机、光驱、软、硬盘驱动器,配上电源。将主机板、软、硬盘驱动器等安装同一机箱内,适配器、适配卡插在总线扩展槽上

10、,通过总线相互连接,就构成多板微型计算机,配上系统软件即构成微型计算机系统。个人计算机就是多板微型计算机系统。1-3-1 微型计算机 按照微型计算机数据总线的宽度,也就是按照在一次操作中所能传送的二进制位数的最大值来进行划分,可分为4位、8位、32位、64位机。 按照微型计算机的应用,又可将微型机分为通用机和专用机。1-3-1 微型计算机1-3-2 微型计算机系统 微型计算机系统 以微型计算机为主体,配上系统软件和外部设备以后, 就构成完整的微型计算机系统。 1-3-2微型计算机系统1-3-2 微型计算机系统 性能指标: 1)字长:微型计算机能够直接处理的二进制数据的位数, 反映一台机器的计算

11、精度。 2)主存容量:主存贮器所能存贮的信息总量为主存容量。是衡量计算机处理能力大小的一个重要指标。 表示主存容量有两种方法:用字节数表示;用单元数字长表示。1-3-2 微型计算机系统3) 主频:主时钟信号的频率称为计算机主频,用于协调计算机操作。决定计算机的处理速度,频率越高,处理速度越快。4) 运算速度:计算机每秒钟运算的次数。5) 系统可靠性:指计算机系统在规定的时间和工作条下正常工作而不发生故障的概率。计算机系统的可靠性含系统的可维护性和可用性,三者构成计算机系统的可靠性指标。 1-3-2 微型计算机系统6)系统的兼容性:兼容性指一种计算机中的设备和程序可 以用于其他多种系统中的性能,

12、分硬件兼容和软件兼容。7)性能价格比:是计算机产品性能优劣的综合性指标。包 括计算机硬件和软件的各种性能。1-4 计算机中数的表示和编码 1-4-1计算机中常用的数制及其转换一.进位计数制的表示方法 十进制ND十个数码:09,逢十进一。例 1234.5=1103 +2102 +3101 +4100 +510-1加权展开式以10为基数,各位系数为09。一般表达式:n:整数位数,m:小数位数,ai :取值范围0-9 二进制NB两个数码:0、1, 逢二进一。例 1101.101=123+122+021+120+12-1+12-3 加权展开式以2为基数,各位系数为0、1。一般表达式: 1-4-1 计算

13、机中的进位计数制八进制No八个数码:0、1、2、3、4、5、6、7 逢八进一。 例 1101.101=183+182+081+180+18-1+18-3 加权展开式以8为基数,各位系数为0 7。 一般表达式:1-4-1 计算机中的进位计数制 十六进制NH十六个数码09、AF,逢十六进一。例:DFC.8=13162 +15161 +12160 +816-1 展开式以十六为基数,各位系数为09,AF。一般表达式:1-4-1 计算机中的进位计数制1-4-1 计算机中的进位计数制小节每一计数制有一确定的基数R,系数ai有R种可能的取值“逢R进一”小数点右移一位相当于乘R;反之相当于除以R二. 进位计数

14、制之间的转换R 进制数转换为十进制数:按权展开,求和 例:1011.1010B=123+121+120+12-1+12-3=11.625DFC.8H =13162+15161+12160+816-1 = 3580.5十进制数转换为R进制数:整数和小数部分分别进行转换 1、整数部分 “除R取余”:十进制整数不断除以转换进制基数,直至商为 0。每除一次取一个余数,从低位排向高位。二. 进位计数制之间的转换例:39转换成二进制数 39 =100111B2 39 2 19 1 ( b0) 2 9 1 ( b1) 2 4 1 ( b2) 2 2 0 ( b3) 2 1 0 ( b4) 0 1 ( b5

15、)二. 进位计数制之间的转换2、小数部分 “乘R取整”:用转换进制的基数乘以小数部分,直至小 数为0或达到转换精度要求的位数。每乘一次取一次整数,从最高位排到最低位。例: 1、0.625转换成二进制数0.625 2 1.250 1 (b-1) 2 0.5 0 0 (b-2) 2 1.0 1 (b-3) 0.625 = 0.101B二. 进位计数制之间的转换二进制与八进制、十六进制之间的转换 八进制 二进制:一位八进制数用三位二进制数表示。 十六进制 二进制:一位十六进制数用四位二进制数表示。 二进制 八进制:从小数点开始,分别向左右两边把三位二进 制数码划为一组,最左和最右一组不足三位 用0补

16、充,然后每组用一个八进制数码代替。 二进制 十六进制:与八进制类似,但是四位分为一组。1-4-2 带符号数的表示无符号数和带符号数 无符号数:机器的全部有效位均用来表示数的大小,如 N01001 表示无符号数9 带符号数:机器中,最高位作符号位(数的符号用“0”、 “1” 表示), 其余位为数值位。机器数与真值 机器数:机器中数的表示形式,如原码、反码、补码。 真值: 机器数所代表的实际数值 例:一个8位机器数与它的真值对应关系: 真值: X1=+84=+1010100B X2=-84= -1010100B 机器数:X1机= 01010100 X2机= 110101001-4-2 带符号数的表

17、示原码 最高位为符号位,0表示正数,1表示负数。数值位与真值数值位相同。例:真值: x1 = +1010100B x2 = 1010100B 机器数:x1原 = 01010100 x2原 = 11010100 特点: 1、表示简单、直观。 2、0的表示不唯一,即真值0有两种不同的表示形式,0 或 -0。 0原=0.000 -0原=1.000 3、加减运算复杂。 正数的反码与其原码相同。 负数反码符号位为 1,数值位为原码数值各位取反。例: 8位反码机器数 x= +4: x原= 00000100 x反= 00000100 x= -4 : x原= 10000100 x反= 11111011 x=

18、+0: x原= 00000000 x反= 00000000 x= -0 : x原= 10000000 x反= 11111111 x= +127: x原= 01111111 x反= 01111111 x= -127 : x原= 11111111 x反= 100000001-4-2 带符号数的表示反码1-4-2 带符号数的表示补码 数的补码与“模”有关 “模”:计数系统的量程 X补= MX (mod M) 当X0,M丢掉, X补=X 当X0,X补= M+X=M-X。 正数的补码与原码相同;负数的补码为其反码加1。 例:8位二进制数的模为: 28 = 256 当X减数,即54 24 例:比较120与

19、-74的大小 解:120-(-74)=124+74 01111000 01001010 011000010 OF=1,SF=1,则被减数减数,即120 -74对有符号数的比较操作,若与的值相同,则被减数比减数大,否则被减数比减数小.3.2.2算术运算指令例:比较24与54的大小 解:24-54=24+(-54) 00011000 24的补码 +11001010 -54的补码 11100010 OF=0,SF=1,则被减数减数,即24 54 例:比较-24与120的大小 解:-24-120=-24补+ -120补 11101000 = -24补 + 10001000 = -120补 101110

20、000 OF=1,SF=0,则被减数减数,即-24 ) JAE/JNA OPRD 高于等于或不低于转移 (=)JB/JNAE OPRD 小于或不大于等于转移 ()JBE/JNA OPRD 小于等于或不大于转移 ()JGE/JNL OPRD 高于等于或不低于转移 (=)JL/JNGE OPRD 小于或不大于等于转移 ()JLE/JNG OPRD 小于等于或不大于转移 (=)带符号数比较转移指令 测试转移指令JCXZ OPRD :CX=0 时转移 子程序调用和返回指令子程序是完成特定功能的一段程序当主程序(调用程序)需要执行这个功能时,采用CALL调用指令转移到该子程序的起始处执行当运行完子程序功

21、能后,采用RET返回指令回到主程序继续执行CALL labelRET主程序子程序子程序调用和返回指令1.调用指令(1)段内调用: CALL NEAR PTR OPRD 操作:SP=SP-2,(SP)+1),(SP)=IP, IP=IP+16位位移量 CALL指令首先将当前IP内容压入堆栈,然后转入子程序。(2)段间调用:CALL FAR PTR OPRD 操作:SP=SP-2,(SP)+1),(SP)=CS; SP=SP-2,(SP)+1),(SP)=IP; IP=EA;CS=EA+2 CALL指令先把CS压入堆栈,再把IP压入堆栈, 然后转入子程序。例:CALL NEARBX ;段内调用CA

22、LL FAR1000 ;段间调用子程序调用和返回指令2. 返回指令(1) 段内返回: RET IPSS:SP, SPSP2从栈顶弹出一个字送到IP,栈顶指针SP+2(2) 段间返回: RET, RETF IPSS:SP,SPSP2 CSSS:SP,SPSP2从栈顶弹出第一个字送到IP,SP+2,再弹出一个字送到CS,SP+2(3) RET n与RET相同,SP+2(4)后,再使SP加上n循环控制指令 对于需要重复进行的操作,微机系统可用循环程序结构来进行,8086/8088系统为了简化程序设计,设置了一组循环指令,这组指令主要对CX或标志位ZF进行测试,确定是否循环 指令格式 执行操作 LOO

23、P OPRD CX=CX-1;若CX0,则循环 LOOPNZ/LOOPNE OPRDCX=CX-1,若CX0 且ZF=0,则循环 LOOPZ/LOOPE OPRD CX=CX-1,若CX0 且ZF=1,则循环 循环控制指令 例: 有一首地址为ARRAY的M个字数组,试编写一段程序,求出该数组的内容之和(不考虑溢出),并把结果存入TOTAL中,程序段如下: MOV CX,M ;设计数器初值 MOV AX,0 ;累加器初值为0 MOV SI,AX ;地址指针初值为0START:ADD AX,ARRAYSI ADD SI,2 ;修改指针值(字操作,因此加2) LOOP START ;重复 MOV T

24、OTAL,AX ;存结果 中断指令中断(Interrupt )是又一种改变程序执行顺序的方法.中断请求可以来自处理器外部的中断源,也可以由处理器执行指令引起例如执行INT 20H指令。8086可以管理256个中断.各种中断用一个向量编号来区别.中断向量表(0:0 0:3FFH) 存放中断程序的入口地址。中断请求断点IRET主程序中断服务程序中断指令软件中断指令格式:INT n操作:(1) 标志寄存器压入堆栈;(SP-2)(2) 清中断允许标志IF及单步跟踪TF(3) 将主程序下一条指令地址(断点地址)的段值及偏移量入栈; (SP-4)(4) 将存放在地址为 0:(n*4)处的中断程序的入口地址

25、从中断向量表中读出,并放入IP及CS,CPU转入中断服务程序。软件中断返回格式:IRET操作:从堆栈恢复断点地址;恢复标志寄存器内容中断指令软件中断有:除法错中断:执行除法指令,结果溢出产生的 0 号中断(相当于INT 00H)指令中断:执行中断调用指令INT n 产生的 n 号中断断点中断:用于断点调试(INT 3)的 3 号中断溢出中断:执行溢出中断指令(INTO),OF1产生的 4 号中断单步中断:TF1在每条指令执行后产生的 1 号中断 (相当于INT 01H)3.2.5 标志处理和CPU控制类指令 标志处理指令用来控制标志,主要有CF、DF和IF三个。处理器控制指令用以控制处理器的工

26、作状态,均不影响标志位我们仅列出了一些常用指令:STC:置进位标志,CF=1CLC:清进位标志,CF=0CMC:进位标志取反CLD:清方向标志,DF=0STD:置方向标志,DF=1CLI:关中断标志,IF=0,不允许中断STI:开中断标志,IF=1,允许中断3.2.5 标志处理和CPU控制类指令CPU控制类指令HLT: 使处理器处于停止状态,不执行指令WAIT:使处理器处于等待状态,TEST线为低时,退 出等待ESC: 使协处理器从系统指令流中取得指令LOCK:封锁总线指令,可放在任一条指令前作为前 缀NOP:空操作指令,常用于程序的延时和调试3.3 ARM指令系统简介ARM处理器指令系统的特

27、点ARM处理器寻址方式的特点ARM处理器指令系统3.3.1 ARM指令系统特点ARM处理器核有两种指令集32位的ARM指令集16位的Thumb指令集(Thumb指令集是ARM指令集的子集,可随时在两种指令集中进行切换)指令长度固定所有指令有相同的基本格式: S, ,opcode为指令操作码,cond为执行条件,S表示该指令的执行是否影响CPSR寄存器的值(若写上则影响CPSR),Rd为目的操作数(寄存器),Rn为第一源操作数(寄存器),operand2 为第二个操作数。“”符号内的项是必需的,“”符号内的项是可选的。 3.3.1 ARM指令系统特点所有指令均可有条件执行执行条件(cond)表示

28、指令执行的前提条件: 条件码助记符(cond)CPSR标志位状态含义EQZ=1相等NEZ=0不相等CS/HSC=1无符号数大于或等于CC/LOC=0无符号数小于例: 指令“ADD EQ R0, R1, R2”在执行时首先检查CPSR中的Z标志位,只有在Z=1时才执行指定的加法运算。 转移指令+条件域 条件转移指令算术/逻辑运算只针对寄存器操作数存储器中的操作数先取到寄存器中 3.3.2 ARM寻址方式的特点立即寻址ARM指令长度32,留给”立即数”操作数的位数只有12位. 该立即数空间分为两段:一段为8位立即数(immed_8),另一段4位为循环移位的位数(rotate_imm)。32位立即数

29、按如下方式求得: immed_8 循环右移(2rotate_imm)位出现在指令中的立即数若能按上述计算得到,就是合法的立即数;反之不合法.有:直接寻址,寄存器寻址,寄存器间接寻址,寄存器变址寻址等.3.3.2 ARM寻址方式的特点带移位预处理的寄存器寻址方式当第一源操作数是寄存器寻址时,第二源操作数可以指定第一源操作的移位方式和移位位数: MOV R0, R2, LSL #3 ;R2逻辑左移3位R0移位类型ASR #n (算术右移n位)LSL #n (逻辑左移n位)LSR #n (逻辑右移n位)ROR #n (循环右移n位)RRX #n (带扩展的循环右移n位:在数据的最高位与最低位之间添加

30、CPSR中的进位标志C)3.3.2 ARM寻址方式的特点寄存器变址寻址可自动改变基址寄存器的内容LDR R0, R1, #4 ; (R0) R1+4(执行后R1内容不变)LDR R0, R1, #4! ; (R0) R1+4, 之后R1R1+4LDR R0, R1, #4 ; (R0) R1, 之后R1R1+43.3.3 ARM处理器指令简介加载指令LDR及存储指令STRLDR指令从内存中取出数据加载到寄存器STR指令将寄存器内容存储到内存的指定地址。 指令格式: LDRT, 加载指定地址上的数据(字),放人Rd中, STRT ,存储Rd中的数据(字)到指定地址的存 储单元。若指令含 T, 则

31、即使处理器是在特权模式下,存储器系统也将该访问看成是处理器处于用户模式下.3.3.3 ARM处理器指令简介LDR/STR指令中的地址指明存储器地址,可用各种寻址方式:LDR R1, R0 寄存器间接寻址LDR R1, R0,#0 x5 寄存器变址寻址LDR R1, R0, R2, LSL #2 寄存器变址寻址 (R2左移2位后作为偏移量来使用)ARM还提供批量的加载/存储指令.可将内存中一批连续地址单元的内容,通过一条指令加载到若干寄存器中;或将若干寄存器的内容通过一条指令存储到内存一批连续地址单元.3.3.3 ARM处理器指令简介跳转指令(1)普通的跳转指令B B label BL labe

32、l 例: BEQ NEXT ; 相等时(Z=1)跳转(2)带连接的跳转指令BL BL label 执行时,先将下一条指令地址拷贝到连接寄存器R14,然后转到指定地址处.类似于8086子程序调用指令,但返回地址不用堆栈,也没有子程序返回指令,子程序结束时需将R14PC.B及BL的跳转限制在当前指令的32MB范围内 3.3.3 ARM处理器指令简介(3)带状态切换的跳转指令BX BX Rm 若Rm的第0位为1,则自动将CPSR中的标志T置1把目标地址的代码解释为Thumb代码(处理器处于Thumb状态);否则自动将CPSR中的标志T置0把目标地址的代码解释为ARM代码. 3.3.3 ARM处理器指

33、令简介数据传送指令用于在寄存器之间传送数据.(1)MOV MOV s , 功能: 将operand2传送到目的操作数Rd.若指令带S标志,则根据目的操作数Rd的结果影响CPSR中的标志位.(2)MVN MVN s , 功能: 在数据传送前,先将第二源操作数operand2按位取反,然后再送目的操作数Rd中. 3.3.3 ARM处理器指令简介运算指令均针对寄存器进行操作.(1)算数运算指令 包括:加法指令ADD,带进位加法指令ADC,减法指令SUB, 带借位减法指令SBC,乘法指令等.(2)逻辑运算指令 包括:与AND,或ORR, 异或EOR, 位清除指令BIC等.(3) 测试与比较指令 包括:

34、与测试TST,异或测试TEQ; 比较CMP,负数比较CMN(减求反后的操作数) 3.3.3 ARM处理器指令简介异常产生指令(1)SWI软件中断指令 SWI immed_24 immed_24为24位立即数,值为016777215(a)用于产生软件中断 SWI指令执行后,程序自动转到0 x00000008地址, 同时还会将返回地址存入连接寄存器LR。(b)实现用户模式变换到管理模式 SWI指令执行后,自动从用户模式转换到管理模式 (原来的CPSR保存到管理模式的SPSR中), 这样用户程序就能调用操作系统的系统例程。(C)向软中断服务程序传递参数 指令中的24位立即数就是要传递的参数,其他参数

35、的传递须借助于寄存器. 3.3.3 ARM处理器指令简介(2)BKRT指令 BKRT 用于产生产生软件断点中断,主要用于程序的调试。 在ARM指令中, immed为16位的数. 作业 第四章 汇编语言程序设计主要内容汇编语言程序的结构汇编语言语句类型和组成汇编语言程序设计8学时4.1机器指令/汇编语言/高级语言1、机器指令:计算机能识别的代码,机器指令是由二进制数组成的。 例如对8086/8088: PUSH AX 机器指令为:010100002、汇编语言:汇编语言是一种符号语言,用助记符表示操作码,用符号或符号地址表示操作数或操作数地址,它与机器指令是一一对应的。3 、高级语言:面向过程(如

36、C, FORTRAN)或对象(如C+, Java)的语言,不依赖于机器,因而有很好的通用性和可移植性 汇编语言与高级语言的比较特 征汇编语言高级语言目标程序运行时间短长程序运行时占用的存储空间小大直接访问硬件的能力强弱程序可读性和可维护性差强程序开发的复杂程序高低程序的可移植性差强对硬件环境和软件的兼容性差强4.1 机器指令/汇编语言/高级语言 文件名.ASM 文件名.OBJ 文件名.EXE汇编语言源程序 汇编目标程序连接执行/调试程序编辑程序EDIT.EXE汇编程序MASM.EXE连接程序LINK.EXE8086汇编语言程序的开发过程4.1机器指令/汇编语言/高级语言ML 文件名.ASM 8

37、086汇编语言程序的开发过程1. 源程序的编辑:源程序文件要以ASM为扩展名源程序文件的形成(编辑)可以通过任何一个文本编辑器实现: 如DOS中的全屏幕文本编辑器EDIT2. 源程序的汇编汇编是将源程序翻译成由机器代码组成的目标模块文件的过程. MASM 6.x提供的汇编程序是ML.EXE:ML /c hello.asm如果源程序中没有语法错误,MASM将自动生成一个目标模块文件(hello.obj);否则MASM将给出相应的错误信息, 这时应根据错误信息,重新编辑修改源程序后,再进行汇编 8086汇编语言程序的开发过程3.目标模块的连接连接程序能把一个或多个目标文件和库文件合成一个可执行程序

38、(.EXE、.COM文件):LINK hello.obj如果没有严重错误,LINK将生成一个可执行文件(hello.exe).ML汇编程序可自动调用LINK连接程序,实现汇编和连接的依次进行ML hello.asm汇编程序ML.EXE可带其他参数,常用ML /Fl /Sa hello.asm该命令除产生模块文件hello.obj和可执行文件hello.exe外,还将生成列表文件hello.lst. 列表文件是一种文本文件,含有源程序和目标代码,对我们学习汇编语言程序设计和发现错误很有用。 8086汇编语言程序的开发过程4.可执行程序的运行与调试经汇编、连接生成的可执行程序在操作系统(DOS)下

39、只要输入文件名就可以运行:hello.exe操作系统装载该文件进入主存,并开始运行。在DOS下运行程序时,COMMAND.COM把.EXE文件装入内存。装入时在数据段内偏移地址0处构造一个100H字节的程序段前缀PSP,然后是代码段/数据段/堆栈段内容。装入后,自动设置DS和ES寄存器指向程序段前缀,CS、IP、SS、SP寄存器设置为由连接程序传过来的值(所以必须在程序中给DS、ES赋值)。PSPDS,ES用户程序区 8086汇编语言程序的开发过程程序结束返回DOS的方法:程序一开始先把PSP的段地址(由DS指向)压栈,把偏移地址0压栈。程序结束时RET指令使得:栈顶0000H-IP,PSP的

40、段地址-CS,将要执行的指令是PSP里的内容,PSP里的前两个字节是指令INT 20H,是DOS中断调用,实现的功能就是“返回DOS”。 START PROC FARPUSH DS MOV AX,0PUSH AX:RETSTART ENDP如果出现运行错误,可以从源程序开始排错,也可以利用调试程序帮助发现错误.采用DEBUG.EXE调试程序:DEBUG hello.exe4.2 8086汇编语言源程序的结构汇编语言的源程序是分段的,由几个段形成一个源程序,每一段有一个段名,以SEGMENT为段开始,以ENDS结束;源程序最后以END作结束;一般有DATA段,CODE段,STACK段;一个段由若

41、干语句组成MY_DATA SEGMENT ;定义数据段SUM DB ? ;为符号SUM保留一个字节MY_DATA ENDS ;数据段结束MY_CODE SEGMENT ;定义代码段ASSUME CS:MY_CODE,DS:MY_DATA;规定CS,DS的内容 PORT_VAL EQU 3 ;端口的符号名GO: MOV AX,MY_DATA ;DS初始化为 MY_DATA MOV DS,AX MOV SUM,0 ;SUM单元为0CYCLE: CMP SUM,100 ;SUM与100比较 JNA NOT_DONE ;若未超过转至NOT_DONE MOV AL,SUM ;若超过把SUM的内容 OUT

42、 PORT_VAL,AL ;通过AL输出然后停机 HLTNOT_DONE: IN AL,PORT_VAL ;输入下一个字节 ADD SUM,AL ;与以前的结果累加 JMP CYCLE ;转至CYCLEMY_CODE ENDS ;码段结束END GO ;整个程序结束4.2 8086汇编语言源程序的结构一、 汇编语言的语句格式由汇编语言编写的源程序是由许多语句(也可称为汇编指令)组成的。每个语句由14个部分组成,其格式是: 标号: 指令助记符 操作数;注解 名字 伪指令助记符 参数;注解其中用方括号括起来的部分,可以有也可以没有。每部分之间用空格(至少一个)分开,一行最多可有132个字符 . 例

43、: 1标号(名字):是给指令或某一存储单元地址所起的名字。可由下列字符组成:字母:A z ; 数字:0 9 ; 特殊字符:?、 、一、$ 。数字不能作标识符的第一个字符,而圆点仅能用作第一个字符。标识符最长为31个字符。当标识符后跟冒号时,表示是标号。它代表该行指令的起始地址;当标识符后不带冒号时,表示变量;伪指令前的标识符不加冒号。2(伪)指令助记符: 表示不同操作的指令,可为8088的指令助记符,或伪指令。3操作(参)数:是指令执行的对象。依指令的要求,可能有一个、两个或者没有. 4注解:该项可有可无,是为源程序所加的注解,用于提高程序的可读性。 RET ;无操作数COUNT: INC C

44、X ;一个操作数COST DB 3,4,5,6,7 ;伪指令,5个操作数MOV AX,BP十4 ;二个操作数4.2 8086汇编语言源程序的结构二、段定义语句与段寻址 一般来说,一个完整的汇编源程序由3个段组成,即堆栈段、数据段和代码段。段定义伪指令可将源程序划分成若干段,以便生成目的代码和连接时将各同名段进行组合。段定义伪指令一般格式为 : 段名 SEGMENT 定位类型 组合类型 类别 段名 ENDS(1)定位类型:用来规定段起始边界的要求,可以为以下四种,缺省为 PARA)PAGE: 16位段地址的最低8位必须为0,即从一页的起点开始。PARA: 16位段地址的最低4位必须为0,即从一段

45、的起点开始。WORD: 16位段地址的最低1位必须为0,即从偶地址开始。BYTE: 16位段地址可以为任意值,即段可以从任何字节开始4.2 8086汇编语言源程序的结构(2)组合类型(表示本段与其他段的关系,为连接程序使用,缺省为NONE):NONE:与其他段不发生关系,每段都有自己的基地址PUBLIC:与其他同名同类别的段连接在一起,使用一个共同的基地址STACK:与PUBLIC同样处理,但作为堆栈段COMMON:与其他同名同类别的段相互重叠在一起,使用一个共同的基地址AT表达式:把本段装在表达式值所指定的段地址上(值为16位;不能指定代码段)MEMORY:把本段定位在所有其他段之上,若有多

46、个则只有连接时遇到的第一个有效, 其余按COMMON处理)(3)类别名:为连接程序使用,把类别名相同的段放在连续的存储区间(一般有STACK、CODE、DATA)。4.2 8086汇编语言源程序的结构段寻址汇编程序必须知道程序的段结构,并知道在指令执行时哪个段由哪个段寄存器指定,这个信息在代码段的开始由ASSEMU语句提供。格式: ASSUME 段寄存器:段名,段寄存器:段名,由于ASSUME伪指令只指明某一个段名对应于哪一个段寄存器,并没有包含将段地址送入该寄存器的操作。因此要将真实段地址装入段寄存器还需用汇编指令来实现。例如,CODE SEGMENT ASSUME CS:CODE,DS:D

47、ATA,SS:STACK MOV AX,DATA ;DATA段值送AX MOV DS,AX ;AX内容送DS,DS才有实际段值CODE ENDS 当程序运行时,由于DOS的装入程序负责把CS初始化成正确的代码段地址,SS初始化为正确的堆栈段地址,因此用户在程序中就不必设置。但是,在装入程序中DS/ES寄存器由于被用作其它用途,因此,在用户程序中必须用两条指令对DS/ES进行初始化,以装入用户的数据段地址。 4.2 8086汇编语言源程序的结构三、过程定义伪指令PROC和ENDP在程序设计中,可将具有一定功能的程序段看成为一个过程(相当于一个子程序),它可以被别的程序调用。一个过程由伪指令PRO

48、C和ENDP来定义,其格式为: 过程名 PROC 类型 过程体 RET 过程名 ENDP 其中过程名是为过程所起的名称,不能省略,过程的类型由FAR(远过程,为段间调用)和NEAR(近过程,在本段内调用)来确定,如果缺省类型,则该过程就默认为近过程。ENDP表示过程结束。过程体内至少应有一条RET指令,以便返回被调用处。过程可以嵌套,也可以递归使用。4.2 8086汇编语言源程序的结构四、定位伪指令ORGORG伪指令规定了在某一段内,程序或数据代码存放的起始偏移地址。 一般格式: ORG 例如:DATA SEGMENT ORG2000H BUFF DB STRING DATA ENDS上述变量

49、定义中,BUFF从DATA段偏移为2000H的单元开始存放。五、汇编程序结束伪指令END 该伪指令表示源程序的结束令汇编程序停止汇编。因此,任何一个完整的源程序均应有END指令。一般格式: END 表达式 其中表达式表示该汇编程序的启动地址。例如: END START ;表明该程序的启动地址为START。4.2 8086汇编语言源程序的结构;title Hello World Program (hello.asm)stacks segment stack stackdw 100h dup(?)stacks endsdata segment ; Contains all variables fo

50、r the programmsgdbHello World!,0Ah,0Dh,$data ends 4.2 8086汇编语言源程序的结构code segment; Contains all codeassume cs:code, ds:data, ss:stacksorg 100hmain proc mov ax, data mov ds, axmov ax, 0900hmov dx, offset msg int 21h mov ax, 4C00h ; terminate the program normallyint 21hmain endpcode endsend main4.3 常量、

51、变量和标号(1) 常量 二进制: 10111001B 十进制: 1234D或1234 八进制: 255Q或255O 十六进制: 3A5DH, 第一位为字母时前面加数字0 字符串常数:用单引号括起来的一个或多个字符组成一个字符串常数,例如:The 在内存中以字符的ASCII码值存放,注意一个空格也是一个字符。如The ,在内存中是:54H、68H、65H和20H。 4.3 常量、变量和标号(2)变量:代表存放在某些存储单元的数据。这些数据在程序运行期间随时可以修改。变量有三个属性:段属性、偏移属性和类型属性(所具有的字节数)。(3) 标号 标号是一条指令的目标代码的符号地址,它常用作转移指令(或

52、子程序调用指令)的操作数。标号有三个属性:段属性、偏移属性和类型属性。段属性是该标号的段地址,偏移属性是该标号的偏移地址,类型属性是表示该标号的范围是本段(NEAR)或段间(FAR),或称为近或远属性。 4.4 8086汇编其它常用伪指令格式1: 变量名 伪指令名 表达式1,表达式2, 这里伪指令可为DB, DW, DD, 表达式有以下几种情况: 数值表达式 例: DA_BYTE DB 50H , 50 , 0caH DA_WORD DW 0a3f1H , 498dH A1 DD 12345H ; Memory: 45H,23H,01H,00H ? 表达式,不带引号的?表示可预置任何内容 例:

53、 DA_B DB ? , ? ;要求分配两个字节单元 DA_W DW ? , ? ;要求分配两个字单元 字符串表达式 数据项可以写成字符串形式,但只能用DB、DW、DD定义,而且DW、DD语句定义的串只允许包含两个字符。4.4.1 数据定义伪指令 例: S1 DB ABCDEF S2 DW AB, CD, EF S3 DD AB, CD 这几个变量在存储器中存放情况如下: S1 41H S2 42H S3 42H 42H 41H 41H 43H 44H 00H 44H 43H 00H 45H 46H 44H 46H 45H 43H 00H 00H 注意:定义多于两个以上字符的字符串时,只能使

54、用DB伪指令,不能使用DW和DD等伪指令。4.4.1数据定义伪指令格式2:变量名 伪指令名表达式DUP(表达式) 用于定义重复的数据或分配一数据块空间例:D_B1DB 20H DUP(?) ;保留20H个字节 D_B2 DB 10H DUP(ABCD);字符串ABCD 重复10H次 D_W1 DW 10H DUP(4) ;字4重复10H次 4.4.2符号定义语句1. 等值语句EQU给符号定义一个值或别的符号名,或一条可执行的指令。例:NEW_PORT EQU 32 COUNT EQU CX CBD EQU AAD一个符号一经EQU赋值后,不能重新再定义。2. 等号(Equal Sign) 语句

55、与EQU类似,使用它能对符号进行再定义。例:B1 = 6 ; B1定义为6 B1 = 10 ;B1重新定义为10 4.5 8086汇编语言表达式和运算符表达式: 由常数、操作数、操作符和运算符组成。有六种运算符: 算术运算符、逻辑运算符和关系运算符、分析运算 符、综合运算符和分离运算符。 1、算术运算符 +、*、/、MOD(取余)、SHL(左移)、SHR(右移) 例: 32 MOD 5 ;结果为2 21H SHL 2 ;结果为84H 2、逻辑运算符(按位操作) AND(与) 24H AND 0FH = 04H OR (或) 24H OR 0FH = 2FH XOR (异或) 24H XOR 0

56、FH = 2BH NOT (非) NOT 24H = 0DBH 4.5 8086汇编语言表达式和运算符3、关系运算符 关系运算是逻辑判定,当为真时结果为全1(0FFFFH),为假时结果为全0。 EQ (等于) ;若PP=25,则25 EQ PP = 0FFFFH NE (不等于) ;25 NE PP = 0 LT (小于) ;25 LT 26 = 0FFFFH LE (小于等于) ;25 LE PP = 0FFFFH GT (大于) ;26 GT PP = 0FFFFH GE (大于等于) ;24 GE PP = 0关系运算符一般不单独使用,常与其它运算符结合使用。例如: ADD AX, (p

57、ort GT 60) AND 50) OR (port LE 60) AND 70)当port 的值大于60时,上述指令汇编为 ADD AX, 50当port 的值小于或等于60时,上述指令汇编为 ADD AX, 70 4、分析运算符 把存储器地址操作数分解成它的组成部分: SEG (求段地址), 格式: SEG 符号名 OFFSET(求偏移地址), 格式 : OFFSET 符号名 TYPE (求符号名类型值),格式:TYPE 符号名 SIZE ,求为符号名分配的字节数 格式: SIZE 符号名 回送分配给该符号名的字节数,但此值是LENGTH的值和TYPE的值的乘积。 类型bytewordd

58、wordNEARFAR类型值124-1 (0FFFH)-2 (0FFEH) 4.5 8086汇编语言表达式和运算符 LENGTH,求为符号名分配的项数。 格式: LENGTH 符号名 这里为符号名定义的数据项必须是用 重复格式DUP( )定义的。而对于其他情况则回送1。 例 :K2 DW 10 DUP (?) 则 LENGTH K2 = 10 TYPE K2 = 2 SIZE K2 = 20 例:AARR DW 2,4,6 则 LENGTH AARR = 1, TYPE AARR = 2 SIZE AARR = 2可以看出: SIZE = ( LENGTH ) * ( TYPE 符号名) 4.

59、5 8086汇编语言表达式和运算符 4.5 8086汇编语言表达式和运算符5、综合运算符(1) 定义符号名为新类型 格式: 类型 PTR 符号名 PTR的功能归纳如下: 保证运算时操作数类型的匹配 例: F1DB16H,38H F2DW1234H,26ABH MOV AX,WORD PTR F1;AX=3816H MOV BL,BYTE PTR F2;BL=34H 4.5 8086汇编语言表达式和运算符 通过PTR指明是字单元还是字节单元 例: MOVBYTE PTR BX,10H;BX为字节单元MOVWORD PTR SI,20H;SI为字单元 用PTR来改变距离属性 例:JMPFAR PT

60、R LLOOP ;段间转移CALLDWORD PTR BX ;远程调用(2)指定新类型 格式: 符号名 EQU THIS 类型 例: LABC EQU THIS BYTE ;LABC是字节类型 LABD DW 4321H, 2255H;LABD是字类型 MOV AL , LABC ;AL = 21H MOV AX , LABD ;AX = 4321H 4.5 8086汇编语言表达式和运算符(3) 分离运算符 取低字节 格式:LOW 符号名 取高字节 格式:HIGH 符号名 例:设SSY=2050H mov al , LOW 3080H ; al = 80H mov ah , HIGH SSY

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论