微机原理与接口技术-电子教案-梁建武第3章

上传人:E**** 文档编号:94556882 上传时间:2019-08-08 格式:PPT 页数:137 大小:2.48MB
返回 下载 相关 举报
微机原理与接口技术-电子教案-梁建武第3章_第1页
第1页 / 共137页
微机原理与接口技术-电子教案-梁建武第3章_第2页
第2页 / 共137页
微机原理与接口技术-电子教案-梁建武第3章_第3页
第3页 / 共137页
微机原理与接口技术-电子教案-梁建武第3章_第4页
第4页 / 共137页
微机原理与接口技术-电子教案-梁建武第3章_第5页
第5页 / 共137页
点击查看更多>>
资源描述

《微机原理与接口技术-电子教案-梁建武第3章》由会员分享,可在线阅读,更多相关《微机原理与接口技术-电子教案-梁建武第3章(137页珍藏版)》请在金锄头文库上搜索。

1、微机原理及接口技术,主编 梁建武,中国水利水电出版社,3.1 汇编语言程序设计基础,以助记符形式表示计算机指令 助记符(mnemonic)是便于人们记忆、并能描述指令功能和指令操作数的符号 助记符是表明指令功能的英语单词或其缩写 汇编格式指令以及使用它们编写程序的规则就形成汇编语言(Assembly Language) 汇编语言程序:用汇编语言书写的程序 汇编程序:将汇编语言程序“汇编”成机器代码目标模块的程序,3.1.1 汇编语言特点,汇编语言的优点: 直接控制计算机硬件部件 编写“时间”和“空间”两方面最有效程序 汇编语言的缺点: 与处理器密切有关 需要熟悉计算机硬件系统、考虑许多细节 编

2、写繁琐,调试、维护、交流和移植困难,3.1.2 8086指令系统概述,Intel 8086指令系统共有117条基本指令 可分成6个功能组 数据传送类指令 算术运算类指令 位操作类指令 串操作类指令 控制转移类指令 处理机控制类指令,由4部分组成: 标号:-标号表示该指令在主存中的逻辑地址 指令助记符-代表一种指令 目的操作数,源操作数-表示参与操作的对象 ;注释-对该指令或程序段功能的说明,3.1.2 8086指令系统概述,1.数据传送类指令,数据传送指令是将源操作数传送到目标操作数,即将数据、地址或立即数从一个位置传送到存储单元中。数据传送指令是最常使用的一类指令 除标志寄存器传送指令外,均

3、不影响标志位 指令包括:MOV,PUSH,POP,XCHG,LEA,LDS/LES,XLAT,IN,OUT,(1)传送指令MOV,MOV reg/mem,imm 立即数送寄存器或主存 MOV reg/mem/seg,reg 寄存器送(段)寄存器或主存 MOV reg/seg,mem 主存送(段)寄存器 MOV reg/mem,seg 段寄存器送寄存器或主存 举例,演示,MOV 举例,例:MOV数据传送 MOV AL, 20H MOV AH, AL MOV SI, 200H MOV AX, BX MOV DI, AX MOV AX, DS MOV ES, AX MOV BYTE PTR SI,0

4、AH Mov WORD PTR SI+2,0BH,(2)堆栈指令PUSH POP,堆栈:后进先出FILO,位于堆栈段;SS段寄存器记录其段地址 堆栈只有一个出口,即当前栈顶;用堆栈指针寄存器SP指定,演示,PUSH 格式:PUSH src 操作:SPSP2,SS:SPsrc,将堆栈指针SP减2,再将src压入堆栈顶部,src为16位操作数 例: PUSH AX ;将AX内容压入堆栈 ;(SP)1AH,高地址存入高字节 ; (SP)2AL,低地址存入低字节 ; (SP)(SP)2,SP指向新栈顶,PUSH压入堆栈指令,演示,POP 格式:POP dest 操作:destSS:SP,SPSP 2,

