第2章 汇编语言与汇编程序 ——8086/8088指令系统 mov ax,12h call display Jmp 1234h.

Slides:



Advertisements
Similar presentations
22.3 实际问题与一元二次方程(1).
Advertisements

输入输出程序设计 输入输出的基本概念 无条件方式输入输出 查询方式输入输出 中断方式输入输出.
汇编语言程序设计 吴 向 军 中山大学计算机科学系
第10章 DOS功能调用与BIOS中断调用.
1.1 计算机系统简介 1.2 计算机的基本组成 1.3 计算机硬件的主要技术指标 1.4 本书结构.
第一章 计算机基础知识 第一节 计算机概述 一、计算机的基本组成和工作原理 二、有关术语 三、计算机发展简史 四、微型计算机概述
汇编语言与接口技术 教师:范新民.
第三章 80 x86的指令系统和寻址方式 3.1 指令概述 x86的寻址方式 ( ※ ) 3.3 程序占有的空间和执行的时间
 指令系统  寻址方式 第3章 80x86的指令系统和寻址方式 一组指令的集合 指令 与数据有关的寻址方式 与转移地址有关的寻址方式
4.1 汇编语言 4.2 顺序结构程序 4.3 分支程序设计 4.4 循环程序设计 4.5 子程序设计
9.1 可编程并行输入/输出接口芯片8255A 9.2 可编程计数器/定时器 可编程串行输入/输出接口芯片8251A
3.3.5 程序控制指令 控制转移指令分为: 转移指令 循环控制指令 调用和返回指令 中断指令.
第三章 CPU子系统 西南石油大学计算机科学学院 主讲教师 杨 梅 联系电话:
第5章 循环与分支程序设计  循环程序设计  分支程序设计.
汇编语言程序设计 Assembly Language Programming
微型计算机技术 教 学 指 导(三) 太原广播电视大学 郭建勇.
第三章 寻址方式与指令系统 3.1 寻址方式 一条指令通常由两大部分构成: 操作码 操作数
逆向工程-汇编语言
微机原理与接口技术 第3章 8086指令系统 朱华贵 2015年09月25日.
/8088指令系统 为便于理解指令的形式和功能, 对指令中操作数符号的约定如下: 大小写字母无区别
第6章 DMA传输 6.1 DMA传输原理 6.2 DMA控制器8237A A的编程使用 欢迎辞.
微机原理与接口技术 第2章 8086系统结构 朱华贵 2015年09月17日.
第四章 典型CPU及指令系统举例.
第八章 输入输出程序设计 总线 CPU MEM I/O接口 I/O设备.
第3章 80x86汇编语言程序设计(上) 时间不够的情况下只讲16位汇编 注:本章中,用此颜色和字型说明的文字只适用于32位汇编.
总 复 习.
第3章 寻址方式 罗文坚 中国科大 计算机学院
第8章 寻址方式与指令系统.
微机原理及应用 主讲:谢维成 西华大学 电气信息学院 1.
第3章 8086/8088指令系统 mov ax,12h call display Jmp 1234h.
微机原理及应用 主讲:郑海春.
7.1 机器指令 7.2 操作数类型和操作类型 7.3 寻址方式 7.4 指令格式举例 7.5 RISC 技术.
微机原理与接口技术 ——80x86微处理器 西安邮电大学 计算机学院 范琳.
第一章 8086程序设计 第二章 MCS-51程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
第3章 80x86汇编语言程序设计(上) 时间不够的情况下只讲16位汇编 注:本章中,用此颜色和字型说明的文字只适用于32位汇编.
汇编语言程序设计课程设计 第二次实验 DEBUG基本命令与算术运算指令
微型计算机原理及应用.
第五章 微处理器.
8086 指令系统特点 可变长指令:指令格式比较复杂。
computer organization principle
第六章 子程序结构 §6.1 子程序的设计方法 §6.2 嵌套与递归子程序 §6.3 子程序举例 §6.4 DOS系统功能调用.
1.3 微型计算机的结构和工作原理.
逆向工程-汇编语言
CPU结构和功能.
第3章 MCS-51单片机指令系统 3.1 指令概述 3.2 寻址方式 3.3 MCS-51系列单片机的指令系统.
第二章 80x86计算机组织 x86微处理器 2.2 基于微处理器的计算机系统构成 2.3 中央处理机 2.4 存储器
微机原理与接口技术 ——80x86微处理器 西安邮电大学 计算机学院 范琳.
4.1 汇编语言程序格式 4.2 MASM中的表达式 4.3 伪指令语句 4.4 DOS系统功能调用和BIOS中断调用
教师:王晓甜 8086CPU 指令系统 教师:王晓甜
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月19日.
第五章:输入输出基本技术 主讲教师:范新民.
第二章 8086微处理器. 第二章 8086微处理器 微处理器的基本结构 8086微处理器的主要特性和内部结构 8086CPU的工作模式和引脚信号 8086的存储器管理 8086的总线操作和时序.
《微型计算机原理与接口技术》 第4版 王良 宁德师范学院 吴宁 乔亚男 编著 清华大学出版社 出版
第九章 微处理器外部结构和总线操作时序.
习题3 1、 分别说明下列指令的原操作数和目的操作数各采用什么寻址方式。 设定如下: ①立即寻址 ② ① ②寄存器寻址
第3章 指令系统和寻址方式 3.1指令系统概述 /8086CPU的寻址方式 3.3 指令的机器码表示方法(略)
第2章 80x86计算机组织  计算机系统  存储器  中央处理机  外部设备.
《微型计算机原理与接口技术》 第4版 王良 宁德师范学院 吴宁 乔亚男 编著 清华大学出版社 出版
第5章 循环与分支程序设计  循环程序设计  分支程序设计.
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
微机原理与接口技术 ——8086微处理器 西安邮电大学 计算机学院 范琳.
单片机应用技术 项目一 循环彩灯装置 第5讲 MCS-51单片机指令系统及指令格式 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月06日.
3. 逻辑运算指令 A、简单逻辑操作指令 CLR A. (不影响CY、AC、 OV标志) CPL A
本节内容 通用寄存器 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
微机原理与接口技术 西安邮电大学计算机学院 宁晓菊.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
微机原理与接口技术 第5章 汇编语言程序设计 西安邮电大学计算机学院 王 钰.
第4章 指 令 系 统 4.1 指令系统的发展与性能要求 4.2 指令格式 4.3 指令和数据的寻址方式 4.4 典型指令
第三章 CPU子系统 西南石油大学计算机科学学院 主讲教师 杨 梅 联系电话:
Presentation transcript:

