《微机原理及应用复习200920101.ppt》由会员分享,可在线阅读,更多相关《微机原理及应用复习200920101.ppt(185页珍藏版)》请在三一文库上搜索。
1、微机原理及应用,一、基本知识,1、微型计算机的组成和结构,2、 数制及转换,3、二进制码,1、微型计算机的组成和结构,由运算器、控制器、存储器、输入设备和输出设备五大部分组成,一、基本知识,微型计算机的硬件体系结构,冯诺依曼结构: 由运算器、控制器、存储器、输入设备和输出设备五大部分组成 数据和程序以二进制代码的形式不加区别地存放在存储器中,存放位置由地址指定,地址码也是二进制形式 控制器根据存放在存储器中的指令序列(即程序)工作,并由一个程序计数器(PC)控制指令的执行。控制器具有判断能力,能够根据计算结果选择不同的动作流程,微型计算机的结构,地址总线AB:用来传送CPU输出的地址信号,确定
2、被访问的存储单元、I/O端口。 地址总线的条数决定微处理器的寻址能力,数据总线DB:用来在CPU与存储器、I/O接口之间进行数据传送 数据总线的条数决定微处理器一次最多可以传送的数据宽度,控制总线CB:以来传送各种控制信号,诺依曼结构特点:串行顺序处理机制,采用二进制 采用程序存储方式 计算机组成结构:5个部分 诺依曼结构的改进 采用多个处理部件形成流水线处理 组成阵列机构,采用单指令流多数据流 用多个诺依曼结机器组成多机系统,支持并行工作,2、 数制,计算机采用的数制:二进制,(1)二进制的算术运算,(2)二进制的逻辑运算,“或”运算,“与”运算,“非”运算,“异或”运算,r进制数转换为十进
3、制数,十进制数转换为二进制数,方法: A、将整数部分和小数部分分别进行转换,然后再把转换结果进行相加。 B、整数转换采用除2取余法:用2不断地去除要转换的数,直到商为0。再将每一步所得的余数,按逆序排列,便可得转换结果。 C、小数转换采用乘2取整法:每次用2与小数部分相乘,取乘积的整数部分,再取其小数部分乘2直到小部分为0。将所取整数顺序放在小数点后即为转换结果。,2 136 余数(结果) 低位 2 68 - 0 2 34 - 0 2 17 - 0 2 8 - 1 2 4 - 0 2 2 - 0 2 1 - 0 0 - 1 高位,转换结果:(136)D=(10001000)B,例:将(136)
4、D转换为二进制数。,0.625 * 2 1.25 * 2 0.5 * 2 1.0 取整: 高位 低位,转换结果:(0.625)D = (0.101)B,例:将(0.625)D转换为二进制数。,(1)、二进制数到八进制数、十六进制数的转换 A、二进制数到八进制数转换采用“三位化一位”的方法。从小数点开始向两边分别进行每三位分一组,向左不足三位的,从左边补0;向右不足三位的,从右边补0。 B、二进制数到十六进制数的转换采用“四位化一位”的方法。从小数点开始向两边分别进行每四位分一组,向左不足四位的,从左边补0;向右不足四位的,从右边补0。,二进制数和八进制数、十六进制数间的转换,3 5 2 . 6
5、 011 101 010 110 =(11 101 010 . 11)B,(2)、八进制、十六进制数到二进制数的转换,方法:采用“一位化三位(四位)”的方法。按顺序写出每位八进制(十六进制)数对应的二进制数,所得结果即为相应的二进制数。,例:将(352.6)o转换为二进制数。,在二进制中,将原码每位变反,可得反码。如10100的反码为01011,用2位电路很容易做到,而原码与反码相加正好差1而未有进位(无溢出)。如上例: 原码:10100 反码:01011 原码+反码=11111,如果反码加1后再去与原码相加就得: 原码+(反码+1)=10100+01100=100000 所以,在二进制中,常
6、用反码加1的方法来获得补码。,这在计算机中非常方便,因为二进制电路由原码求反码是很容易的.有了补码,就可以将减法变成加法来运算了。,3、二进制码,编码,编码分为: 数的编码 字符的编码 其他信息编码,十进制数的编码:称为二十进制数码 BCD-使用最广泛的是8421码 BCD码规则如下: 十进制的基本数字分别用四位二进制数表示;,数的编码,1、X原=01001001B,Y原=10101010B,则X-Y原=?,2、0.101001B等于 A . 0.640625D B. 0.620125D C. 0.820325D D. 0.804625D,二、微机系统结构(8086/8088),1、Intel
7、 8086/8088CPU的内部结构,(1)、存储器结构(存储器组成,分段,逻辑地址和物理地址,堆栈段的使用),2、8086/8088的引脚信号,3、系统结构和配置,(2)、输入输出结构,(3)、工作模式(重点最小工作模式),4、CPU内部时序,重点掌握总线周期、指令周期等概念及最小模式系统的读/写总线周期,1、Intel 8086/8088CPU的结构,8086的内部结构成两部分: 总线接口部件BIU: 总线接口单元BIU,负责控制存储器读写。 执行部件EU: 执行单元EU从指令队列中取出指令并执行。 特点: 取指令和执行指令分开进行,提高了速度。,二、微机系统结构(8086/8088),总
8、线接口单元和执行单元的动作管理,1、当8086的指令队列有两个空字节,BIU自动取指令到指令队列中; 2、执行部件EU准备执行一条指令时,它从BIU的指令队列取指令,然后执行; 3、指令队列已满,BIU与EU又无总线请求时,总线接口部件进入空闲状态。 4、执行转移指令、调用指令、返回指令时,BIU自动清除指令队 列,然后从新地址取指令,并立即送给EU,然后再从新单元开始,从新填满队列机构。,8086CPU的特点:BIU与EU是分开的,取指令与执行指令可以重叠。提高执行速度。,2、 8086/8088的引脚信号,2、 8086/8088的引脚信号,指引脚信号的定义、作用;通常采用英文单词或其缩写
9、表示,信号从芯片向外输出,还是从外部输入芯片,或者是双向的,起作用的逻辑电平高、低电平有效上升、下降边沿有效,输出正常的低电平、高电平外,还可以输出高阻的第三态, 有效电平, 三态能力, 信号的流向, 引脚的功能,“引脚” 小结,CPU引脚是系统总线的基本信号 可以分成三类信号 16位数据线:D0 D15 20位地址线:A0 A19 控制线: ALE、M/IO*、WR*、RD*、READY INTR、INTA*、NMI,HOLD、HLDA RESET、CLK、Vcc、GND,采用分段结构的存储器中,任何一个逻辑地址由段基址和偏移地址两个部分构成,它们都是无符号的16位二进制数。 任何一个存储单
10、元对应一个20位的物理地址,也可称为绝对地址,它是由逻辑地址变换得来的。当CPU需要访问存储器时,必须完成如下的地址运算:,3. 存储器结构,物理地址=段基址16+偏移地址,物理地址的形成如图所示,它是通过CPU的总线接口部件BIU的地址加法器来实现的。,如:代码段寄存器CS=2000H,指令指针寄存器存放的是偏移地址IP=2200H,存储器的物理地址为,20000H+2200H=22200H,一个存储单元具有两种类型的地址:物理地址和逻辑地址。物理地址就是实际地址,它具有20位的地址值,并是惟一标识1MB存储空间的某一个字节的地址。逻辑地址由段基址和偏移地址组成。程序以逻辑地址编址,而不是用
11、物理地址。 4个段寄存器分别指向4个现行可寻址的分段的起始字节单元。一般指令程序存放在代码段中,段地址来源于代码段寄存器,偏移地址来源于指令指针IP。当涉及到一个堆栈操作时,段地址寄存器为SS,偏移地址来源于栈指针寄存器SP。当涉及到一个操作数时,则由数据段寄存器DS或附加段寄存器ES作为段寄存器,而偏地址是由16位偏移量得到。16位偏移量可以是指令中的偏移量加上16位地址寄存器的值组成,取决于指令的寻址方式。,8086存储器的分体结构 8086系统中,存储器是分体结构,1M字节的存储空间分成两个512K字节的存储体。 一个是偶数地址存储体,一个是奇数地址存储体,两个存储体采用字节交叉编址方式
12、,(1)奇偶地址体示意图,两种组态模式,两种组态构成两种不同规模的应用系统 最小组态模式 构成小规模的应用系统 8086本身提供所有的系统总线信号 最大组态模式 构成较大规模的应用系统,例如可以接入数值协处理器8087 8086和总线控制器8288共同形成系统总线信号,两种组态利用MN/MX*引脚区别 MN/MX*接高电平为最小组态模式 MN/MX*接低电平为最大组态模式 两种组态下的内部操作并没有区别 IBM PC/XT采用最大组态 我们以最小组态展开基本原理,总线操作是指CPU通过总线对外的各种操作 8086的总线操作主要有: 存储器读、I/O读操作 存储器写、I/O写操作 中断响应操作
13、总线请求及响应操作 CPU正在进行内部操作、并不进行实际对外操作的空闲状态Ti 描述总线操作的微处理器时序有三级 指令周期 总线周期 时钟周期,4、CPU内部时序,指令周期是指一条指令经取指、译码、读写操作数到执行完成的过程。若干总线周期组成一个指令周期 总线周期是指CPU通过总线操作与外部(存储器或I/O端口)进行一次数据交换的过程 8086的基本总线周期需要4个时钟周期 4个时钟周期编号为T1、T2、T3和T4 总线周期中的时钟周期也被称作“T状态” 时钟周期的时间长度就是时钟频率的倒数 当需要延长总线周期时插入等待状态Tw CPU进行内部操作,没有对外操作时,其引脚就处于空闲状态Ti,1
14、、简要说明8086微处理器的内部结构?,2、系统中存储器的寻址空间(寻址能力)是由什么决定的?8086中如何形成访问存储器的20位物理地址?,3、微处理器内部结构由哪些部件组成?试述其主要功能?,简答题,选择题和填空题,概念性,概念性,1.已知逻辑地址:CS=1123H,IP=0015H,则其实际地址为: A.01138H B.11245H C.12230H D.12315H,2.状态标志寄存器中可用于指令测试的状态位是: CF,ZF,DF和PF B.CF,ZF,OF和DF C. CF,PF,ZF和OF D. CF,ZF,IF和TF,4、地址锁存器的工作原理,作用?,三、 指令系统,1、操作数
15、的寻址方式,(1) 立即数寻址方式,(2) 寄存器寻址方式,(3) 存储器寻址方式,2、指令,(1)传送类指令,(2)数据操作类指令,(3)控制转移类指令,1. 立即数寻址方式,指令中的操作数直接存放在机器代码中,紧跟在操作码之后(操作数作为指令的一部分存放在操作码之后的主存单元中) 这种操作数被称为立即数imm 可以是8位数值i8(00HFFH) 也可以是16位数值i16(0000HFFFFH) 立即数寻址方式常用来给寄存器和存储单元赋值,多以常量形式出现,MOV AX, 0102H ;AX0102H,一、操作数的寻址方式,2. 寄存器寻址方式,操作数存放在CPU的内部寄存器reg中: 8位
16、寄存器r8: AH、AL、BH、BL、CH、CL、DH、DL 16位寄存器r16: AX、BX、CX、DX、SI、DI、BP、SP 4个段寄存器seg: CS、DS、SS、ES 寄存器名表示其内容(操作数),MOV AX, BX ;AXBX,3. 存储器寻址方式,操作数在主存储器中,用主存地址表示 程序设计时,8086采用逻辑地址表示主存地址 段地址在默认的或用段超越前缀指定的段寄存器中 指令中只需给出操作数的偏移地址(有效地址EA) 8086设计了多种存储器寻址方式 1、直接寻址方式 2、寄存器间接寻址方式 3、寄存器相对寻址方式 4、基址变址寻址方式 5、相对基址变址寻址方式,段寄存器的使
17、用规定,注意点:存储器寻址方式中的变量,变量指内存中的数据,变量名具有地址属性。存储器寻找方式中经常采用变量形式 变量的定义 WVAR DW 1234H ;定义16位变量WVAR,具有初值1234H ;假设其偏移地址为10H 单独引用变量名是直接寻址方式 MOV AX,WVAR ;指令功能:AX1234H ;等同于 MOV AX,0010H 相对寻址方式中,变量名表示其偏移地址,相当于位移量 MOV AX, DI+WVAR ; MOV AX,WVARDI ;等同于 MOV AX,DI+0010H,相对寻址方式中的位移量,在寄存器相对和相对基址变址寻址方式中,其位移量不仅可用常量表示,也可用符号
18、表示 这个符号可以是变量名,例如WVAR变量,而且支持多种表达形式 MOV AX, DI+WVAR ; ;等同于 MOV AX, WVARDI MOV AX,BX+SI+WVAR ;等同于 MOV AX, WVARBX+SI ;等同于 MOV AX, WVARBXSI,3.1.3 其它,1、隐含地址:,不指明操作数,但有隐含规定的寻址方式,如:DAA,对寄存器AL中的数据进行十进制数调整,结果仍在AL中,2、I/O端口地址:,IN AL,63H,0255共256个端口地址,MOVE DX,0A16H IN AL,DX,0FFFFH个端口地址,3、目的操作数寻址方式:除立即数寻址外均可,1.传送
19、类指令,数据传送是计算机中最基本、最重要的一种操作,传送指令也是最常使用的一类指令 传送指令把数据从一个位置传送到另一个位置 除标志寄存器传送指令外,均不影响标志位 重点掌握 MOV XCHG XLAT PUSH POP LEA LDS LES,指令系统,MOV指令传送功能图解,MOV指令也并非任意传送!,非法指令的主要现象: 两个操作数的类型不一致 无法确定是字节量还是字量操作 两个操作数都是存储器 段寄存器的操作有一些限制,标志操作指令,1. 标志位操作指令 CLC ;复位进位标志:CF0 STC ;置位进位标志:CF1 CMC ;求反进位标志:CFCF CLD ;复位方向标志:DF0 S
20、TD ;置位方向标志:DF1 CLI ;复位中断标志:IF0 STI ;置位中断标志:IF1 2. 标志寄存器低字节与AH的传送指令(LAHF/SAHF) 3. 标志寄存器出入堆栈指令(PUSHF/POPF),累加器专用传送指令,1) IN 输入指令 指令格式为: IN AL , n IN AX , n IN AL , DX IN AX , DX 2)OUT 输出指令 指令格式为: OUT n , AL OUT n , AX OUT DX , AL OUT DX , AX,数据操作类指令,算术运算类指令用来执行二进制的算术运算:加减乘除。 这类指令会根据运算结果影响状态标志,有时要利用某些标志
21、才能得到正确的结果;使用他们时请留心有关状态标志 重点掌握 加法指令:ADD、ADC、INC 减法指令:SUB 、SBB、DEC、CMP、NEG 乘除指令: MUL、 IMUL、 DIV、 IDIV,算术运算类指令,加法和减法指令,加法指令:ADD, ADC和INC 减法指令:SUB, SBB, DEC, NEG和CMP 他们分别执行字或字节的加法和减法运算,除INC和DEC不影响CF标志外,其他按定义影响全部状态标志位 操作数组合: 运算指令助记符 reg, imm/reg/mem 运算指令助记符 mem, imm/reg,乘法和除法指令,乘法指令分无符号和有符号乘法指令 MUL reg/m
22、em ;无符号乘法 IMUL reg/mem ;有符号乘法 除法指令分无符号和有符号除法指令 DIV reg/mem ;无符号除法 IDIV reg/mem ;有符号除法,乘法、除法指令说明,乘法指令的源操作数显式给出,隐含使用另一个操作数AX和DX 字节量相乘:AL与r8/m8相乘,得到16位的结果,存入AX 字量相乘:AX与r16/m16相乘,得到32位的结果,其高字存入DX,低字存入AX 除法指令的除数显式给出,隐含使用另一个操作数AX和DX作为被除数 字节量除法:AX除以r8/m8,8位商存入AL,8位余数存入AH 字量除法:DX.AX除以r16/m16,16位商存入AX,16位余数存
23、入DX,位操作类指令,位操作类指令以二进制位为基本单位进行数据的操作 当需要对字节或字数据中的各个二进制位操作时,可以考虑采用位操作类指令 注意这些指令对标志位的影响 1. 逻辑运算指令 AND OR XOR NOT TEST 2. 移位指令 SHL SHR SAR 3. 循环移位指令 ROL ROR RCL RCR,1 逻辑运算指令,双操作数逻辑指令AND、OR、XOR和TEST设置CFOF0,根据结果设置SF、ZF和PF状态,而对AF未定义;它们的操作数组合与ADD、SUB等一样: 运算指令助记符 reg, imm/reg/mem 运算指令助记符 mem, imm/reg 单操作数逻辑指令
24、NOT不影响标志位,操作数与INC、DEC和NEG一样: NOT reg/mem,2 移位指令,将操作数移动一位或多位,分成逻辑移位和算术移位,分别具有左移或右移操作 移位指令的第一个操作数是指定的被移位的操作数,可以是寄存器或存储单元;后一个操作数表示移位位数: 该操作数为1,表示移动一位 该操作数为CL,CL寄存器值表示移位位数 (移位位数大于1只能CL表示) 按照移入的位设置进位标志CF,根据移位后的结果影响SF、ZF、PF,3 循环移位指令,循环移位指令类似移位指令,但要将从一端移出的位返回到另一端形成循环。分为: ROL reg/mem,1/CL ;不带进位循环左移 ROR reg/
25、mem,1/CL ;不带进位循环右移 RCL reg/mem,1/CL ;带进位循环左移 RCR reg/mem,1/CL ;带进位循环右移 循环移位指令的操作数形式与移位指令相同,按指令功能设置进位标志CF,但不影响SF、ZF、PF、AF标志,串操作指令,常见串操作 计算字符串的长度、查找某个特定字符、改换字符、判断字符串是否一致等 串操作类指令 MOVS、CMPS、SCAS、LODS、STOS 注意事项 操作数的源串在当前数据段DS中,若不在,可使用段前缀指令;目的串必须在附加段ES中,且不能使用段前缀指令,字符串指令中的操作数只用于指出指令的操作类型。目的操作数与源操作数的逻辑地址由ES
26、:DI和DS:SI指出 用CX存放要处理的字符串的元素个数。在执行带重复前缀的字符串指令时,每执行一次字符串操作指令,CX的内容自动减1 用DF标志置来规定字符串处理方向。DF=0,由低向高,DF=1,相反 每处理完一个元素,自动修改SI和DI的内容 字符串处理过程可被中断,控制转移类指令,控制转移类指令用于实现分支、循环、过程等程序结构,是仅次于传送指令的常用指令 重点掌握: JMP/Jcc/LOOP/JCXZ CALL/RET INT n/IRET 常用系统功能调用,控制转移类指令通过改变IP(和CS)值,实现程序执行顺序的改变,Jcc指令的分类,Jcc指令不影响标志,但要利用标志(表5-
27、10) 根据利用的标志位不同,分成三种情况: 判断单个标志位状态 比较无符号数高低 比较有符号数大小,Jcc指令实际虽然只有16条,但却有30个助记符 采用多个助记符,目的是为了方便记忆和使用,1. 判断单个标志位状态, JZ/JE和JNZ/JNE 利用零标志ZF,判断结果是否为零(或相等) JS和JNS 利用符号标志SF,判断结果是正是负 JO和JNO 利用溢出标志OF,判断结果是否产生溢出 JP/JPE和JNP/JPO 利用奇偶标志PF,判断结果中“1”的个数是偶是奇 JC/JB/JNAE和JNC/JNB/JAE 利用进位标志CF,判断结果是否进位或借位,2. 比较无符号数高低,无符号数的
28、大小用高(Above)、低(Below)表示,需要利用CF确定高低、利用ZF标志确定相等(Equal) 两数的高低分成4种关系,对应4条指令 JB(JNAE):目的操作数低于(不高于等于)源操作数 JNB(JAE):目的操作数不低于(高于等于)源操作数 JBE(JNA):目的操作数低于等于(不高于)源操作数 JNBE(JA):目的操作数不低于等于(高于)源操作数,3. 比较有符号数大小,判断有符号数的大(Greater)、小(Less),需要组合OF、SF标志、并利用ZF标志确定相等与否 两数的大小分成4种关系,分别对应4条指令 JL(JNGE):目的操作数小于(不大于等于)源操作数 JNL(
29、JGE):目的操作数不小于(大于等于)源操作数 JLE(JNG):目的操作数小于等于(不大于)源操作数 JNLE(JG):目的操作数不小于等于(大于)源操作数,子程序调用与返回指令,子程序是完成特定功能的一段程序 当主程序(调用程序)需要执行这个功能时,采用CALL调用指令转移到该子程序的起始处执行 当运行完子程序功能后,采用RET返回指令回到主程序继续执行,转移指令有去无回 子程序调用需要返回, 其中利用堆栈保存返回地址,中断指令,INT i8 ;中断调用指令:产生i8号中断 ;主程序使用,其中i8表示中断向量号 IRET ;中断返回指令:实现中断返回 ;中断服务程序使用,机器语言二进制数形
30、式的指令和数据。 B0 64 是什么意思?这就是机器语言。既不直观,又不易理解和记忆. MOV AL,64H ;很容易记忆理解,这就是助记符。 助记符用便于记忆的英语单词表示的指令操作码。它反映了指令的功能和主要特征,便于人们理解和记忆。,汇编语言源程序,汇编语言及程序设计,操作数可能放在存储器中,这就涉及操作数的地址。程序中遇到转移指令或调用指令,也需要知道转移地址,若采用具体地址就很不方便,一旦有错,改动也很麻烦。于是人们采用标号或符号来代替地址,例: LP1: mov ax,VAR loop LP1 汇编语言指令助记符,符号地址,标号,伪指令等语言元素的集合以及这些元素使用的规则。 用汇
31、编语言编写的程序叫汇编语言源程序。,指令除了操作码以外,还有一个操作数问题。,汇编程序,源程序的编译程序,汇编程序,汇编语言源程序,机器语言目标程序,汇编源程序需翻译成机器语言,变成可执行文件,机器才能执行,这个翻译过程叫汇编。高级语言中称该过程为“解释”或“编译”。执行翻译的程序称为“汇编程序”。,汇编语言程序的开发过程,源程序:文件名.asm,目标模块:文件名.obj,可执行文件:文件名.exe,错误,汇编语言的语句格式,执行性语句执行性语句用于表达处理器指令(也称为硬指令),汇编后对应一条指令代码。由处理器指令组成的代码序列是程序设计的主体 标号: 硬指令助记符 操作数,操作数 ;注释
32、说明性语句说明性语句用于表达伪指令,指示源程序如何汇编、变量怎样定义、过程怎么设置等 名字 伪指令助记符 参数,参数, ;注释,指令性语句由CPU执行,每一条指令性语句都有一条机器码指令与其对应; 指示性语句由汇编程序执行。它指出汇编程序应如何对源程序进行汇编,如何定义变量、分配存储单元以及指示程序开始和结束等。指示性语句无机器码指令与其相对应。 指令性语句汇编时生成机器码; 指示性语句汇编时不生成机器码。,汇编语言源程序的结构,汇编语言源程序通常由一个或几个程序模块组成,每个模块一般由三个逻辑段组成: 数据段存放数据、变量 堆栈段堆栈区域 代码段存放程序指令,stack SEGMENT PA
33、RA stack DB 100 DUP(stack) stack ENDS data SEGMENT data ENDS code SEGMENT ASSUME CS:code, DS:data, ES:data start: MOV AX, data MOV DS, AX MOV ES, AX MOV AL, 4CH INT 21H code ENDS END start,堆栈段,数据段,代码段,一个基本的汇编语言程序框架如下:,数据项与表达式,数据项包括常量、变量、标号及表达式。 1.常量 二进制数,以B结尾。如01001101B。 十进制数,如85。 十六进制数,以H结尾。第1个数字为A
34、-F时,前面应加0,如0F160H。 字符串:用引号括起来的1个或多个字符。如ERROR!, a,汇编时被翻译成对应的ASCII码45H,52H,52H,4FH,52H,21H和61H。,有三个属性: 段地址:即标号所在段的段地址; 偏移量:标号所代表存储单元的段内偏移地址; 类 型:NEAR或FAR: NEAR表示标号所在语句与转移指令/ 调用指令在同一码段内,跳转时 只需改变IP即可。 FAR标号所在语句与转移指令/调用 指令不在同一代码段内。 若没有对类型进行说明,默认为NEAR。 标号通常作为转移指令或CALL指令的转移地址。,2.标号指令所在内存单元的符号地址,变量即内存中的存储单元
35、或数据区。 变量名是存储单元(数据区)的符号地 址或名字。 变量也有三个属性: 段地址变量所在段的段地址 偏移量变量单元地址与段首地址之间的位移量。 类 型有BYTE、WORD和DWORD三种。 变量在程序中作为存储器操作数被引用。,3.变量,4.表达式,表达式是常数、寄存器、标号、变量与运算符的组合。 有数字表达式和地址表达式两种。 汇编时按优先规则对表达式进行计算,计算出具体的数值或地址。运行时不能改变。 表达式中的运算符有6类:算术、逻辑、关系、取地址、属性、杂类。,SEG:取变量/标号的段地址 OFFSET:取变量/标号的偏移地址 例:VAR DB 12H MOV BX,OFFSET
36、VAR ;取变量VAR的偏移地址 MOV AX,SEG VAR ;取变量VAR的段地址 注意,以下指令的异同: MOV BX, OFFSET VAR LEA BX, VAR OFFSET只能取静态的偏移地址; LEA指令即可取静态的偏移地址,也可取动态的偏移地址。,4)取地址运算符SEG、OFFSET,6)属性运算符PTR,用来指定地址操作数的类型。 格式: PTR 类型BYTE, WORD, DWORD, NEAR, FAR BYTE、WORD、DWORD 用于描述数据存储单元(变量)地址 NEAR、FAR 用于描述转移、调用的目的地址,伪指令,数据定义伪指令 符号定义伪指令 段定义和段寄存
37、器指定伪指令 过程定义伪指令 结束伪指令,由汇编程序执行的指令,它本身不被汇编成机器指令。常用的伪指令有:,数据定义伪指令,用于定义变量,即内存单元或数据区。数据定义伪指令的格式为: 变量名 数据定义伪指令 操作数,操作数, 常用的数据定义伪指令有如下几种: DB 定义字节 DW 定义字 DD 定义双字 操作数可以是常数、变量或表达式,操作数?用来保留存储空间,但不存入数据. 例:ABC DB 0,1,2,3,4,OK,$ RSV DW ?,?,?,?,?,?,?,? 复制操作符DUP: 重复的数据可以使用复制操作符DUP,如上面RSV亦可写成: RSV DW 8 DUP(?) 若操作数中若使
38、用$,则表示的是地址计数器的当前值。,符号定义伪指令,把一个表达式用一个符号表示,以后凡出现该表达式的地方都可用这个符号表示。类似于C语言中的#define。 符号定义伪指令有两种:EQU,=,用EQU定义的符号未清除前,不能重新定义。清除EQU定义可用PURGE伪指令。 用”=”定义的符号可在任何时候进行重定义。 二者均不占用存储空间,仅是给符号赋值,3 段定义伪指令,汇编语言程序是按段来组织程序和数据的。 和存储器的物理段相对应,汇编语言程序中的段称为逻辑段。汇编连接后被映射到物理段中。 三类段:代码(程序)、数据、堆栈 段定义伪指令:SEGMENT、ENDS、ASSUME、ORG 定义一
39、个段的基本格式: 段名 SEGMENT 定位类型组合方式类别 段名 ENDS,4 过程定义伪指令PROC、ENDP,过程就是子程序。一个过程可以被其它程序所调用(用CALL指令),过程的最后一条指令一般是返回指令(RET)。 过程定义伪指令的格式为 PROC 类型 RET ENDP 注意:PROC和ENDP必须成对出现。,过程的类型有两种: NEAR(默认类型)表示段内调用 FAR表示段间调用 调用一个过程的格式为: CALL ,宏定义伪指令,如果需要多次使用同一个程序段,可以将这个程序段定义为一个”宏指令”,然后在需要时,可简单地用宏指令名来代替这个程序段。,指令的格式为: MACRO 形参
40、表 ENDM,宏调用与过程(子程序)调用都是一次定义,多次调用。它们之间的差别是: 执行形式:宏命令伪指令由宏汇编程序在汇编过理中进行处理,而CALL、RET则是由CPU执行的指令。 汇编结果:宏命令伪指令汇编后被展开。 执行速度:宏命令执行速度较快(因无调用转移) 占用内存:宏指令简化了源程序,但不能简化目标程序,并不节省内存单元。使用过程可以节省代码占用的内存空间。,汇编结束伪指令END,汇编语言源程序的最后,要加汇编结束伪指令END,以使汇编程序结束汇编。 格式: END 表达式 END后跟的表达式通常就是程序第一条指令的标号,指示程序的启动地址(要执行的第一条指令的地址)。,系统功能调
41、用介绍,系统功能调用由OS提供的一组实现特殊功能的子程序供程序员在程序中调用,以减轻编程工作量。 系统功能调用有两种,一种称为DOS功能调用,另一种称为BIOS功能调用。 用户程序在调用这些系统服务程序时,不是用CALL命令,而是采用软中断指令INT n来实现。 在DOS系统中,功能调用都是用软中断指令INT 21H来实现的。,关于数据输入和输出我们这里只讨论键盘输入和显示输出,调用系统功能需要提供入口参数及所调用的功能号,调用结束返回结果。,1. DOS键盘功能调用,(1) 从键盘输入一个字符(功能号=1) MOV AH,1 INT 21H ,汇编语言程序设计基础,1.汇编语言程序设计的步骤
42、: 1-根据实际问题抽象出数学模型,确定算法 2-画出程序框图(流程图) 3-分配内存工作单元和寄存器 4-根据框图编写源程序,存成.ASM文件 5-对源程序汇编,生成.OBJ目标文件 6-把.OBJ文件连接成.EXE执行文件 7-运行、调试 2.源程序的基本结构:顺序、分支、循环、过程,1、选择题,a.指令语法问题,下列格式不正确的是: MOV AX,1234H B. XCHG AX, BUF C. XCHG BUF,AX D. XCHG BUF1,BUF2,b.指令功能问题,若将AL的内容的低四位分离,则应选用 AND AL,OFH B. OR AL, OFH C. XOR AL, OFH
43、 D. TEST AL,OFH,C.指令结果问题,LES DI,BX 如果指令执行前,(DS)=B000H,(BX)=080AH,(0B080H)=04ABH,(0B080CH)=4000H,则指令执行后(DI)=?(ES)=? 04ABH, 4000H B. 05AEH, 3000H C. 05AEH, 4000H D. 04ABH, 3000H,2、填空题,指令结果问题,(CF)=1,(0F)=1,(AL)=9AH,(BL)=0BCH,若执行指令AND AL,BL后,写出下列标志位的值:ZF=?,CF=?SF=?,ZF=0,CF=0,SF=1,指令功能问题,在除法指令IDIV BX 中,被
44、除数隐含为?,AX(8位)或DX.AX(16位),A、写出程序运行结果,3、阅读程序题(简答题),MOV AL,59H MOV CL,4 MOV BL,AL OR AL,30H AND BL,0FH OR BL,30H HLT 结果:AL=?,BL=?,AL=79H,BL=39H,B.将程序补充完整,A、将程序补充完整,B、写出一个完整小的汇编程序,4、综合应用题,例:10人考试成绩为:57,88,99,85,90,91,75,67,85,36 对上述10人成绩进行分类统计,共分为:90分(含)以上几人?60分(含)至90分(不含)几人?60分以下几人? 要求:10人考试成绩存放在数据段中,各
45、类统计的结果放在附加段中。,DATA SEGMENT ;数据段定义 x1 db 90,46,61,58,83,47,75,66,92,80 ;变量定义,存放考试成绩 DATA ENDS results segment ;附加段定义 y1 db 10 dup(0) ;数据缓存区,用以存放统计结果 results ends COSEG SEGMENT ;代码段定义 ASSUME CS:COSEG,DS:DATA,es:results ;段说明,BEING: MOV ax,data ;获取数据段段地址 mov ds,ax mov si,offset x1 ;获取X1的偏移地址 mov ax,resu
46、lts mov es,ax lea di,y1 ;获取y1的偏移地址 mov cx,10; loop1: mov al,si ;取X1数据到AL中 CLC ;清除CF CMP AL,60 ;将AL的内容和60相比较 JC LP1 ;小于60转LP1; CMP AL,90 ;将AL的内容和90相比较 JC LP2 ;60AL90转LP2; inc es:di+2 ;对大于90的统计结果存放; LP3: inc si loop loop1; HLT ;暂停; LP1: nop inc es:di ;对小于60的统计结果存放 JMP LP3; LP2: nop inc es:di+1 ;对大等于60
47、且小于90的统计结果存放 JMP LP3 ; COSEG ENDS,综合应用的汇编程序,1、数字统计排序问题,如前例题,概念简答题,1、何为堆栈?堆栈有何功能与特点?,除采用磁、光原理的辅存外,其它存储器主要都是采用半导体存储器 本章介绍采用半导体存储器及其组成主存的方法,存储器原理与接口,读写存储器RAM,只读存储器ROM,掩膜ROM:信息制作在芯片中,不可更改 PROM:允许一次编程,此后不可更改 EPROM:用紫外光擦除,擦除后可编程;并允许用户多次擦除和编程 EEPROM(E2PROM):采用加电方法在线进行擦除和编程,也可多次擦写 Flash Memory(闪存):能够快速擦写的EEPROM,但只能按块(Block)擦除,半导体存储器芯片的结构, 存储体 存储器芯片的主要部分,用来存储信息 地址译码电路 根据输入的地址编码来选中芯片内某个特定的存储单元 片选和读写控制逻辑 选中存储芯片,控制读写操作,存储体,每个存储单元具有一个唯一的地址,可存储1位(位片结构)或多位(字片结构)二进制数据 存储容量与地址、数据线个数有关: 芯片的存储容量 存储单元数存储单元的位数2MN M:芯片的地址线根数 N:芯片的数据线根数,SRAM芯片2114,存储容量为10244 18个引脚: 10根地址线A9A0 4根数据线I/O4I/O1 片选CS* 读写WE*,S
链接地址:https://www.31doc.com/p-3195653.html