微机系统与接口--第2章 ppt

Similar documents
,768 32,767 32K JMP Jnnn (386+) LOOP CALL [Label:] JMP short/near/far address L10: jmp jmp L20: L10 L20

幻灯片 1

Microsoft PowerPoint - CH2_1.ppt [兼容模式]

Microsoft PowerPoint - CH2_1.ppt [兼容模式]

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

untitled

微机第02章1(指令寻址)

数据库系统概论

数据库系统概论

Microsoft PowerPoint - C15_LECTURE_NOTE_06

Microsoft PowerPoint - C15_LECTURE_NOTE_06

指令系统 可分成如下 6 类 : 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 程序控制指令 处理器控制指令 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 2

3.3.2 算术运算指令 数据类型 : 无符号和有符号整数 无符号数又分成 : 无符号二进制数 ; 无符号压缩十进制 :1 字节表示 2 个十进制数 ; 无符号非压缩十进制 :1 字节表示 1 个十进制数 有符号数 : 有符号二进制数 用补码表示 2015 年 3 月 26 日星期四 11 时 3

Microsoft PowerPoint - Ch3-8086CPUæ„⁄令系ç»�(3)-æŁ°æ“®ä¼€é•†æ„⁄令

Microsoft PowerPoint - 微原-第3章2.ppt [兼容模式]

数据库系统概论

Microsoft PowerPoint - 微原-第3章3.ppt [兼容模式]

<4D F736F F D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6B0B8C0FDB5BCD1A75FD1F9D5C22E646F63>

主要内容 指令系统的一般概念 指令操作方式操作码的含义指令对操作数的要求指令执行的结果 寻址方式 指令说明 2015 年 3 月 16 日星期一 8 时 2 分 37 秒 2

数据库系统概论

Microsoft PowerPoint - Ch3-8086CPU指令系统(2)-寻址.pptx

Microsoft PowerPoint - 05-第五讲-寻址方式.pptx


(2) Function 0BH: Function 0CH: (pixel, picture element) Function 0DH: Function 0FH: Function 13H:

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

