《2022年微机原理与接口技术知识点总结 .pdf》由会员分享,可在线阅读,更多相关《2022年微机原理与接口技术知识点总结 .pdf(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、微机原理与接口技术复习参考资料教师:万显荣复习资料说明:1、标有红色星号“”的内容为重点内容3、本资料末尾附有“ 微机原理与接口技术综合练习题与答案错误修正”和“微机原理与接口技术综合练习题与答案中不作要求的部分”,请注意查看。第一章概 述一、计算机中的数制1、无符号数的表示方法:(1)十进制计数的表示法特点:以十为底,逢十进一;共有 0-9 十个数字符号。(2)二进制计数表示方法:特点:以2 为底,逢2 进位;只有 0 和 1 两个符号。(3)十六进制数的表示法:特点:以16 为底,逢16 进位;有 0-9 及 AF(表示 1015 )共 16 个数字符号。2、各种数制之间的转换(1)非十进
2、制数到十进制数的转换按相应进位计数制的权表达式展开,再按十进制求和。(见书本1.2.3 ,1.2.4 )(2)十进制数制转换为二进制数制十进制 二进制的转换:整数部分:除2 取余;小数部分:乘2 取整。十进制 十六进制的转换:整数部分:除16 取余;小数部分:乘16 取整。以小数点为起点求得整数和小数的各个位。(3)二进制与十六进制数之间的转换用 4 位二进制数表示1 位十六进制数3、无符号数二进制的运算(见教材P5)4、二进制数的逻辑运算特点:按位运算,无进借位( 1)与运算只有 A、B 变量皆为1 时,与运算的结果就是1 ( 2)或运算A、B 变量中,只要有一个为1,或运算的结果就是1 (
3、 3)非运算( 4)异或运算精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 20 页A、B 两个变量只要不同,异或运算的结果就是1 二、计算机中的码制 (重点)1、对于符号数,机器数常用的表示方法有原码、反码和补码三种。数X的原码记作 X原,反码记作 X反,补码记作 X补。注意:对正数,三种表示法均相同。它们的差别在于对负数的表示。(1)原码定义:符号位: 0 表示正, 1 表示负;数值位:真值的绝对值。注意:数 0 的原码不唯一(2)反码定义:若 X0 ,则X反=X原若 X0 , 则X补= X反= X原若 X0 , 则X补= X反+1
4、注意:机器字长为8 时,数 0的补码唯一,同为000000002、8 位二进制的表示范围:原码: -127+127 反码: -127+127 补码: -128+127 3、特殊数10000000 该数在原码中定义为:-0 在反码中定义为:-127 在补码中定义为:-128 对无符号数:(10000000)= 128 三、信息的编码1、 十进制数的二进制数编码用 4 位二进制数表示一位十进制数。有两种表示法:压缩BCD 码和非压缩BCD 码。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 20 页(1)压缩 BCD 码的每一位用4 位二进
5、制表示,00001001表示 09 ,一个字节表示两位十进制数。(2) 非压缩 BCD 码用一个字节表示一位十进制数,高 4 位总是 0000, 低 4 位的 00001001表示 09 2、 字符的编码计算机采用7 位二进制代码对字符进行编码(1) 数字 09 的编码是 01100000111001 , 它们的高 3 位均是 011, 后 4 位正好与其对应的二进制代码(BCD 码)相符。(2)英文字母AZ 的 ASCII 码从 1000001 (41H )开始顺序递增,字母az 的 ASCII 码从 1100001 (61H )开始顺序递增,这样的排列对信息检索十分有利。第二章微机组成原理
6、第一节、微机的结构1、计算机的经典结构冯. 诺依曼结构(1)计算机由运算器、控制器、输入设备和输出设备五大部分组成(运算器和控制器又称为 CPU )(2)数据和程序以二进制代码形式不加区分地存放在存储器总,存放位置由地址指定,数制为二进制。(3)控制器是根据存放在存储器中的指令序列来操作的,并由一个程序计数器控制指令的执行。3、 系统总线的分类(1)数据总线(Data Bus ) ,它决定了处理器的字长。(2)地址总线(Address Bus ), 它决定系统所能直接访问的存储器空间的容量。(3)控制总线(Control Bus)第二节、 8086微处理器1、8086 是一种单片微处理芯片,其
7、内部数据总线的宽度是16 位,外部数据总线宽度也是16 位,片内包含有控制计算机所有功能的各种电路。8086 地址总线的宽度为20 位,有 1MB (220)寻址空间。2、 8086CPU 由总线接口部件BIU 和执行部件EU 组成。 BIU 和 EU 的操作是异步的,为8086 取指令和执行指令的并行操作体统硬件支持。3、 8086 处理器的启动4、寄存器结构(重点)8086 微处理器包含有13 个 16 位的寄存器和9 位标志位。4 个通用寄存器(AX ,BX, CX,DX )4 个段寄存器(CS ,DS, SS,ES)4 个指针和变址寄存器(SP,BP,SI,DI)指令指针( IP)1)
8、 、通用寄存器(1)8086 含 4 个 16 位数据寄存器,它们又可分为8 个 8 位寄存器,即:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 20 页AX AH ,AL BXBH ,BL CXCH ,CL DXDH ,DL 常用来存放参与运算的操作数或运算结果(2)数据寄存器特有的习惯用法AX:累加器。多用于存放中间运算结果。所有I/O 指令必须都通过AX 与接口传送信息;BX:基址寄存器。在间接寻址中用于存放基地址;CX :计数寄存器。用于在循环或串操作指令中存放循环次数或重复次数;DX :数据寄存器。在32 位乘除法运算时,存
9、放高16 位数;在间接寻址的I/O 指令中存放 I/O 端口地址。2) 、指针和变址寄存器SP:堆栈指针寄存器,其内容为栈顶的偏移地址;BP:基址指针寄存器,常用于在访问内存时存放内存单元的偏移地址。SI:源变址寄存器DI:目标变址寄存器变址寄存器常用于指令的间接寻址或变址寻址。3) 、段寄存器CS:代码段寄存器,代码段用于存放指令代码DS:数据段寄存器ES:附加段寄存器,数据段和附加段用来存放操作数SS:堆栈段寄存器,堆栈段用于存放返回地址,保存寄存器内容,传递参数4) 、指令指针(IP)16 位指令指针寄存器,其内容为下一条要执行的指令的偏移地址。5) 、标志寄存器(1)状态标志:进位标志
10、位(CF) :运算结果的最高位有进位或有借位,则CF=1 辅助进位标志位(AF) :运算结果的低四位有进位或借位,则AF=1 溢出标志位(OF ) :运算结果有溢出,则OF=1 零标志位( ZF) :反映指令的执行是否产生一个为零的结果符号标志位(SF) :指出该指令的执行是否产生一个负的结果奇偶标志位(PF) :表示指令运算结果的低8 位“1”个数是否为偶数(2)控制标志位中断允许标志位(IF) :表示 CPU 是否能够响应外部可屏蔽中断请求跟踪标志( TF) :CPU 单步执行5、8086 的引脚及其功能(重点掌握以下引脚)AD15AD0 :双向三态的地址总线,输入/输出信号INTR :可
11、屏蔽中断请求输入信号,高电平有效。可通过设置IF 的值来控制。NMI :非屏蔽中断输入信号。不能用软件进行屏蔽。RESET :复位输入信号,高电平有效。复位的初始状态见P21 MN/MX :最小最大模式输入控制信号。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 20 页第三章8086 指令系统说明: 8086 指令系统这章为重点章节,对下面列出的指令都要求掌握。第一节 8086寻址方式一、数据寻址方式(重点)1、立即寻址操作数 ( 为一常数 )直接由指令给出 (此操作数称为立即数) 立即寻址只能用于源操作数例:MOV AX, 1C8F
12、H MOV BYTE PTR2A00H, 8FH 错误例: MOV 2A00H,AX ; 错误!指令操作例: MOV AX ,3102H; AX3102H 执行后, (AH) = 31H , (AL) = 02H 2、寄存器寻址(1)操作数放在某个寄存器中(2)源操作数与目的操作数字长要相同(3)寄存器寻址与段地址无关例: MOV AX, BX MOV 3F00H, AX MOV CL, AL 错误例: MOV AX,BL ; 字长不同 MOV ES:AX,DX ; 寄存器与段无关3、直接寻址(1)指令中直接给出操作数的16 位偏移地址偏移地址也称为有效地址(EA, Effective Add
13、ress) (2)默认的段寄存器为DS ,但也可以显式地指定其他段寄存器称为段超越前缀(3)偏移地址也可用符号地址来表示,如ADDR 、VAR 例:MOV AX ,2A00H MOV DX ,ES:2A00H MOV SI,TABLE_PTR 4、间接寻址操作数的偏移地址(有效地址EA)放在寄存器中只有 SI、DI 、BX 和 BP 可作间址寄存器精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 20 页例:MOV AX,BXMOV CL,CS:DI 错误例:MOV AX, DX MOV CL, AX 5、寄存器相对寻址EA= 间址寄存器
14、的内容加上一个8/16 位的位移量例:MOV AX, BX+8MOV CX, TABLESI MOV AX, BP; 默认段寄存器为SS 指令操作例:MOV AX ,DATABX 若(DS)=6000H, (BX)=1000H, DATA=2A00H, (63A00H)=66H, (63A01H)=55H 则物理地址= 60000H + 1000H + 2A00H = 63A00H 指令执行后: (AX )=5566H 6、基址变址寻址若操作数的偏移地址:由基址寄存器(BX 或 BP)给出基址寻址方式由变址寄存器(SI 或 DI) 给出变址寻址方式由一个基址寄存器的内容和一个变址寄存器的内容相
15、加而形成操作数的偏移地址,称为基址 -变址寻址。EA= ( BX)+(SI)或( DI ) ;EA= ( BP)+(SI)或( DI)同一组内的寄存器不能同时出现。注意:除了有段跨越前缀的情况外,当基址寄存器为BX 时,操作数应该存放在数据段DS中,当基址寄存器为BP 时,操作数应放在堆栈段SS中。例:MOV AX, BX SI MOV AX, BX+SI MOV AX, DS: BP DI 错误例:MOV AX, BX BP MOV AX, DI SI 指令操作例: MOV AX ,BXSI假定: (DS)=8000H, (BX)=2000H, SI=1000H 则物理地址= 80000H
16、+ 2000H + 1000H = 83000H 指令执行后 : (AL)=83000H (AH)=83001H 7、相对基址变址寻址在基址 -变址寻址的基础上再加上一个相对位移量EA= ( BX)+(SI)或( DI )+8 位或 16 位位移量;精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 20 页EA= ( BP)+(SI)或( DI) +8 位或 16 位位移量指令操作例 :MOV AX,DATADIBX 若(DS)=8000H, (BX)=2000H, (DI)=1000H, DATA=200H 则指令执行后 (AH)=83
17、021H, (AL)=83020H 寄存器间接、寄存器相对、基址变址、相对基址变址四种寻址方式的比较:寻址方式指令操作数形式寄存器间接只有一个寄存器(BX/BP/SI/DI之一)寄存器相对一个寄存器加上位移量基址 变址两个不同类别的寄存器相对基址 -变址两个不同类别的寄存器加上位移量二、地址寻址方式(了解有4 类,能判断)简要判断依据(指令中间的单词):段内直接short,near 段内间接word 段间直接far 段间间接dword 第二节8086指令系统一、数据传送指令(重点)1、通用传送指令(1) MOV dest ,src; destsrc 传送的是字节还是字取决于指令中涉及的寄存器是
18、8 位还是 16 位。具体来说可实现:MOV mem/reg1,mem/reg2 指令中两操作数中至少有一个为寄存器 MOV reg,data ;立即数送寄存器 MOV mem,data ;立即数送存储单元 MOV acc,mem ;存储单元送累加器 MOV mem,acc ;累加器送存储单元 MOV segreg,mem/reg ;存储单元 /寄存器送段寄存器 MOV mem/reg,segreg ;段寄存器送存储单元/寄存器MOV 指令的使用规则IP 不能作目的寄存器不允许mem mem 不允许segregsegreg 立即数不允许作为目的操作数不允许segreg立即数源操作数与目的操作数
19、类型要一致当源操作数为单字节的立即数,而目的操作数为间址、变址、基址+变址的内存数时,必精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 20 页须用 PTR 说明数据类型。如:MOV BX ,12H 是错误的。(2) 、堆栈指令什么是堆栈?按 “ 后进先出 (LIFO) ” 方式工作的存储区域。堆栈以字为单位进行压入弹出操作。规定由 SS指示堆栈段的段基址,堆栈指针SP 始终指向堆栈的顶部,SP 的初值规定了所用堆栈区的大小。堆栈的最高地址叫栈底。压栈指令 PUSH PUSH src ; src 为 16 位操作数例: PUSH AX
20、;将 AX 内容压栈执行操作:( SP)-1高字节AH (SP)-2低字节AL (SP)( SP)- 2 注意进栈方向是高地址向低地址发展。 弹出指令 POP POP dest 例: POP BX ;将栈顶内容弹至BX 执行操作:(BL)( SP)(BH)( SP)+1 (SP)( SP)+2 堆栈指令在使用时需注意的几点:堆栈操作总是按字进行不能从栈顶弹出一个字给CS 堆栈指针为SS:SP,SP永远指向栈顶SP 自动进行增减量(-2,+2)(3) 、交换指令XCHG 格式: XCHG reg,mem/reg 功能:交换两操作数的内容。要求:两操作数中必须有一个在寄存器中;操作数不能为段寄存器
21、和立即数;源和目地操作数类型要一致。举例:XCHG AX,BX XCHG 2000 ,CL (4)查表指令XLAT 执行的操作:AL (BX)+(AL) 又叫查表转换指令,它可根据表项序号查出表中对应代码的内容。执行时先将表的首地址精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 20 页(偏移地址)送到BX 中,表项序号存于AL 中。2、输入输出指令只限于用累加器AL 或 AX 来传送信息。功能 : (累加器 ) I/O 端口(1)输入指令IN 格式 : IN acc,PORT ;PORT 端口号 0255H IN acc,DX ;DX
22、 表示的端口范围达64K 例 :IN AL ,80H ;(AL) (80H 端口 ) IN AL ,DX ;(AL) (DX) (2) 输出指令OUT 格式: OUT port,acc OUT DX,acc 例: OUT 68H ,AX ;(69H,68H)( AX )OUT DX ,AL ;(DX) (AL) 在使用间接寻址的IN/OUT 指令时,要事先用传送指令把I/O 端口号设置到DX 寄存器如:MOV DX ,220H IN AL ,DX; 将 220H 端口内容读入AL 3、目标地址传送指令(1)LEA 传送偏移地址格式: LEA reg,mem ; 将指定内存单元的偏移地址送到指定
23、寄存器要求:1)源操作数 必须是一个 存储器操作数;2)目的操作数必须是一个16 位的通用寄存器。例: LEA BX, SI+10H 设: (SI)=1000H 则执行该指令后, (BX) =1010H 注意以下二条指令差别:LEA BX ,BUFFER MOV BX ,BUFFER 前者表示将符号地址为BUFFER 的存储单元的偏移地址取到BX 中;后者表示将BUFFER 存储单元中的内容取到BX 中。下面两条指令等效:LEA BX ,BUFFER MOV BX, OFFSET BUFFER 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页
24、,共 20 页其中 OFFSET BUFFER表示存储器单元BUFFER 的偏移地址。二者都可用于取存储器单元的偏移地址,但LEA 指令可以取动态的地址,OFFSET 只能取静态的地址。二、算术运算指令1、 加法指令(1) 不带进位的加法指令ADD 格式:ADD acc,data ADD mem/reg,data ADD mem/reg1,mem/reg2 实例:ADD AL ,30H ADD SI,BX+20H ADD CX ,SI ADD DI ,200H ?ADD 指令对 6 个状态标志均产生影响。例:已知 (BX)=D75FH 指令ADD BX,8046H 执行后,状态标志各是多少?D
25、75FH = 1110 0111 0101 1111 8046H = 1000 0000 0100 0110 1 1 11 11 0110 0111 1010 0101结果: C=1, Z=0, P=0, A=1, O=1, S=0 判断溢出与进位(重点)从硬件的角度: 默认参与运算的操作数都是有符号数,当两数的符号位相同,而和的结果相异时有溢出,则OF=1,否则 OF=0 (2)带进位的加法ADC ADC 指令在形式上和功能上与ADD 类似,只是相加时还要包括进位标志CF 的内容,例如:ADC AL , 68H ; AL (AL)+68H+(CF) ADC AX , CX ;AX (AX)+
26、(CX)+(CF) ADC BX, DI ;BX (BX)+DI+1DI+(CF) (3)加 1指令 INC 格式: INC reg/mem 功能:类似于C 语言中的 +操作:对指定的操作数加1 例:INC AL INC SI INC BYTE PTRBX+4 注:本指令不影响CF标志。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 20 页(4)非压缩BCD 码加法调整指令AAA AAA 指令的操作:如果 AL 的低 4 位 9或 AF=1 ,则: AL (AL)+6,(AH) (AH)+1,AF 1 AL 高 4 位清零 CFAF
27、 否则 AL 高 4 位清零(5)压缩 BCD 码加法调整指令DAA 两个压缩BCD 码相加结果在AL 中,通过DAA 调整得到一个正确的压缩BCD 码. 指令操作 (调整方法 ):若 AL 的低 4 位 9 或 AF=1 则(AL) (AL)+6 ,AF 1 若 AL 的高 4 位 9 或 CF=1 则(AL) (AL)+60H ,CF1 除 OF 外, DAA 指令影响所有其它标志。DAA指令应紧跟在ADD或ADC指令之后。2、 减法指令(1)不考虑借位的减法指令SUB 格式: SUB dest, src 操作: dest (dest)-(src) 注:1. 源和目的操作数不能同时为存储器
28、操作数2. 立即数不能作为目的操作数指令例子:SUB AL,60H SUB BX+20H ,DX SUB AX,CX (2)考虑借位的减法指令SBB SBB指令主要用于多字节的减法。格式: SBB dest, src 操作: dest (dest)-(src)-(CF) 指令例子:SBB AX,CX SBB WORD PTRSI,2080H SBB SI,DX (3)减 1指令 DEC 作用类似于C语言中的”操作符。格式: DEC opr 操作: opr (opr)-1 指令例子:DEC CL 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11
29、页,共 20 页DEC BYTE PTRDI+2 DEC SI (4)求补指令NEG 格式:NEG opr 操作:opr 0-(opr) 对一个操作数取补码相当于用0 减去此操作数,故利用NEG 指令可得到负数的绝对值。例:若 (AL)=0FCH ,则执行NEG AL 后,(AL)=04H ,CF=1 (5)比较指令CMP 格式:CMP dest, src 操作:(dest)-(src) CMP 也是执行两个操作数相减,但结果不送目标操作数,其结果只反映在标志位上。指令例子:CMP AL ,0AH CMP CX ,SI CMP DI ,BX+03 (6)非压缩BCD 码减法调整指令AAS 对
30、AL中由两个非压缩的BCD码相减的结果进行调整。调整操作为:若 AL的低 4 位 9 或 AF=1,则: AL (AL)-6,AH (AH)-1,AF 1 AL 的高 4 位清零 CF AF 否则: AL的高 4 位清零(7)压缩 BCD码减法调整指令DAS 对 AL中由两个压缩BCD码相减的结果进行调整。调整操作为:若 AL的低 4 位 9 或 AF=1,则:AL(AL)-6, 且 AF1 若 AL的高 4 位 9 或 CF=1,则:AL(AL)-60H ,且 CF1 DAS对 OF无定义 , 但影响其余标志位。DAS指令要求跟在减法指令之后。3、 乘法指令进行乘法时: 8 位*8 位 16
31、 位乘积16 位*16 位 32 位乘积(1) 无符号数的乘法指令MUL(MEM/REG) 格式: MUL src 操作:字节操作数(AX)(AL) (src) 字操作数(DX, AX) (AX) (src) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 20 页指令例子:MUL BL ; (AL) ( BL), 乘积在 AX中MUL CX ; (AX) ( CX), 乘积在 DX,AX中MUL BYTE PTRBX (2)有符号数乘法指令IMUL 格式与 MUL 指令类似,只是要求两操作数均为有符号数 。指令例子:IMUL BL
32、;(AX) (AL) (BL) IMUL WORD PTRSI ;(DX,AX) (AX) (SI+1SI) 注意: MUL/IMUL指令中 AL(AX) 为隐含的乘数寄存器; AX(DX,AX) 为隐含的乘积寄存器; SRC 不能为立即数; 除 CF和 OF外,对其它标志位无定义。4、除法指令进行除法时: 16 位/8 位 8 位商32 位/16 位 16 位商对被除数、商及余数存放有如下规定:被除数商余数字节除法AX AL AH 字除法DX:AX AX DX (1)无符号数除法指令DIV 格式: DIV src 操作:字节操作(AL) (AX) / (SRC) 的商(AH)(AX) / (
33、SRC) 的余数字操作(AX) (DX, AX) / (SRC) 的商(DX) (DX, AX) / (SRC) 的余数指令例子:DIV CL DIV WORD PTRBX (2)有符号数除法指令IDIV 格式:IDIV src 操作与 DIV 类似。商及余数均为有符号数,且余数符号总是与被除数符号相同。注意 : 对于 DIV/IDIV指令AX(DX,AX)为隐含的被除数寄存器。AL(AX) 为隐含的商寄存器。AH(DX) 为隐含的余数寄存器。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 20 页src 不能为立即数。对所有条件标志
34、位均无定关于除法操作中的字长扩展问题?除法运算要求被除数字长是除数字长的两倍,若不满足则需 对被除数进行扩展,否则产生错误。?对于无符号数除法扩展,只需将AH 或 DX 清零即可。?对有符号数而言,则是符号位的扩展。可使用前面介绍过的符号扩展指令CBW 和 CWD 三、逻辑运算和移位指令1、逻辑运算指令(1)逻辑与AND 对两个操作数进行按位逻辑“与”操作。格式: AND dest, src 用途:保留操作数的某几位,清零其他位。例 1:保留 AL中低 4 位,高 4 位清 0。AND AL,0FH (2)逻辑或OR 对两个操作数进行按位逻辑” 或” 操作。格式: OR dest, src 用
35、途:对操作数的某几位置1;对两操作数进行组合。例 1:把 AL 中的非压缩BCD 码变成相应十进制数的ASCII 码。OR AL, 30H (3)逻辑非NOT 对操作数进行按位逻辑” 非” 操作。格式: NOT mem/reg 例: NOT CX NOT BYTE PTRDI (4)逻辑异或XOR 对两个操作数按位进行”异或”操作。格式: XOR dest, src 用途:对reg 清零 (自身异或 ) 把 reg/mem 的某几位变反 ( 与1异或 ) 例 1:把 AX寄存器清零。MOV AX,0 XOR AX,AX AND AX,0 SUB AX,AX精选学习资料 - - - - - -
36、- - - 名师归纳总结 - - - - - - -第 14 页,共 20 页(5)测试指令TEST 操作与 AND 指令类似 ,但不将 ” 与” 的结果送回 ,只影响标志位。TEST 指令常用于位测试,与条件转移指令一起用。例:测试 AL 的内容是否为负数。TEST AL,80H ;检查 AL 中 D7=1?JNZ MINUS ;是 1(负数 ),转 MINUS ;否则为正数2、移位指令(1)非循环移位指令(重点)算术左移指令SAL(Shift Arithmetic Left) 算术右移指令SAR(Shift Arithmetic Right) 逻辑左移指令SHL(Shift Left) 逻
37、辑右移指令SHR(Shift Right) 这 4 条指令的格式相同,以 SAL 为例:CL ;移位位数大于1时SAL mem/reg 1;移位位数等于1 时? 算术移位 把操作数看做有符号数;逻辑移位 把操作数看做无符号数。? 移位位数放在CL 寄存器中,如果只移1 位,也可以直接写在指令中。例如:MOV CL,4 SHR AL,CL ;AL 中的内容右移4 位? 影响 C,P,S,Z,O 标志。? 结果未溢出时:左移 1 位操作数 *2 右移 1 位操作数 /2例:把 AL 中的数 x 乘 10因为 10=8+2=23+21,所以可用移位实现乘10 操作。程序如下:MOV CL,3 SAL
38、 AL,1 ; 2xMOV AH,AL SAL AL,1 ; 4xSAL AL,1 ; 8xADD AL,AH ; 8x+2x = 10 x四、控制转移指令1、 转移指令(1)无条件转移指令JMP 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 15 页,共 20 页格式: JMP label 本指令无条件转移到指定的目标地址,以执行从该地址开始的程序段。(2)条件转移指令(补充内容)(重点) 根据单个标志位设置的条件转移指令JB/JC ;低于 ,或 CF=1,则转移JNB/JNC/JAE ;高于或等于,或 CF=0,则转移JP/JPE ;奇偶标志
39、PF=1(偶),则转移JNP/JPO ;奇偶标志PF=0(奇 ),则转移JZ/JE ;结果为零 (ZF=1), 则转移JNZ/JNE ;结果不为零 (ZF=0), 则转移JS ;SF=1,则转移JNS ;SF=0,则转移JO ; OF=1,则转移JNO ; OF=0,则转移根据组合条件设置的条件转移指令这类指令主要用来判断两个数的大小。判断无符号数的大小JA 高于则转移条件为 : CF=0ZF=0 ,即 AB JNA/JBE 低于或等于则转移条件为 : CF=1 ZF=1,即 AB JB AB 则转移JNB AB 则转移判断有符号数的大小JG ;大于则转移 (A B)条件为 : (SF OF=
40、0)ZF=0 JGE;大于或等于则转移(A B) 条件为 : (SF OF=0)ZF=1JLE;小于或等于则转移(A B) 条件为 : (SFOF=1) ZF=1 JL;小于则转移(A B条件为 : (SF OF=1)ZF=0 2、循环控制指令用在循环程序中以确定是否要继续循环。循环次数通常置于CX 中。转移的目标应在距离本指令-128+127 的范围之内。循环控制指令不影响标志位。(1)LOOP格式: LOOP label精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 16 页,共 20 页操作: (CX)-1 CX ;若(CX) 0,则转至 l
41、abel 处执行 ;否则退出循环 ,执行 LOOP 后面的指令。LOOP 指令与下面的指令段等价:DEC CX JNZ label 3、过程调用指令(1)调用指令CALL 一般格式: CALL sub;sub 为子程序的入口4、中断指令(1)INT n 执行类型 n 的中断服务程序,N=0 255五、处理器控制指令1、标志位操作(1)CF 设置指令CLC0CFSTC1CFCMCCF 变反(2)DF 设置指令CLD0DF (串操作的指针移动方向从低到高)STD1DF (串操作的指针移动方向从高到低) (3)IF 设置指令CLI0IF (禁止 INTR 中断 )STI1 IF (开放 INTR 中
42、断 ) 2、 HLT( halt)执行 HLT 指令后, CPU 进入暂停状态。第四章8086汇编语言程序设计第一节伪指令(重点)CPU 指令与伪指令之间的区别:(1)CPU 指令是给CPU 的命令,在运行时由CPU 执行,每条指令对应CPU 的一种特定的操作。而伪指令是给汇编程序的命令,在汇编过程中由汇编程序进行处理。(2)汇编以后, 每条 CPU 指令产生一一对应的目标代码;而伪指令则不产生与之相应的目标代码。1、数据定义伪指令(1)数据定义伪指令的一般格式为:变量名 伪指令操作数 ,操作数 DB 用来定义字节(BYTE )DW 用来定义字(WORD )DD 用来定义双字(DWORD )精
43、选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 17 页,共 20 页(2)操作数的类型可以是:常数或常数表达式例如:DATA_BYTE DB 10,5,10HDATA_WORD DW 100H,100,-4 DATA_DW DD 2*30,0FFFBH 可以为字符串(定义字符串最好使用DB )例如: char1 DB AB可以为变量可以为?号操作符例如: X DB 5,?, 6 ?号只是为了给变量保留相应的存储单元,而不赋予变量某个确定的初值。重复次数: N DUP (初值 ,初值 )例如: ZERO DB 2 DUP(3, 5)XYZ DB 2
44、DUP (0, 2 DUP (1,3) ,5)在伪操作的操作数字段中若使用$,则表示的是地址计数器的当前值。2、补充内容:(1)类型PTR 地址表达式例如:MOV BYTE PTR BX,12H INC BYTE PTR BX 注意:单操作数指令,当操作数为基址、变址、基+变的时候必须定义3、符号定义伪指令(1)EQU 格式:名字EQU 表达式EQU 伪指令将表达式的值赋予一个名字,以后可用这个名字来代替上述表达式。例: CONSTANT EQU 100NEW_PORT EQU PORT_VAL+1 (2) =(等号)与 EQU 类似 ,但允许重新定义例:EMP=7 ;值为 7 EMP=EMP
45、+1 ;值为 8(3)LABEL LABEL 伪指令的用途是定义标号或变量的类型格式:名字LABEL 类型变量的类型可以是BYTE ,WORD ,DWORD 。标号的类型可以是NEAR 或 FAR 4、段定义伪指令与段有关的伪指令有:SEGMENT 、ENDS、ASSUME 、ORG 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 18 页,共 20 页(1)段定义伪指令的格式如下:段名 SEGMENT 定位类型 组合类型 类别 段名 ENDS SEGMENT 和 ENDS这两个伪指令总是成对出现,二者前面的段名一致。二者之间的删节部分,对数据段、
46、附加段及堆栈段,一般是符号、变量定义等伪指令。对于代码段则是指令及伪指令。此外,还必须明确段和段寄存器的关系,这可由ASSUME 语句来实现。(2)ASSUME 格式:ASSUME 段寄存器名:段名,段寄存器名:段名,ASSUME伪指令告诉汇编程序,将某一个段寄存器设置为某一个逻辑段址,即明确指出源程序中逻辑段与物理段之间的关系。(3)ORG 伪指令 ORG 规定了段内的起始地址或偏移地址,其格式为:ORG 表达式的值即为段内的起始地址或偏移地址,从此地址起连续存放程序或数据。5、汇编程序的一般结构(重点) (记住)DATA SEGMENT DATA ENDS CODE SEGMENT ASS
47、UME CS:CODE,DS:DATA BGN: MOV AX ,DATA MOV DS,AX .MOV AH,4CH INT 21H CODE ENDS END BGN第三节程序设计1、 顺序程序的设计(略)2、 分支程序的设计典型例题:1 X0 Y = 0 X=0 -1 X0 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 19 页,共 20 页程序为:MOV AL ,X CMP AL,0 JGE BIG MOV Y,-1 JMP EXIT BIG :JE EQUL MOV Y,1 JMP EXIT EQUL :MOV Y,0 EXIT :.3、 循环程序见讲义。用计数控制循环精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 20 页,共 20 页