5、将栈顶的一个字弹出传送到dest,再将SP加2,将SP指向新的栈顶,dest 的寻址方式是除立即寻址之外的所有存储器寻址方式和寄存器寻址方式。 例: POP BX ;将栈顶内容弹出到BX ;(BL)(SP),低地址弹出到低字节 ;(BH)(SP) 1,高地址弹出到高字节 ;(SP)(SP) 2,SP指向新栈顶,POP弹出堆栈指令,演示,(3)交换指令XCHG,把两个地方的数据进行互换 XCHG reg,reg/mem ;reg reg/mem 寄存器与寄存器之间对换数据 寄存器与存储器之间对换数据 不能在存储器与存储器之间对换数据 举例,演示,(3)交换指令XCHG 举例,例: MOV AX,

6、 1234H XCHG AH, AL ;AX高低字节交换, ;结果:AX = 3412H MOV BX, 0ABCDH XCHG AX, BX ;AX与BX交换内容, ;结果:AX = 0ABCDH ;BX = 3412H XCHG 2000H, CL 将DS:2000H内容与 ;CL计数器低字节进行字节交换,(4)有效地址传送指令LEA,将存储器操作数的有效地址传送至指定的16位寄存器中 LEA r16,mem ;r16mem的有效地址EA 举例,(4)有效地址传送指令LEA 举例,例: 设:(SI)=2000H LEA BX,SI3412H 执行指令结果将偏移地址3010H传送到BX, 即

7、(BX)=5412H,(5) LDS/LES指针传送指令,LDS r16,mem ;r16mem, ;DSmem+2 LDS指令将主存中mem指定的字送至r16,并将mem的下一字送DS寄存器,LES r16,mem ;r16mem, ;ESmem+2 LES指令将主存中mem指定的字送至r16,并将mem的下一字送ES寄存器,(6)XLAT换码指令,将BX指定的缓冲区中、AL指定的位移处的一个字节数据取出赋给AL XLAT ;ALDS:BX+AL 换码指令执行前: 主存建立一个字节量表格,含要转换成的目的代码 表格首地址存放于BX,AL存放相对表格首的位移量 换码指令执行后: 将AL寄存器的

8、内容转换为目标代码,演示,2.输入输出指令,8086通过输入输出指令与外设进行数据交换;呈现给程序员的外设是端口(Port)即I/O地址 8086用于寻址外设端口的地址线为16条,端口最多为21665536(64K)个,端口号为0000HFFFFH 每个端口用于传送一个字节的外设数据,(1)IN输入指令,将外设数据传送给CPU内的AL/AX IN AL,i8 ;字节输入:ALI/O端口(i8直接寻址) IN AL,DX ;字节输入:ALI/O端口(DX间接寻址) IN AX,i8 ;字输入:AXI/O端口(i8直接寻址) IN AX,DX ;字输入:AXI/O端口(DX间接寻址) 举例,例:

9、IN AL, 80H ;(AL)(80H端口),从80H端口读入字节信息存放在AL寄存器 IN AX, DX ;(AL)(DX),从DX中装载的端口读入字信息存放在AX寄存器,(1)IN输入指令 举例,(2)OUT输入指令,将CPU内的AL/AX数据传送给外设 OUT i8,AL ;字节输出:I/O端口AL(i8直接寻址) OUT DX,AL ;字节输出:I/O端口AL(DX间接寻址) OUT i8,AX ;字输出:I/O端口AX(i8直接寻址) OUT DX,AX ;字输出:I/O端口AX(DX间接寻址) 举例,(2)OUT输入指令 举例,例:以下指令实现将外部设备端口80H的字节信息传送到

10、存储单元DDATA;从外设端口0A2FH端口读入一字信息,再将读入的信息输出到端口0AA5H的外设上。 DDATA DW ? IN AX, 80H MOV DDATA, AX MOV DX, 0A2FH IN AX, DX MOV DX, 0AA5H OUT DX, AX,3.算术运算指令,四则运算是计算机经常进行的一种操作。算术运算指令实现二进制(和十进制)数据的四则运算 请注意算术运算类指令对标志的影响 指令包括:ADD、ADC、INC、DAA、AAA、SUB、SBB、DEC、CMP、NEG、AAS/DAS、MUL、IMUL、DIV、IDIV、CBW、CWD、,(1) ADD加法指令,AD