第2章 汇编语言与汇编程序 ——8086/8088指令系统 mov ax,12h call display Jmp 1234h

主要内容: 指令系统的一般概念 对操作数的寻址方式 六大类指令的操作原理: 操作码的含义 指令对操作数的要求 指令执行的结果

3.1 概述 8088/8086指令系统: (1)指令向后兼容(x86系列) (2)应用广泛,资料易于寻找 3.1 概述 指令——控制计算机完成指定操作的命令 机器指令——指令的二进制代码形式。例如:CD21H 汇编指令——助记符形式的指令。例如:INT 21H 指令系统——CPU所有指令及其使用规则的集合 8088/8086指令系统: (1)指令向后兼容(x86系列) (2)应用广泛,资料易于寻找

指令按功能分为六大类(92种) (1)数据传送类; (2)算术运算类; (3)逻辑运算和移位; (4)串操作; (5)控制转移类; (6)处理器控制。

3.1.1 指令的基本构成 目的 源 操作码 [操作数], [操作数] 说明要执行的是什么操作 操作对象,可以有0个、1个或2个

指令举例: MOV AX , BX 操作码 操作数 ADD AX,[SI+6] INC [BX] HLT

部分8088常用指令 指令类型 助记符 数 据 传 送 数据传送 MOV,PUSH/POP,XCHG等 地址传送 LEA,LDS,LES 输入输出 IN,OUT 算 术 运 加法 ADD,ADC,INC 减法 SUB,SBB,DEC,NEG,CMP 乘/除法 MUL,IMUL,DIV,IDIV 逻辑 AND,OR,NOT,XOR,TEST 移位 SHL/SHR/SAR,ROL/ROR,RCL/RCR 串操作 MOVS,CMPS,SCAS,LODS,STOS 控制转移 JMP,JXX,LOOP,CALL/RET,INT/IRET

8088/8086的操作数分为3类 1、立即数(常数) 立即数只能用作源操作数,如 取值范围如下表: 8位 16位 无符号数 00H-FFH(0-255) 0000H-FFFFH(0-65535) 带符号数 80H-7FH(-128~127) 8000H-7FFFH(-32768~32767) 立即数只能用作源操作数,如 MOV AX,0FA00H ;正确 MOV 8000H,DX ;错误

2、寄存器操作数 放在8个通用寄存器或4个段寄存器中的操作数

SI DI 只能存放字操作数 BP SP CS 段寄存器存放当前操作数的段基地址 DS ES SS 不允许将立即数传送到段寄存器

3、存储器操作数 类型 存储单元个数 字节 字 双字 1 2 4 存储器操作数 一般不允许两个操作数同时为存储器操作数