組譯與連結(Ver6

学习MSP430单片机推荐参考书

Microsoft Word - em78 sub program.doc

Microsoft PowerPoint - C15_LECTURE_NOTE_04.ppt

微机系统与接口--第5章-2.ppt

幻灯片 1

1 CPU

Microsoft PowerPoint - C15_LECTURE_NOTE_04.ppt

投影片 1

Ps22Pdf

Microsoft PowerPoint - os_4.ppt

第5章:汇编语言程序设计

本次习题课中提到的 课本, 均指机械工业出版社的 Intel 微处理器 ( 原书第八版 ) 中文版, 使用其他版本课本的同学需要自己对应

DPJJX1.DOC

3.3.3 逻辑运算和移位指令 1. 逻辑运算指令 运算规则 : 按位操作, 无进 / 借位 对标志位的影响 ( 除 NOT 指令外 ): CF OF SF ZF PF AF 0 0 u 根据运算结果设置 2015 年 3 月 30 日星期一 7 时 57 分 24 秒 2

微型计算机原理及应用试题 机电96

66 微型计算机原理与接口技术 ( 第二版 ) 2. 指令格式计算机中的汇编指令由操作码字段和操作数字段两部分组成 (1) 操作码字段 操作码表示计算机要执行的某种指令功能, 由它来规定指令的操作类型, 说明计算机要执行的具体操作, 例如传送 运算 移位 跳转等操作 同时还指出操作数的类型 操作数的

CC213

习 题 一

L15 MIPS Assembly

一、填空题

Microsoft PowerPoint - C15_LECTURE_NOTE_11

MSP430ϵÁе¥Æ¬»úµÄÖ¸Áîϵͳ.pps [¼æÈÝģʽ]

第四章 8086汇编语言程序设计

Microsoft PowerPoint - CH3_3.ppt [只读] [兼容模式]

bingdian001.com

微處理機期末專題

AVR单片机指令系统.PDF

1 TPIS TPIS 2 2

Microsoft PowerPoint - chap4.ppt

<4D F736F F F696E74202D D D6B8C1EECFB5CDB DC6E4CBFBD6B8C1EE2E BBCE6C8DDC4A3CABD5D>

提纲. 1 实验准备. 2 从实模式进入保护模式. 3 小结 陈香兰 ( 中国科学技术大学计算机学院 ) 软件综合实验之操作系统 July 1, / 11

101

<4D F736F F D20C7B0CBC4D5C2D7F7D2B5CCE22E646F6378>

L15 MIPS Assembly

06721 main() lock pick proc() restart() [2][4] MINIX minix2.0 GDT, IDT irq table[] CPU CPU CPU CPU (IDTR) idt[] CPU _hwint00:! Interrupt

FX PLC 8, : PLC FX PLC PLC PLC FXGP SFC PLC FX2 PLC PLC PLC PLC,,,, PLC,, : ,,,, ;,, ( CIP) PLC ( FX )/. :,

第六章 微型计算机的输入输出

Ps22Pdf

Ps22Pdf

一 汇编语言计算机基础 从事计算机科学方面的工作, 汇编语言是我们必不可少缺的基础 我们的工作平台 研究对象都是机器, 而汇编语言是人和计算机沟通的最直接方式, 它描述了机器最终所要执行的指令序列 学习汇编语言可以让你充分获得底层编程的体验, 深刻理解机器运行程序的机理 二 基础知识 1. 汇编语言

Microsoft PowerPoint - CH3_1.ppt [兼容模式]

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

一、单选题(本大题共15小题,每小题1分,共15分)

1. 介绍 义隆 8 位单片机指令介绍 Application Notes 义隆 8 位单片机指令介绍 EM78/EM88 系列是基于 RISC 的精简指令微控制器, 每条指令是 13 位 15 位, 除 LCALL LJMP MOV R2,A ADD R2,A 改变 PC 指针的指令是 2 个指令

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

Bus Hound 5

第十章 数模转换与模数转换接口及其应用


1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0

PowerPoint Presentation

1 2 / 3 1 A (2-1) (2-2) A4 6 A4 7 A4 8 A4 9 A ( () 4 A4, A4 7 ) 1 (2-1) (2-2) ()

li 侉 2. 在 下 列 加 点 字 的 正 确 读 音 旁 打 : (1) 我 看 见 路 边 有 一 条 蛇 A.sh 佴 B.sh 佶 C.sh 侑 D.sh 侉 (2) 外 面 的 泥 土 冻 得 很 硬 A.y 侏 n 倮 B.y 侃 n 倮 C.y 佾 n 倮 D.y 佻 n 倮 (3

PowerPoint 簡報

4 / ( / / 5 / / ( / 6 ( / / / 3 ( 4 ( ( 2

Microsoft PowerPoint sun-arm isa2.ppt [Compatibility Mode]

<4D F736F F F696E74202D20B5DA35D5C2CEA2B4A6C0EDC6F7B9A4D7F7D4ADC0ED2E707074>

2006年国家公务员招录考试行测真题(A)


:23:13 solo estoy( ) 老 师 SIMD 技 术 ALU 同 时 处 理 的 数 据 长 度 只 能 是 ALU 最 大 位 数 的 整 数 分 之 一 对 吗 :25:16 solo estoy( )

数 学 高 分 的 展 望 一 管 理 类 联 考 分 析 第 一 篇 大 纲 解 析 篇 编 写 : 孙 华 明 1 综 合 能 力 考 试 时 间 :014 年 1 月 4 日 上 午 8:30~11:30 分 值 分 配 : 数 学 :75 分 逻 辑 :60 分 作 文 :65 分 ; 总

ROP_bamboofox.key

微机原理与接口技术 郭玉洁

四位微控制器ML64168_ _.doc

第七章 中断

untitled

<4D F736F F D C4EAB9FABCD2B9ABCEF1D4B1D0D0D5FEC4DCC1A6B2E2D1E9A3A841C0E0A3A92E646F63>

单片机原理及应用实验指导书.doc

E170C2.PDF

第五章 重叠、流水和现代处理器技术

untitled

Transcription:

第二章微型计算机指令系统 指令 ------ 实现微机算术 逻辑运算和控制功能 重点 : *1 存储器寻址方式 2 标志传送 3 转移控制( 转移指令 过程调用 中断 ) 1

指令 (Instruction) 指令集或指令系统 (Instruction Set) 指令的表示 指令与指令系统 指示 CPU 执行某种规定操作的命令 某一 CPU 所能执行的全部指令的集合 定义了程序员能使硬件完成的基本操作 (CPU 基本性能 ) 机器码 ( 指令 ) 05H 00H 10H B9H 25H 00H 01H C8H 汇编语言 / 助记符 (Mnemonic Symbol) ADD AX,1000H MOV CX,0025H ADD AX, CX 2

机器码 ( 指令 ) 与汇编语言 / 助记符 指令内容 助记符内容 代 B0H 05H 04H 08H 1011 0000 0000 0101 0000 0100 0000 1000 MOV AL,05H ADD AL,08H 码 段... 3

指令体系与 8086 指令 指令 ---- 指示 CPU 执行某种规定操作的命令 复杂指令计算机精简指令计算机 (CISC Complex (RISC Reduced Instruction Set Computer) 例 : 80X86/Pentium 变字节 1-16 字节, 种类多 APARC,, PowerPC, 代码利用率低 Alpha 指令简单, 复杂功能代码 8086 存储器利用率低指令向下兼容 8080/8085 指令, 共 92 种基本指令 8086/8088 指令系统 ( 六大类 ) 数据传送 算术运算整型数据处理 逻辑运算与位操作逻辑数据处理 串操作字符型数据处理 转移控制程序流控制处理 ( 条件 / 无条件 ) MPU 控制 通用 / I/O / 目标地址传送 / 标志传送 系统控制管理 4

8086/8088 指令格式 字段 1 字段 2 字段 3 字段 4 字段 5 字段 6 Prefix OP Code Mode r/m s-i-b disp data 1~4 字节 1~2 字节 1 字节 1 字节 0,1,2,4 如 : 04H 08H ( ADD AL, 08H ) 字节 05H 00H 10H ( ADD AX,1000H ) 指令码 = 操作码 (Opcode) + 操作数 (Operand=Oprd1,Oprd2) 解决 :1 什么操作 2 涉及的数如何获取和结果如何存放 寻址 (Addressing) 方式 : 7 种 ( 目标 / 源操作数 ) 5

操作数的存放形式与格式 操作数的存放 : 3 种基本形式 : 1 直接放在代码段中, 是指令的一部分如 : MOV AL, 05H 称为 立即数操作数 2 存在 CPU 的寄存器中如 : MOV AL, AH 称为 寄存器操作数 3 存在存储器 ( 非代码段 ) 中如 : MOV AX,[8000H ] 称为 存储器操作数 数据类型 1/2/4 字节 L 3B000 3B001 3B002 3B003 H ML MH H 物理存储格式 6

操作数的三种存放形式 CPU( 微处理器 ) 寄存器组 AH AL BH BL CH CL DH DL SI DI BP SP 运算器 AX BX CX DX PSW 标志寄存器 指令队列 DS ES SS CS IP 地址加法器 数据暂存器 指令译码器 总线接口控制电路 执行部件控制电路 总线 地址总线 AB 数据总线 DB 控制总线 CB 存储器 指令 1 地指令 2 指令 3 址指令 4 译 数据 1 码数据 2 器 9Ah 7

如何找到操作数 寻址 (Addressing) 方式 : 7 种寻址方式 其中 5 种对应着存放在存储器中 第一类寻址方式 ( 简单 非存储器寻址方式 ) 1 立即寻址 (Immediate Addressing) 立即数操作数 MOV AL,100; MOV CX,2000H;( MOV DS,200H ) 2 寄存器寻址 (Register Addressing) 寄存器操作数 MOV DS,AX; MOV CX,BX;MOV SI,DX 8

第二类寻址方式 ( 复杂 存储器寻址方式 ) 3 直接寻址(Direct Addressing) MOV AX,[2000H ] ; MOV AL,BUFFER( 内存 ); 4 寄存器间接寻址 (Register Indirect Addressing) MOV AX,[SI]; MOV BL,[DI]; MOV CH,[BX]; MOV DX,[BP] 5 变址寻址 (Indexed Addressing) 索引 -- 源变值 R:SI/ 目标变址 R:DI EA=[SI]/[DI]+ 位移量 MOV AX,[SI+6];MOV DL,TABLE[SI] 一维数组 6 基址寻址 (Based Addressing) [BX]/[BP] MOV AL,[BX+100];MOV DX,TABLE[BP] 7 基址 -- 变址寻址 (Based Indexed Addressing) EA=[BX]/[BP]+[SI]/[DI]+COUNT MOV AL,[BX][SI]COUNT, MOV DX,[BP+DI+COUNT] 二维数组 9

8086/8088 的内部寄存器 14 个 16 位寄存器 :8 通用寄存器 /4 段 /2 控制寄存器 P20 图 1.10 10

第二类寻址方式 ( 复杂 存储器寻址方式 ) 3 直接寻址(Direct Addressing) MOV AX,[2000H ] ; MOV AL,BUFFER( 内存 ); 4 寄存器间接寻址 (Register Indirect Addressing) MOV AX,[SI]; MOV BL,[DI]; MOV CH,[BX]; MOV DX,[BP] 5 变址寻址 (Indexed Addressing) 索引 -- 源变值 R:SI/ 目标变址 R:DI EA=[SI]/[DI]+ 位移量 MOV AX,[SI+6];MOV DL,TABLE[SI] 一维数组 问 题 6 基址寻址 (Based Addressing) [BX]/[BP] MOV AL,[BX+100];MOV? DX,TABLE[BP] 物理地址 =? EA=[BX]/[BP]+[SI]/[DI]+COUNT 有效地址 EA=? MOV AL,[BX][SI]COUNT, MOV DX,[BP+DI+COUNT] 二维数组 7 基址 -- 变址寻址 (Based Indexed Addressing) 默认段寄存器 =? 11

8086/8088 的 20 位地址总线 寻址范围 :1M=64K 的 16 倍 8080/8085-16 位地址线寻址范围 :64K 12

存储器寻址 物理地址获取 物理地址 PA 操作数存放地址 (20 位地址!) 物理地址 PA = 段基地址 SA+ 偏移地址 EA(Effective Addr) PA=SA*16+EA 书面表示 SA:EA 1000:2000H 有效地址 EA= 偏移 (Offset) 地址 ( 直接寻址 / 寄存器间址表示 ) MOV AX,(DS:)[8000H ]; MOV AX,[BX] ; MOV CL,CS:[2000H] 段基地址 : 默认段 =CS/DS/ES/SS P59 表 2.3 默认段寄存器一般数据, 直接寻址 BX DI EI, DS 代码 BP,SP SS 特殊指令 始终 CS(:IP) 例 ( 串操作 ) EI ES 段超越非默认段寄存器, 需说明 ( 指令加段超越前缀 ) 13

如 : MOV AX,DS:[2000H]; 简化 MOV AX, [2000H];DS( 数据段 ) 注意 : 8086/8088 的 ( 存储器 ) 地址线有 20 位 DS:3000H 比较 : MOV AX,ES:[2000H] ; 段超越, 操作数在附加段 14

第二章微型计算机指令系统 8086/8088 指令系统 ( 六大类 ) 数据传送 (DATA TRANSFER) 通用 / I/O / 目标地址传送 / 标志传送 算术运算 (Arithmetic) 逻辑运算与位操作 (Logic) 串操作 (String Manipulation) 转移控制 (Control Transfer) MPU 控制 (Processor Control) 整型数据处理逻辑数据处理字符型数据处理程序流控制处理系统控制管理 15

通用传送 (GP transfer) 数据传送指令 ( 一 ) MOV,PUSH/POP,XCHG,(XLAT) 1. MOV DST,SRC ; BYTE/WORD 传送, 各寻址方式 ; MOV AX,80A0H(BX,[SI],[3000]) R R/M,I( 直接数 ) R/M;R/M SR( 段寄存器 ) 禁止 :M M;I SR;SR SR( 例 : 数据块移动 ) 2.PUSH SRC; (SP) (SP)-2;((SP)+1:(SP)) (SRC) POP DST; (DST) ((SP)+1:(SP));(SP) (SP)+2; SRC/DST R/M/SR ( 但 DST 不可为 CS!!!)SP 偶数!! 16

通用传送指令 --- 堆栈 (STACK) 重要用途 : 保存 INT 断点 /CALL 返回地址 / 数据信息 引伸 : 临时保存数据, 传递信息 特点与规则 堆栈 : 内存特殊区域 操作按字 (2 字节 ) 进行 PUSH 指令从高地址 低地址增长, POP 相反 操作规则 FILO (First-In-Last-Out) 栈底 SS:FFFFH( 堆栈的最大地址 ) SP 为当前栈顶指针 (EA)( 末指针 ) 17

通用传送指令 --- 堆栈传递数据 (PUSH AX 之前 ) 18

通用传送指令 --- 堆栈传递数据 (PUSH AX 之后 ) 19

执行 PUSH AX 前 (a) 后 (b) 堆栈及指针变化 20

执行 POP BX 前 (a) 后 (b) 堆栈及指针变化 相当于 : MOV BX, AX 21

通用传送指令 --- 堆栈应用 ( 一 ) 使用过程 / 关键 PUSH AX; 堆栈平衡防止溢出 PUSH BX PUSH/POP 配对使用 PUSH CX; /CALL-RET/INT--IRET). 8086: 堆栈段 SS:SP MOV AX,[BP-2]; 访问堆栈内容用途 : 保护 / 传递数据 MOV BX,[BP-4]; 例 :CALL ( 嵌套 )-- MOV CX,[BP-6]; 恢复 AX,BX, INT( 嵌套 ) CX; 函数调用 ; MOV BP,SP;. ADD SP,6 ; 代替 POP 平衡堆栈 22

数据传送 --- 通用传送指令 ( 二 ) 3.XCHG dest, src ;(dest) (src) R R/M; 禁止 M M 例 XCHG AL,AH; XCHG X1[SI],AX 4.XLAT [src_table]; (AL) ((BX)+(AL)) 查表转换 ; 可段超越例 ES:XLAT 运行前 BX 须赋值, 例 LEA BX,src_table; MOV AX,SEG src_table; MOV DS,AX; MOV 23

数据传送 ---I/O 端口 (Port) 传送指令 IN AL/AX, portno; 8 位立即数 portno:0~255 OUT portno,al/ax; IN AL/AX,DX; DX:0~64K(0FFFFH) OUT DX,AL/AX; 字 IN/OUT L,H 例 IN AL, 40H OUT 40H, AL MOV DX, 3F8H IN AL, DX OUT DX, AL ; 接收 ; 发送 24

数据传送 --- 地址对象传送指令 LEA reg16, mem16 ; 取有效地址, 近地址指针 ( 段内 ) reg16 比较 MOV/ LEA AX,BUFFER, 直接 -mem=offset xxxx 例 LEA AX,V1[BX][SI] (Address-object Transfer) 当 BX=2000H, LEA SI,[BX]300H Si=2300H FAR Pointer 16 位段址 :16 位偏址存放格式 : ( 例 )LDS SI,[BX]/LES DI,[BX] LDS reg16,mem32; mem32 存放 FAR P 数据 (4bytes) DS:reg16 (IP:CS L-H 存放 ) LES reg16,mem32 ; mem32 存放 FAR P 数据 (4bytes) ES:reg16 25

数据传送 --- 标志传送指令 (Flag Register Transfer) LAHF;(Load AH from flags) F 低 8 位 AH (SF ZF XX AF XX PF XX CF) SAHF; (Store AH to Flags) AH Flags 低 8 位 PUSHF; (SP) (SP)-2; ((SP)+1:(SP)) (FLAGS) POPF; (FLAGS) ((SP)+1:(SP)); (SP) (SP)+2; 26

第二章微型计算机指令系统 8086/8088 指令系统 ( 六大类 ) 数据传送 (DATA TRANSFER) 通用 / I/O / 目标地址传送 / 标志传送 算术运算 (Arithmetic) 逻辑运算与位操作 (Logic) 串操作 (String Manipulation) 转移控制 (Control Transfer) MPU 控制 (Processor Control) 整型数据处理逻辑数据处理字符型数据处理程序流控制处理系统控制管理 27

3 个控制标志位 标志状态寄存器 Flags 6 个算术和逻辑运算结果特征 溢出标志 方向 中断允许 =1 跟踪 符号位 零标志位 半进位 奇偶位 =1 偶 借进位 28

标志状态寄存器 Flags 6 个算术和逻辑运算结果特征 CF 进位标志位 当进行加法或减法运算时, 若最高位发生进位或借位则 CF=1, 否则 CF=0 PF 奇偶标志位 当逻辑运算结果中 1 的个数为偶数时 PF =1, 为奇数时 PF=0 AF 辅助进位位 在 8(l6) 位加减法操作中, 低 4 位向高 4 位有进位 借位发生 ZF 零标志位 当运算结果为零时 ZF=1, 否则 ZF=0 SF 符号标志位 当运算结果的最高位 MSB 为 1 时 SF=1, 否则 SF= 0 OF 溢出标志位 当算术运算的结果超出了带符号数的范围, 即溢出时,OF= 1, 否则 OF=0 8 位 /16 位带符号数范围 29

算术运算 (Arithmetic) 指令 (1) ADD (Addition) 加法 (dest) (dest)+(src) 例 ADD dest,src; 8 位 /16 位操作数, 影响 FLAGS ADD AX,[BX]; ADD CL,10H;ADD SP,2; ADD [2000H], AL; ADD WORD PTR[BX], 20 AL=7EH(01111110B) AH=5BH(01011011B); ADD AL,AH AL=D9H(11011001B) 问题 : 如何影响标志位? 30

算术运算 (Arithmetic) 指令 (1) 例 AL=7EH(01111110B) AH=5BH(01011011B); ADD AL,AH AL=D9H(11011001B) 影响标志位 : CF=0( 加法 无进位 ); PF=0 (1 的个数为奇数 注 : 非逻辑运算, 不必关注 ) ; AF=1( 低 4 位向高 4 位有进位发生 ); ZF=0( 结果不为零 ); SF=1( 结果的最高位 MSB 为 1); OF=1 ( 运算的结果超出了带符号数的范围 ) 31

算术运算 (Arithmetic) 指令 (2) ADC (ADD with Carry) (dest) (dest)+(src)+(cf) 例 :MOV BX, OFFSET FIRST; 多位数连加 : L H MOV SI, OFFSET SECOND MOV AX, [SI] ADD [BX], AX MOV AX, [SI+2] ADC [BX+2],AX; 类似 P77 例四字节 L H 逐个 ADC INC (Increment by 1) (dest) (dest)+1 加一操作 INC AX; INC DL; INC WORD PTR ES:[2000H] INC BYTE PTR[BX]; ( 伪操作 PTR 参考书 153-4) 32

算术运算 (Arithmetic) 指令 (3) AAA*(ASCII adjust for Addition) 非压缩 BCD 加法调整 ( 单字节 ) 只对 Unpacked BCD (00-09H) 有意义 ; 隐含为 :AL,AH(AH:00~08,AL:00~09) 等效 :IF((AL)&(0FH)>9)OR (AF)=1 THEN (AL)+6; AH+1;AF=CF=1; (AL)&0FH ELSE (AL)&0FH; ( 应 AH=00~08,AL=00~09) 例 :MOV AH,0 MOV AL,7 MOV BL,8 ADD AL,BL;(AL=0FH); AAA; (AH=1,AL=5) 连加? 打 * 指令一般了解 33

算术运算 (Arithmetic) 指令 (4) DAA (Decimal adjust for Addition) 压缩 BCD 加法调整 ( 单字节 ) 只对 Packed BCD (00-99H) 有意义 ; 等效 :IF((AL)&(0FH)>9)OR (AF)=1 THEN (AL)+6; AF=1; IF((AL)&(9FH)>9)OR (CF)=1 THEN (AL)+60H; CF=1; 例 :68+59=? MOV AL,68H; MOV BL,59H; ADD AL,BL;(AL=C1H,AF=1); DAA;(CF=1=AF, AL=27H, 可连加 ) 上例的 DAA 调整, 相当于加 66H, 即相当于 ADD AL,66H 34

算术运算 (Arithmetic) 指令 (5) 减法乘法除法 SUB/SBB/DEC/ MUL/AAM DIV/AAD AAS/DAS*( 调整 ) IMUL( 有符号乘 ) IDIV ( 有符号除 ) 减法指令 ( 注 :CF=1 借位 ) SUB AL,CH; SUB BYTE PTR[2000H], 20; SBB AX, [BP+1000]; DEC SI; DEC BYTE PTR [SI]; 打 * 指令一般了解 (dest) (dest)-(src) (dest) (dest)-(src)-(cf) (dest) (dest)-1 35

算术运算 (Arithmetic) 指令 (6) NEG (Negate) 8 位 /16 位求补 ( 改变符号 ) 绝对值不变 NEG dest; (dest) 0-(dest), 影响 6 个运算标志位例 : NEG AL; NEG BX; NEG BYTE PTR CS:[2000H] CMP (Compare) (dest)-(src), 影响 6 个运算标志位 例 :CMP AL,CH; CMP AX,[BX]; CMP BYTE PTR[2000H], 20 36

算术运算 (Arithmetic) 指令 (7) 16 位乘法 MUL src 默认 :AX* (src) 积 = DX( 高 16 位 ) AX( 低 16 位 ) 8 位乘法 MUL src 默认 :AL* (src) 积 = AX (16 位 ) 16 位除法 DIV src 默认 : 被除数 DX( 高 16 位 ) AX( 低 16 位 ) / (src) (16 位 ) 结果 DX= 余数 (16 位 ); AX= 商 (16 位 ) 注意 : 除 0/ 溢出 ( 字节除 : 商 >255 或字除 : 商 >65535) 除零中断 8 位除法 DIV src 默认 : 被除数 AX (16 位 ) / (src) (8 位 ) 结果 AH= 余数 (8 位 ); AL= 商 (8 位 ) 37

算术运算 (Arithmetic) 指令 (8) IMUL/IDIV IMUL src; IDIV src; 有符号数乘 / 除法 打 * 指令一般了解 AAM* (ASCII adjust for Multiply) :Unpacked BCD 调整 等效 :(AH) (AL)/10; ( 商 ); (AL) (AL)%10 ( 余数 ) SF,ZF,PF 单字节! AAD*( ASCII adjust for Divide):Unpacked BCD 调整 (AL) (AH) *0AH+(AL); AH=0 单字节! CBW/CWD 字长扩展 ( 字节 字 ; 字 双字 ) 38

第二章微型计算机指令系统 8086/8088 指令系统 ( 六大类 ) 数据传送 (DATA TRANSFER) 通用 / I/O / 目标地址传送 / 标志传送 算术运算 (Arithmetic) 逻辑运算与位操作 (Logic) 串操作 (String Manipulation) 转移控制 (Control Transfer) MPU 控制 (Processor Control) 整型数据处理逻辑数据处理字符型数据处理程序流控制处理系统控制管理 39

逻辑运算与移位 (Logical & shifting) 逻辑运算 AND dest, src; AND AX, [BX]; AND CL,08H OR dest, src; OR AL,55H; OR WORD PTR [BX], DH XOR dest, src (logical Exclusive or ) (dest) (dest) (src) XOR AX,AX; XOR CL, [BX] TEST dest, src 逻辑与测试, 仅影响标志位 TEST AL,80H; TEST AX,0FFFFH; NOT dest ;B:dest=255-dest; W:dest=65535-dest NOT AL; NOT BYTE PTR ES: [2000H] 40

逻辑运算与移位 (Logical & shifting) 逻辑运算. 8086/8088 无直接位操作 : 如 SETB/CLRB/JB/JNB) 实现置位 ( 置 1), 可采用 OR 指令如 : OR AL, 80H ; 实现 BIT7=1 实现复位 ( 清 0) 可采用 AND 指令如 : AND AL, 7FH; 实现 BIT7=0 实现某些位求反, 可采用 XOR 指令如 :MOV AL, 0FH; (AL)=(00001111B) XOR AL, 0AAH;(AL)=(10100101B) 实现了 BIT1,3,5,7 位求反 41

逻辑运算与移位 (Logical & shifting) 逻辑移位 ( Logical shifting) SHL/SAL (SHift logical Left/Shift Arithmetic Left) 1 位 /CL 位, 相当于无符号数 *2/ 无符号数 *2 的 CL 次方位 SHL/SAL dest,1 ; SHL AL,1; SHL CX,1 SHL/SAL dest,cl SHL WORD PTR[BX],CL CF dest( MSB LSB ) 0 移一次 当 MSB CF, 则 OF=1 SHR(Shift logical right) 相当于无符号数 /2 SHR dest, 1 /CL 0 dest ( MSB LSB ) CF 42

逻辑运算与移位 (Logical & shifting) 算术移位 (Arithmetic Shifting) SAR (Shift Arithmetic Right) 相当于带符号 /2 SAR dest, 1 ; SAR dest, CL MSB dest(msb LSB ) CF MOV AL, 10001000B; SAR AL,1 ;10001000B=(88H= -78H) AL=11000100B(C4H=-3CH) 43

逻辑运算与移位 (Logical & shifting) 循环移位指令 (Rotate Shifting) ROL(Rotate left) ROL dest 1/CL CF 如 :AL=10001000B ROL AL, 1 AL= 00010001B CF=1 ROR (Rotate right) CF ROR dest 1/CL AL=84H 48H ( 高低四位交换 ) 44

逻辑运算与移位 (Logical & shifting) 循环移位指令 (Rotate Shifting) RCL(Rotate Through Carry Flag left) RCL dest 1/CL C F Dmax D1 D0 RCR(Rotate Through Carry Flag right) RCR dest 1/CL 45

第二章微型计算机指令系统 8086/8088 指令系统 ( 六大类 ) 数据传送 (DATA TRANSFER) 通用 / I/O / 目标地址传送 / 标志传送 算术运算 (Arithmetic) 逻辑运算与位操作 (Logic) 串操作 (String Manipulation) 转移控制 (Control Transfer) MPU 控制 (Processor Control) 整型数据处理逻辑数据处理字符型数据处理程序流控制处理系统控制管理 46

3 个控制标志位 标志控制寄存器 Flags TF 跟踪标志位 TF= 1, 使 CPU 处于单步执行指令的工作方式 这种方式便于进行程序的调试 每执行一条指令后, 自动产生一次内部中断, 从而使用户能逐条指令地检查程序 IF 中断允许标志位 IF= l 使 CPU 可以响应可屏蔽中断请求 IF= 0 使 CPU 禁止响应可屏蔽中断请求,IF 的状态对不可屏蔽中断及内部中断没有影响 DF 方向标志位 DF= l 使串操作按减地址方式进行 也就是说, 从高地址开始, 每操作一次地址减小一次 DF =0 使串操作按增地址方式进行 47

8086/8088 的内部寄存器 14 个 16 位寄存器 :8 通用寄存器 /4 段 /2 控制寄存器 P20 图 1.10 48

串操作 (String Manipulation) MOVSB-W/CMPSB-W/ SCANSB-W/LODSB/STOSW B/W B/W SI DI CX 个单元 ( 字节或字 ) 方向 + 标志位 DF=0 SI=src pointer (DS); DI=dest pointer(es); DF 控制 INC(DF=0)/DEC (DF=1); B+-1/W+-2 重复前缀 : REP(Z)=REPE REPNZ=REPNE 49

串操作功能与默认操作数 REP(Z) MOVS (CX 次 ) REPE(Z)CMPS/SCAS ( 重复至 CX=0 或 ZF=0) REPNE(ZF=0)Repeat while (CX 0 )and (ZF=0) 以指令结果与 CX 计数为条件 -- 重复前缀本身影响标志位 (CX-1)? MOVSB /W----((ES):(DI)) ((DS): ( SI)) 不影响标志位 CMPSB/W- -((DS): ( SI)) --((ES):(DI)) 影响标志位 SCASB/W---- (AL)/(AX) ((ES): (DI)) 影响标志位 LODSB/W(load String): (AL/AX) ((DS): (SI)) STOSB/W(Store string) : (AL/AX) ((ES): (DI)) 50

第二章微型计算机指令系统 ( 续 ) 8086/8088 指令系统 ( 各类重点 ) 数据传送 (DATA TRANSFER) 重点 : 寻址 (20 位地址, 段寄存器 ) 算术运算 (Arithmetic) 关注 : 标志位 逻辑运算与位操作 (Logic) 简单 ( 数据处理 ) 串操作 (String Manipulation) 特殊操作 ( 硬记 ) 转移控制 (Control Transfer) 程序流控制 ( 重要 ) MPU 控制 (Processor Control) 系统控制 ( 重要 ) 51

转移控制 (Control Transfer) ---- 程序流控制两大类 : 转移控制 (Control Transfer) 过程调用 ( Call a procedure ) 转移控制要点 : ⑴ 转移到新地址 -CS:IP ⑵ 什么条件下转移 52

运行程序 ( 数据 ) 分段存储 分段结构 最多 4 个活动段 0000:0~3FF SS:SP 栈底 DS ES CS:IP 中断向量区 ( 系统专用 ) 堆栈段数据段代码段 FFFF:0 系统起始运行程序 53

` 转移控制 (Control Transfer) 无条件跳转 (Unconditional Jump) CS:IP= Instruction Pointer 下条指令地址 ( 指针 ) JMP SHORT_LABEL; 近短跳转 IP 128 +127 SHORT 向前引用! IP=IP+disp8 JMP(JUMP)NEAR_LABEL IP=IP+disp16 段内跳转 JMP FAR_LABEL; 段间跳转 CS:IP= 新地址 JMP SHORT JMP NEAR PTR JMP FAR PTR REG16/mem16 JMP 2000H; JMP BX; JMP 0FFFFH:0 ( 热启动 ) JMP FAR PTR TABLE[SI]; JMP NEAR PTR [BP][DI] 54

转移控制 (Control Transfer) 条件跳转 (conditional Jump) ( 利用 CMP,TEST 计算 移位指令等结果改变程序流 ) JCC SHORT_LABEL; 限近短跳转 IP 128 +127 满足条件 IP=IP+disp8, 否则顺序执行 (IF ELSE) JZ/JE --JNZ/JNE (ZF)=1 --(ZF)=0 JS --JNS (SF)=1 --(SF)=0 JP/JPE --JNP/JPO (PF)=0 --(PF)=1 JO --JNO (OF)=1 --(OF)=0 JC --JNC (CF)=1 --(CF)=0 55

转移控制 (Control Transfer) Unsigned 大小比较 条件跳转 (conditional Jump) JB/JNAE --JNB/JAE JA/JNBE --JNA/JBE (CF)=1 -(CF)=0 (CF)=0&((ZF)=0 --(CF)=1 OR (ZF)=1 ( 运算 ++,+-,--,-+ 后 ) 无符号数大于条件 Signed 大小比较 JG/J NLE --JNG/JLE (SF)=(OF) &(ZF)=0 ---(SF) (OF)OR(ZF)=1 JL/JNGE --JNL/JGE (SF) (OF) &(ZF)=0 ---(SF)= (OF) OR(ZF)=1 56

转移控制 (Control Transfer) 循环控制 (Loop) LOOP short_label ; loop CX times LOOPZ/LOOPE short_label; (loop while zero/equal) 循环直到 (CX)=0 or (ZF=0) LOOPNE/LOOPNZ short_label; (Loop while NZ/NE) 循环直到 (CX)=0 or (ZF=1) JCXZ if CX=0 Jump to (Jump On CX Zero) CX 为零控制调转 57

过程调用 (Call a procedure ) CALL 段内 \ 段间 : 直接 / 间接调用 ( 过程 / 子程序 Subroutine) RET (RETF) 过程返回 ( 分远近, 产生不同 RET 码 (C3/CBH) 不但 CS:IP 发生变化 ( 新地址 ), P66 图 2.11 而且堆栈 SP 及其内容均发生变化 栈底 58

过程调用 (Call a procedure ) CALL NEAR_PROC; (SP) (SP)-2, ((SP)+1,(SP)) (IP); (IP) (IP)+proc_disp CALL reg16/mem16. ; (IP) reg16/mem16 CALL FAR_PROC; (SP) (SP)-2,((SP)+1,(SP)) (CS); (CS) SEG F_PROC (SP) (SP)-2,((SP)+1,(SP)) (IP); (IP) OFFSET F_PROC CALL MEM32; (CS) MEM32+2, (IP) MEM32 例 :CALL 2000H; CALL BX; CALL NEAR PTR ES:[SI] CALL 2000:3000H; CALL FAR PTR[2000H] 59

过程返回 (Return From Call ) RET(C3H ); (IP) ((SP)+1:(SP)), (SP) (SP)+2 RET pop_value ;(C2H data_low data_high) (IP) ((SP)+1:(SP)), (SP) (SP)+2; (SP) (SP)+pop_value =ADD SP,Pop_value RETF (CBH) ; (IP) ((SP)+1:(SP)), (SP) (SP)+2 (CS) ((SP)+1:(SP)), (SP) (SP)+2 RETFpop_value ; (CAH data_low data_high) IP:CS 弹出 (SP) (SP)+pop_value 60

第二章微型计算机指令系统 ( 续 ) 8086/8088 指令系统 ( 各类重点 ) 数据传送 (DATA TRANSFER) 重点 : 寻址 (20 位地址, 段寄存器 ) 算术运算 (Arithmetic) 关注 : 标志位 逻辑运算与位操作 (Logic) 简单 ( 数据处理 ) 串操作 (String Manipulation) 特殊操作 ( 硬记 ) 转移控制 (Control Transfer) 程序流控制 ( 重要 ) MPU 控制 (Processor Control) 系统控制 ( 重要 ) 61

微机系统 结构示意图 地址总线 AB CLK CPU 存储器 数字 I/O 接口 输入出设备 模拟 I/O 接口 输入出设备 数据总线 DB 控制总线 CB 62

中断 (Interrupt) 控制 CPU 与外设交换信息的一种方式 == 硬件手段影响和改变 CPU 执行程序的顺序 ( 程序流 ) 断点 返回断点 中断过程 : 执行正常程序 事件 / 请求服务 - -- 打断 / 暂时中断原程序 == 执行中断处理程序 --- 完毕 -- 在断点处恢复原程序 (IRET) 主程序流中断服务中断嵌套 63

3 个控制标志位 标志控制寄存器 Flags TF 跟踪标志位 TF= 1, 使 CPU 处于单步执行指令的工作方式 这种方式便于进行程序的调试 每执行一条指令后, 自动产生一次内部中断, 从而使用户能逐条指令地检查程序 IF 中断允许标志位 IF= l 使 CPU 可以响应可屏蔽中断请求 IF= 0 使 CPU 禁止响应可屏蔽中断请求,IF 的状态对不可屏蔽中断及内部中断没有影响 DF 方向标志位 DF= l 使串操作按减地址方式进行 也就是说, 从高地址开始, 每操作一次地址减小一次 DF= 0 使串操作按增地址方式进行 64

8088 中断结构 直接执行软件中断 / 指令执行结果 除零 (INT 00H) 单步 (INT 1) IF=1 TF=1 溢出 (INTO INT 04H) 软件中断调用 (INT xxh) 内部中断 非屏蔽中断 NMI(Non-MaskableInterrupt) 可屏蔽中断 INTR(IF=1) NMI 2 中断逻辑 n 4 0 1 INTR 外部中断 IRQ0 IRQ7 INT n INTO 除法错单步 8259 65

中断方式下 CPU 执行程序流程 外 设 发申请 中断服务程序 发申请 中断服务程序 66

8086/8088 中断过程 保护断点 (F 入栈 ;IF=0 TF=0; CS IP 入栈 ; 中断服务 ( 中断类型号 : n ) (0:4*n 取向量 CS:IP); 返回断点 (IRET: 依次弹出 IP CS F) 67

运行程序 ( 数据 ) 分段存储 分段结构 最多 4 个活动段 0000:0~3FF SS:SP 栈底 DS ES CS:IP 中断向量区 ( 系统专用 ) 堆栈段数据段代码段 FFFF:0 系统起始运行程序 68

INT(Interrupt) INT n ; 中断指令 Interrupt (n 中断类型号 ) (SP) (SP)-2,((SP)+1,(SP)) (FLAGS); 中断向量 xxxxcs:xxxxip (IF) 0 (TF) 0 (SP) (SP)-2,((SP)+1,(SP)) (CS); (CS) [0:n*4+2] (SP) (SP)-2,((SP)+1,(SP)) (IP); (IP) [0:n*4] IRET(Interrupt Return) (IP) ((SP)+1,(SP)), (SP) (SP)+2 (CS) ((SP)+1,(SP)), (SP) (SP)+2 (FALGS) ((SP)+1,(SP)) (IP), (SP) (SP)+2 特例 :INTO (Interrupt if overflow) ==INT 4 (CS) (0:12H),(IP) (0:10H) 单字节指令 69

MPU 控制 (Processor Control 标志位操作 CLC(Clear Carry flag)cf=0 STC(Set Carry flag) CF=1 CMC(CoMplement Carry flag) CF=NOT CF CLD(CLear Direction flag) DF=0 Up STD(SeT Direction Flag) DF=1 Down CLI(CLearInterrupt flag) IF=0 STI(SeT Interrupt flag) IF=1 空操作 / 暂停 NOP ;No Operation(3*T), 空操作 HLT(halt)CPU 暂停 ---( 有效 INTR/NMI/RESET 退出 ) 70

MPU 控制 (Processor Control) WAIT(WAIT while TEST# pin not asserted) 有效 INTR/TEST#=0 结束 ---CPU 与外部硬件同步 ESC(Escape) 扩展指令 : 使其他器件 (External Device) 使用 8086/88 的寻址方式 11011xxx modxxxr/m -----8087 FLD FST FSTP FMUL FTEST, FSTSW Z,PI,Log2,loge. LOCK(lock bus)-- 指令前缀 等待 扩展和锁定 控制总线锁定信号 LOCK#=0( 有效 ) 直到执行完下一条指令 71