11、D指令将源与目的操作数相加,结果送到目的操作数 ADD指令按状态标志的定义相应设置 ADD reg,imm/reg/mem ;regregimm/reg/mem ADD mem,imm/reg ;memmemimm/reg 举例,(1) ADD加法指令 举例,例: ADD AL, 12H ;AL中内容和12H相加,结果放在AL中 ADD SI, BX20H ;SI中内容和BX20H ;BX21H所指两存储单元内容相加,结果在SI中 ADD SI, CX ;SI和CX内容相加,结果在SI中 ADD BXSI, AX ;BXSI和BXSI1两单元内容与AX中内容相加 ;结果在BXSI,BXSI1所

12、指单元中,(2) ADC带进位的加法,ADC指令将源与目的操作数相加,再加上进位CF标志,结果送到目的操作数 ADC指令按状态标志的定义相应设置 ADC指令主要与ADD配合,实现多精度加法运算 ADC reg,imm/reg/mem ;regregimm/reg/memCF ADC mem,imm/reg ;memmemimm/regCF 举例,(2) ADC带进位的加法 举例,例: ADC AL, 34H ;AL(AL)34H(CF) ADC AX, CX ;AX(AX)(CX)(CF) ADC BX,DI ;BX(BX)DI1DI(CF),(3) INC加1指令,INC指令对操作数加1(增

13、量) INC指令不影响进位CF标志,按定义设置其他状态标志 INC reg/mem ;reg/memreg/mem1 例: INC BX INC BYTE PTR BX,(4) SUB 不考虑借位的减法指令,SUB指令将目的操作数减去源操作数,结果送到目的操作数 SUB指令按照定义相应设置状态标志 SUB reg,imm/reg/mem ;regregimm/reg/mem SUB mem,imm/reg ;memmemimm/reg 举例,(4) SUB 不考虑借位的减法指令 举例,例: SUB AH, 0F0H ;AH (AH) 0F0H SUB BX20H, DX ;BX20H (BX2

14、0H) (DX) SUB AX, CX,(5) SBB 考虑借位的减法指令,SBB指令将目的操作数减去源操作数,再减去借位CF(进位),结果送到目的操作数。 SBB指令按照定义相应设置状态标志 SBB指令主要与SUB配合,实现多精度减法运算 SBB reg,imm/reg/mem ;regregimm/reg/memCF SBB mem,imm/reg ;memmemimm/regCF 举例,(5) SBB 考虑借位的减法指令 举例,例: MOV AX, 5678H MOV DX, 1234H SUB AX, 6789H ;CF = 1 SBB DX, 1122H ;DX = 0111H,(6

15、) DEC 减1指令,DEC指令对操作数减1(减量) DEC指令不影响进位CF标志,按定义设置其他状态标志 DEC reg/mem ;reg/memreg/mem1,(7) CMP 比较指令,CMP指令将目的操作数减去源操作数,按照定义相应设置状态标志 CMP指令执行的功能与SUB指令,但结果不回送目的操作数 CMP reg,imm/reg/mem ;regimm/reg/mem CMP mem,imm/reg ;memimm/reg 举例,(7) CMP 比较指令 举例,例: CMP AL, 0AH CMP CX, DI CMP DI, BX03 CMP AX, AREA1,(7) NEG 求补指令,NEG指令对操作数执行求补运算:用零减去操作数,然后结果返回操作数 求补运算也可以表达成:将操作数按位取反后加1 NEG指令对标志的影响与用零作减法的SUB指令一样 NEG reg/mem ;reg/mem0reg/mem,(8)乘法指令,举例,MUL r8/m8 ;无符号字节乘法 ;AXALr8/m8 MUL r16/m16 ;无符号字乘法 ;DX.AXAXr16/m16,IMUL r8/m8 ;有符号字节乘法 ;AXA

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号