存储单元的物理地址 = 段基地址 + 偏移地址 若指令中没有指明所涉及的段寄存器,CPU就采用默认的段寄存器来确定操作数所在的段。 表3.3 段寄存器使用的一些基本约定 存储器操作数的偏移地址(也称有效地址)可以通过不同的寻址方式由指令给出。 例如,若(BX)=2000H, (SI)=0A00H, (DI)=2A00H,则以下指令的结果是一样的: MOV AL, [2A00H] MOV AL, [BX+0A00H] MOV AL, [BX][SI] MOV AL, [DI]

3.1.2 指令的执行时间 一条指令的执行时间=∑ 单位用时钟周期数表示 结论: 1)尽量使用寄存器作为操作数 3.1.2 指令的执行时间 取指令 取操作数 执行指令 传送结果 一条指令的执行时间=∑ 单位用时钟周期数表示 表3.4 常用指令执行时间 结论: 1)尽量使用寄存器作为操作数 2)若有可能,用移位代替乘除法 3)尽量使用简单的寻址方式

3.2 8086的寻址方式 寻址方式——寻找操作数的方法 寻找操作数的地址(一般指源操作数) 寻找要执行的下一条指令的地址 3.2 8086的寻址方式 寻址方式——寻找操作数的方法 寻找操作数的地址(一般指源操作数) 寻找要执行的下一条指令的地址 在8086指令系统中,说明操作数所在地址的寻址方式可分为8种: ①立即寻址 ⑤ 寄存器相对寻址 ②直接寻址 ⑥基址-变址寻址 ③寄存器寻址 ⑦相对的基址-变址寻址 ④寄存器间接寻址 ⑧隐含寻址

3.1.2 立即寻址 操作数(为一常数)直接由指令给出 (此操作数称为立即数) 立即寻址只能用于源操作数 例: MOV AX, 1C8FH 3.1.2 立即寻址 操作数(为一常数)直接由指令给出 (此操作数称为立即数) 立即寻址只能用于源操作数 例: MOV AX, 1C8FH MOV BYTE PTR[2A00H], 8FH 错误例: × MOV 2A00H, AX ; 错误!

指令操作例:MOV AX,3102H ; AX 3102H 执行后,(AH) = 31H,(AL) = 02H 存储器 02H 31H AX 立即寻址指令在存储器中的存放形式 AH AL MOV操作码 操作码 代码段 立即数 02H 低8位 代码段 高8位 31H

3.2.2 直接寻址 指令中直接给出操作数的16位偏移地址 偏移地址也称为有效地址(EA, Effective Address) 3.2.2 直接寻址 指令中直接给出操作数的16位偏移地址 偏移地址也称为有效地址(EA, Effective Address) 默认的段寄存器为DS,但也可以显式地指定其他段寄存器——称为段超越前缀 偏移地址也可用符号地址来表示,如ADDR、VAR 例: MOV AX , [2A00H] MOV DX , ES: [2A00H] MOV SI , TABLE_PTR

. 指令操作例:MOV AX,[3102H] AL (3102H) , AH (3103H) MOV操作码 02H 31H AH AL 如果(DS)=2000H, (23012H) = CDH, (23013H) = ABH 则操作数的物理地址为: 20000H+3102H = 23102H 指令执行后:(AX) = ABCDH 存储器 MOV操作码 代码段 02H 31H AH AL . 数据段 23102H CDH ABH

3.2.3 寄存器寻址 操作数放在某个寄存器中 源操作数与目的操作数字长要相同 寄存器寻址与段地址无关 例: MOV AX, BX 3.2.3 寄存器寻址 操作数放在某个寄存器中 源操作数与目的操作数字长要相同 寄存器寻址与段地址无关 例: MOV AX, BX MOV [3F00H], AX MOV CL, AL 错误例: × MOV AX, BL ; 字长不同 × MOV ES: AX, DX ; 寄存器与段无关

指令操作例:MOV SI,AX ; SI (AX) 指令执行前:(AX)=2233H 指令执行后:(AX)=2233H,(SI)=2233H

3.2.4 寄存器间接寻址 EA = 操作数的偏移地址(有效地址EA)放在寄存器中 只有SI、DI、BX和BP可作间址寄存器 错误例 : 3.2.4 寄存器间接寻址 操作数的偏移地址(有效地址EA)放在寄存器中 只有SI、DI、BX和BP可作间址寄存器 例: MOV AX, [BX] MOV CL, CS:[DI] 错误例 : × MOV AX, [DX] × MOV CL, [AX] (BX) (BP) (SI) (DI) EA =

60000 61200 指令操作例:MOV AX,[SI] 44H 33H 6000 1200 DS SI AX 存储器 数据段 若 (DS)=6000H, (SI)=1200H, (61200H)=44H, (61201H)=33H 则指令执行后,(AX)=3344H。 44H 33H 6000 1200 DS SI 60000 61200 61200H AX 存储器 数据段 +)

3.2.5 寄存器相对寻址 + 位移量 EA = EA=间址寄存器的内容加上一个8/16位的位移量 8位 16位 3.2.5 寄存器相对寻址 EA=间址寄存器的内容加上一个8/16位的位移量 (BX) (BP) (SI) (DI) 8位 16位 + EA = 位移量 寄存器相对寻址常用于存取表格或一维数组中的元素——把表格的起始地址作为位移量,元素的下标值放在间址寄存器中(或反之)

MOV AX, [BP+1000H] ; 默认段寄存器为SS 指令操作例:MOV AX,DATA[BX] 例: MOV AX, [BX+8] MOV CX, TABLE[SI] MOV AX, [BP+1000H] ; 默认段寄存器为SS 指令操作例:MOV AX,DATA[BX] 若(DS)=6000H, (BX)=1000H, DATA=2A00H, (63A00H)=66H, (63A01H)=55H 则物理地址 = 60000H + 1000H + 2A00H = 63A00H 指令执行后:(AX)=5566H (见下页图示)

. DS 6000 BX 1000 + DATA 2A00 . 63A00 63A00H . MOV AX,DATA[BX] 操作码 代码段 BX 1000 00 偏移量低 2A 偏移量高 + DATA 2A00 . 63A00 63A00H 66H 数据段 55H AX AH AL .

3.2.6 基址-变址寻址 + EA = 若操作数的偏移地址: 由基址寄存器(BX或BP)给出 —— 基址寻址方式 3.2.6 基址-变址寻址 若操作数的偏移地址: 由基址寄存器(BX或BP)给出 —— 基址寻址方式 由变址寄存器(SI或DI)给出 —— 变址寻址方式 由一个基址寄存器的内容和一个变址寄存器的内容相加而形成操作数的偏移地址,称为基址-变址寻址。 (BX) (BP) (SI) (DI) + EA = 同一组内的寄存器不能同时出现。

例: MOV AX, [BX] [SI] MOV AX, [BX+SI] MOV AX, DS: [BP] [DI] 错误例: × MOV AX, [BX] [BP] × MOV AX, [DI] [SI]

指令操作例:MOV AX,[BX][SI] 假定:(DS)=8000H, (BX)=2000H, SI=1000H 则物理地址 = 80000H + 2000H + 1000H = 83000H 指令执行后: (AL)=[83000H] (AH)=[83001H] . DS 8000 操作码 代码段 BX 2000 + SI 1000 . 83000 83000H YY 数据段 XX AX AH AL .

3.2.7 相对的基址-变址寻址 + + 位移量 EA = 在基址-变址寻址的基础上再加上一个相对位移量 注意事项同基址-变址寻址 (BX) (BP) (SI) (DI) 8位 16位 + + EA = 位移量 例: MOV AX,BASE [SI] [BX] MOV AX,[BX+BASE] [SI] MOV AX,[BX+SI+BASE] MOV AX,[BX] BASE [SI] MOV AX,[BX+SI] BASE

指令操作例:MOV AX,DATA[DI][BX] 若(DS)=8000H, (BX)=2000H, (DI)=1000H, DATA=200H 则指令执行后(AH)=[83021H], (AL)=[83020H] . DS 8000 操作码 BX 2000 代码段 DI 1000 + DATA 0200 . 83200 83200H YY 数据段 XX . AX AH AL

使用相对的基址-变址寻址方式可以很方便地访问二维数组。 位移量 数组首地址 (偏移地址) 基址寄存器 数组元素行址 (行位移地址) 变址寄存器 数组元素列址 (行内元素下标) 二维数组例:内存图示(按行存储) 1 8 3 2 5 2 4 0 9 A =

3.2.8 隐含寻址 (AL)×(BL)→AX 指令操作数是隐含的,在指令中未显式地指明。 例:MUL BL 指令隐含了被乘数AL及乘积AX 3.2.8 隐含寻址 指令操作数是隐含的,在指令中未显式地指明。 例:MUL BL 指令隐含了被乘数AL及乘积AX 类似的指令还有:DIV、CBW、MOVS等 (AL)×(BL)→AX

小结 指令由( )和( )构成 操作码 操作数 如何取得操作数——称为( ) 寻址方式

立即寻址 直接寻址 寄存器寻址 寻址方式可分为 寄存器间接寻址 寄存器相对寻址 基址-变址寻址 基址-变址相对寻址

寄存器间接、寄存器相对、基址变址、相对基址变址四种寻址方式的比较: 寻址方式 指令操作数形式 寄存器间接 只有一个寄存器(BX/BP/SI/DI之一) 寄存器相对 一个寄存器加上位移量 基址—变址 两个不同类别的寄存器 相对基址-变址 两个不同类别的寄存器加上位移量