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

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

幻灯片 1

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

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

数据库系统概论

<4D F736F F D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6B0B8C0FDB5BCD1A75FD1F9D5C22E646F63>

untitled

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

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

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

数据库系统概论

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

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

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

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

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

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

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

幻灯片 1

Microsoft PowerPoint - C15_LECTURE_NOTE_06

Microsoft PowerPoint - C15_LECTURE_NOTE_06

数据库系统概论

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

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

习 题 一


一、填空题

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

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

<4D F736F F F696E74202D D D6B8C1EECFB5CDB DC6E4CBFBD6B8C1EE2E BBCE6C8DDC4A3CABD5D>

Microsoft PowerPoint - os_4.ppt

数据库系统概论

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

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

主要内容 : 汇编语言源程序的结构汇编语言语句格式伪指令语句功能调用汇编语言程序设计方法宏汇编和条件汇编 2015 年 3 月 30 日星期一 7 时 58 分 57 秒 2

組譯與連結(Ver6

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

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

CH559指令周期.doc

DPJJX1.DOC

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

共同构成 16 位数据存储单元的地址 当 CPL=1 时, 将堆栈指针 SP 的 16 位地址 与指令中的 7 位地址相加, 形成 16 位的数据存储器地址 (2) 当 SP=0100h, 偏移地址为 50h 时, 寻址 0150h 单元 ; 当 DP=2, 偏移地址为 50h 时, 寻址 0150


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

<4D F736F F F696E74202D DB5DAB0CBBDB22DBBE3B1E0D3EFD1D4B3CCD0F22E >

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

第三章 宏汇编语言程序设计

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

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

图 内部结构图 8251 的外部引脚如图 所示, 共 28 个引脚, 每个引脚信号的输入输出方式如图中的箭 头方向所示

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

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

<4D F736F F D C4EAC6D5CDA8B8DFB5C8D1A7D0A3D5D0C9FAC8ABB9FACDB3D2BBBFBCCAD4CEC4BFC6D7DBBACDCAD4BEEDBCB0B4F0B0B82DD6D8C7ECBEED2E646F63>

Microsoft Word - 实验8_ADDA.doc

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

4.2 DOS 系统功能调用和 BIOS 中断调用 概述 磁盘操作系统 DOS 采用模块化 层次化结构, 其层次结构如图所示 2015 年 4 月 13 日星期一 7 时 45 分 11 秒 2

Microsoft Word - Syllabus of Assembly Programming_new.doc

<4D F736F F D C4EAB9FABCD2B9ABCEF1D4B1D0D0D5FEC4DCC1A6B2E2D1E9A3A841C0E0A3A92E646F63>

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

Microsoft Word - 作业2008.doc

PowerPoint Presentation

bingdian001.com

Ps22Pdf

80X86微机原理及接口技术

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

,,,,,,,,,,,,, :,, ;,,,,, ( ),,,, : ( ) ; ( ) ; ( ) ( ) ; ( ) ( A ) ; ( ) ( ),,,,,,, 80

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

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) ()

2011国家司法考试试题(试卷一)

微机原理(计算机原理与接口技术)

版权声明 本实验教程的版权归西安唐都科教仪器开发有限责任公司所有, 保留一切权 利 未经本公司书面许可, 任何单位和个人不得擅自摘抄 复制本实验教程的部分或全部, 并以任何形式传播 西安唐都科教仪器开发有限责任公司,2009(C),All Right Reserved. 80X86 微机原理及接口技




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

untitled

Microsoft Word - 98地球科學專科題庫ok.doc


(Microsoft Word - \246D\252k\267\247\255n_\275\306\277\357_.docx)

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

Create By PageManager

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

. v dx v d () () l s dl s d (_) d () v s v s () a dv a d (_) ( ) ( ) x- = v- = = v 0 = m/s a = = m/s 2 a- = ( ) x- v- a- Page 2 of 20

A. 城 市 化 是 我 国 发 展 的 必 由 之 路 B. 单 纯 发 展 大 城 市 不 利 于 城 市 化 的 推 进 C: 要 实 现 城 市 化, 就 必 须 让 城 市 充 分 吸 纳 农 村 人 口 D: 大 城 市 对 外 地 农 村 人 口 的 吸 引 力 明 显 低 于 中 小

Microsoft Word - Ö¸Á.doc

33023A.book(31006A_cn.fm)

Microsoft PowerPoint - C15_LECTURE_NOTE_04.ppt

中 公 金 融 人 简 介... 2 一 中 国 农 业 银 行 风 貌 介 绍... 3 二 中 国 农 业 银 行 秋 季 招 聘 政 策 解 读 三 2014 农 业 银 行 秋 季 校 园 招 聘 笔 试 备 考 策 略 中 公 金 融 人 精 品 课 程 介 绍..

Microsoft PowerPoint - C15_LECTURE_NOTE_04.ppt

上 海 农 商 银 行 理 财 产 品 风 险 揭 示 书 理 财 资 金, 则 客 户 面 临 产 品 期 限 延 期 调 整 等 风 险 8. 信 息 传 递 风 险 : 上 海 农 商 银 行 将 按 照 本 说 明 书 有 关 信 息 公 告 的 约 定, 进 行 产 品 信 息 披 露 客

(譯本)

<4D F736F F D20C7B0CBC4D5C2D7F7D2B5CCE22E646F6378>

Ps22Pdf

主要内容 微型机的构成 ( 回顾 ) 总线 接口 8086 CPU 的结构及工作原理 8086 存储器 8086 系统配置 2015 年 3 月 9 日星期一 3 时 38 分 16 秒 2

16. 小 雄 在 實 驗 室 中 想 要 稀 釋 濃 硫 酸, 下 列 操 作 方 法 何 者 最 安 全?(ch0) 17. 測 量 四 個 金 屬 球 的 體 積 和 質 量, 結 果 如 下 表, 請 問 何 者 的 材 質 最 可 能 和 其 他 三 者 不 同? (A) 甲 (B) 乙

! * # + + *! # $ # #. 1 #! % &)# * 1 *! * ! % # * # * # + + +!!!! # * % # # + # + * & $ *! * # + * # % #& % &* # & # * %! + * # #!

Transcription:

第 3 章 8086 的寻址方式和指令系统 (2) 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 1

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

3.3.1 数据传送指令 可实现 存储器 立即数 段寄存器 CS DS ES SS 数据传送指令又可分为如下四种 : 通用传送 目标地址传送 标志传送 输入输出 通用寄存器 AX AH BX AL CX BH DX BL SI CH DI CL SP DH BP DL 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 3

3.3.1 数据传送指令 数据传送指令见表 3.3 数据传送指令, 除 SAHF 和 POPF 指令外, 对标志位均没有影响 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 4

1. 通用数据传送指令 1) MOV dest,src; dest src 指令功能 : 目的操作数 源操作数传送的是字节还是字取决于指令中涉及的寄存器是 8 位还是 16 位 具体来说可实现 : 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 5

1 MOV mem/reg1,mem/reg2 一般指令中两操作数中至少有一个为寄存器例 : MOVCL,DL MOV AX,BX MOV[SI],CX MOV CL,[BX+5] 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 6

2 MOV reg, data ; 立即数送寄存器 MOV BX,123H MOV AL, B ; B AL, (AL)=42H 3 MOV mem, data MOV [150H], 150H 4 MOV acc, mem MOV AX,[5200H] 5 MOV mem,acc MOV [9100H], AX ; 立即数送存储单元 ; 存储单元送累加器 ; 累加器送存储单元 6MOV segreg, mem/reg ; 存储单元 / 寄存器送段寄存器 MOV SS, AX 7 MOV mem/reg, segreg ; 段寄存器送存储单元 / 寄存器 MOV AX, CS 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 7

MOV 指令使用规则 : 1) IP 不能作源 目的寄存器,CS 不能作目的寄存器 2) 不允许 mem mem 3) 不允许 segreg segreg 4) 立即数不允许作为目的操作数 5) 不允许 segreg 立即数 6) 源操作数与目的操作数类型要一致 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 8

数据段 在汇编语言程序中, 数据通常存放在数据段中 例如, 某个程序的数据段 : DATA SEGMENT ; 数据段开始 AREA1 DB 12H,34H AREA2 DB 3 DUP(0) ARRAY DW 1234H,5678H STRING DB GOOD DATA ENDS ; 数据段结束 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 9

数据段 数据段以段说明符 SEGMENT 开始,ENDS 结束,DATA 是编程人员定义的数据段的段名 DB 伪操作符用来定义字节变量 DW 定义字变量, 低字节在前, 高字节在后 DUP 复制操作符, 前面的 3 说明在存储器中保留 3 个字节单元, 初值均为 0 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 10

数据段 数据占用存储空间的情况如图 AREA1 的偏移地址为 0000H AREA2 的偏移地址为 0002H ARRAY 的偏移地址为 0005H 字符串 GOOD 从 0009H 开始存放 AREA1 12 34 AREA2 00 00 00 ARRAY 34 12 78 56 STRING 'G' 'O' 'O' 'D'... 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 11

如, 偏移地址传送 MOV DX,OFFSET ARRAY 将 ARRAY 的偏移地址送到 DX, 其中,OFFSET 为属性操作符, 表示应把其后的符号地址的值 ( 而不是内容 ) 作为操作数 若 ARRAY 的值如上页图, 则指令执行后, 符号地址 ARRAY 的偏移量 0005H 被送到了 DX 中 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 12

再如, 段寄存器初始化 MOV AX,DATA MOV DS,AX 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 13

再如, 存储器 存储器 MOV AL,AREA1;AL AREA1 中的内容 12H MOV AREA2,AL;0002H 地址单元 12H 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 14

还有, 需要将两个逻辑段重叠, 即指向同一段物理空间 MOV AX,DS MOV ES,AX 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 15

应用举例将 1000H 开始的 100 个存储单元, 全部填充为 ASCII 码 2AH(*) 程序如下 : AGAIN: MOV DI, 1000H MOV CX, 64H MOV AL, 2AH MOV [DI], AL INC DI DEC CX JNZ AGAIN HLT 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 16

上述程序段存放在代码段中, 设 (CS)=2000H, 则各条指令存放地址如下 : CS : IP 指令 2000 : 0100 MOV DI,1000H 2000 : 0103 MOV CX,64H 2000 : 0106 MOV AL,2AH 2000 : 0108 MOV [DI],AL 2000 : 010A INC DI 2000 : 010B DEC CX 2000 : 010C JNZ 0108 2000 : 010E HLT 2000 : 0110 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 17

写入 2AH(*) 后, 数据段中相应存储单元的内容改变如下 : DS:1000 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A DS:1010 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A DS:1020 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A DS:1030 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A DS:1040 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A DS:1050 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A DS:1060 2A 2A 2A 2A 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 18

2) 堆栈操作指令 什么是堆栈? 按 先进后出 (FILO) 方式工作的存储区域 堆栈以字为单位进行压入 弹出操作 为什么要设置堆栈? 为什么要按 先进后出 方式工作? 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 19

主程序 主程序 执行子程序 1 IP IP( 下 ) 继主续程执序行 执行子程序 IP IP( 下 ) 继主续程执序行 IP IP ( 下 ) 继子续程执序行 1 执行子程序 2 (a) (b) 子程序调用示意图 (a) 主程序调子程序 ; (b) 子程序嵌套示意图 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 20

规定由 SS 指示堆栈段的段基址, 堆栈指针 SP 始终指向堆栈的顶部,SP 的初值规定了所用堆栈区的大小 堆栈的最高地址叫栈底 SS 入栈方向 SP 栈顶 堆栈段 出栈方向 栈底 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 21

1 入栈指令 PUSH src ; src 为 16 位操作数指令功能 : 将源操作数推入堆栈先修改栈顶 (SP SP-2), 再压数据 例 :PUSH AX ; 将 AX 内容入栈执行操作 : (SP) (SP)- 2 (SP)-2 低字节 AL (SP)-1 高字节 AH 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 22

设 (AX)=1020H, 执行示意图如图 低地址 存储区 (SS 段 ) 低地址 存储区 (SS 段 ) (SP)-2 (SP) 20 (AL) (SP)-1 (SP) 10 (AH) 进栈方向 高地址 执行前 (AX)=1020 高地址 PUSH AX 指令执行示意图 执行后 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 23

注意进栈方向是高地址向低地址增长 入栈指令的格式为 : PUSH reg PUSH mem PUSH segreg 例如 : PUSH AX PUSH [BX] PUSH DS 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 24

2 出栈指令 POP dest 指令功能 : 把当前 SP 所指向的一个字送到目的操作数中先弹出数据, 再修改栈顶 (SP SP+2) 例 :POP BX ; 将栈顶内容弹至 BX 执行操作 :(BL) (SP) (BH) (SP)+1 (SP) (SP)+2 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 25

POP BX 的执行示意图如下图所示 存储区 存储区 (SS 段 ) 低地址 (SS 段 ) 低地址 (SP) 20 (SP)+1 10 (SP)+2 执行前 10 20 BX 高地址 (SP) 执行后 (BX)=1020 出栈方向 高地址 POP BX 指令执行示意图 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 26

堆栈指令使用时应注意几点 : 1 堆栈操作总是按字进行 2 不能从栈顶弹出一个字给 CS 3 堆栈指针为 SS:SP,SP 永远指向栈顶 4SP 自动进行增减量 (-2,+2) 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 27

3) 交换指令 XCHG 格式 :XCHG reg, mem/reg 功能 : 交换两操作数的内容 要求 : 两操作数中必须有一个在寄存器中 ; 操作数不能为段寄存器和立即数 ; 源和目地操作数类型要一致 举例 : XCHG AX, BX XCHG [2000H], CL 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 28

(3) 交换指令 XCHG 方法二 : MOV DX, AX MOV AX, BX MOV BX, DX 方法三 : PUSH AX PUSH BX POP AX POP BX 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 29

4) 表转换指令 XLAT XLAT 转换表 ; 转换表 为表格首地址, 可省略不写指令功能 : 将 1 个字节从一种代码转换成另一种代码执行的操作 :AL [(BX)+(AL)] 又叫查表转换指令 典型的隐含寻址它可根据表项序号查出表中对应代码的内容 执行时先将表的首地址 ( 偏移地址 ) 送到 BX 中, 表项序号事先存于 AL 中 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 30

例如 : 内存数据段有一张 1 6 进制数的 ASCII 码表, 设首地址为 2000H, 如欲查出表中第 11 个代码 ( 代码序号从 0 开始 ) 即十六进制数 B 的 ASCII 码 ASCII 表在 DS 段中, 并假设 (DS)=4000H 见下页图 B 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 31

42000H+0 42000H+0BH 存储器 30 31 32... 39 41 42... 45 46... 0 1 2 9 A B E 十六进制数 ASCII 码表 F ( 必须先在内存中建表!) 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 32

则可用如下几条指令实现 : MOV BX, 2000H ;(BX) 表首地址 MOV AL, 0BH ;(AL) 序号 XLAT ; 查表转换 执行后得到 :(AL)= 42H = B 注意 : 转换表长度最大为 256 个表项 ( 字节 ) 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 33

2. 输入输出 (I/O) 指令 只限于用累加器 AL 或 AX 来传送信息 功能 : ( 累加器 ) I/O 端口 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 34

2. 输入输出 (I/O) 指令 (1) 输入指令 IN 格式 : IN AL, 端口地址 ;AL 从 8 位端口读入 1 字节或 IN AX, 端口地址 ; 从 16 位端口读入 1 个字 IN AL,DX ; 端口地址存放在 DX 中或 IN AX,DX 格式, 端口地址 (00~FFH) 直接包含在 IN 指令里, 共允许寻址 256 个端口 当端口地址大于 0FFH 时, 必须用格式 寻址, 即先将端口号送入 DX, 再执行输入操作, DX 允许范围 0000~ 0FFFFH 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 35

2. 输入输出 (I/O) 指令 (1) 输入指令 IN 例用 IN 指令从输入端口读取数据 IN AL,0F1H ;AL 从 F1H 端口读入 1 字节 ; IN AX,80H ;AL 80H 端口内容 ;AH 81H 端口内容 ; MOVDX,310H ; 端口地址 310H 先送入 DX IN AL,DX ;AL 310H 端口内容 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 36

(2) 输出指令 OUT 指令格式 : OUT 端口地址,AL 或 OUT 端口地址,AX ; OUT DX,AL 或 OUT DX,AX ;8 位端口 AL 内容 ;16 位端口 AX 内容 ;DX= 端口地址 例 : OUT 68H,AX ;(69H,68H) AX OUT DX,AL ;(DX) AL 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 37

在使用间接寻址 IN/OUT 指令时, 要事先用传送指令把 I/O 端口号设置到 DX 寄存器中, 如 : MOVDX, 220H IN AL, DX ; 将 220H 端口内容读入 AL 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 38

3. 地址目标传送指令 共有三条 : 格式 : 1)LEA reg, mem 2)LDS reg, mem32 3)LES reg, mem32 要求源操作数必须是一个内存操作数, 目的操作数必须是一个 16 位的通用寄存器 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 39

3. 地址目标传送指令 1) LEA 取有效地址指令 (Load Effective Address) 指令格式 : LEA 目的, 源指令功能 : 取源操作数地址的偏移量, 送到目的操作数 源操作数必须是存储单元, 目的操作数是一个除段寄存器之外的 16 位寄存器 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 40

例 :LEA BX, [SI+10H] 设 :(SI)=1000H 则执行该指令后,BX=1010H 注意以下两条指令差别 : LEA BX, BUFFER ; 有效地址传送 MOV BX, BUFFER; 直接寻址 BUFFER 所对 ; 应的单元, 将所存储的 ; 内容送 BX 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 41

如果要用 MOV 来取偏移地址的话, 下面两条指令等效 : LEA BX, BUFFER MOV BX, OFFSET BUFFER 注意,OFFSET 只能取静态地址 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 42

2)LDS(LES) reg, mem32; 指令格式 : LDS(ES) 目的, 源指令功能 : 从源操作数指定的存储单元中, 取出 1 个 4 字节地址指针, 送进目的寄存器 DS(ES) 和指令中指定的目的寄存器中 源操作数必须是 4 字节存储单元, 目的操作数必须是 16 位寄存器, 常用 SI 寄存器, 但不能用段寄存器 该指令运行后, 前两个字节送到指令中的目的寄存器 reg 中, 后两个字节送 DS(ES) 中 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 43

21000H 21080H 存储器... 00 10 34 12... 例 :LDS(LES) SI, [80H] 设 DS=2100H, (21080H)=1000H, (21082H)=1234H 执行指令后 : (SI)=1000H (DS/ES)=1234H 执行指令前后,DS 有无变化? 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 44

4. 标志传送指令 共有四条 : 1) 读标志指令 LAHF 指令格式 :LAHF 指令功能 :LAHF 把标志寄存器低 8 位中的 5 个标志位传送到 AH 中的指定位 D AH D7 6 D D 5 D D 3 D D 4 2 1 0 FLAG OF DF IF TF SF ZF AF PF CF LAHF 指令的功能 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 45

(2) 设置标志指令 SAHF 指令格式 :SAHF 指令功能 : SAHF 的功能与 LAHF 的功能正好相反 AH D7 D 6 D 5 D D 3 D D 4 2 1 D0 FLAG OF DF IF TF SF ZF AF PF CF SAHF 指令的功能 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 46

(3)PUSHF 标志入栈指令指令格式 : PUSHF 指令功能 : (SP-2) 标志寄存器 FR 低 8 位 (SP-1) 标志寄存器 FR 高 8 位 SP SP-2 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 47

(4)POPF 标志出栈指令指令格式 : POPF 指令功能 : 标志寄存器低 8 位 (SP) 标志寄存器高 8 位 (SP+1) SP SP+2 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 48

例如 : PUSH AX PUSH CX ; PUSHF ; 这段程序用到 AX,CX 以及标志位 ; 保护标志寄存器内容... POPF POP CX POP AX ; 程序体 ; 恢复标志寄存器内容 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 49

在数据传送指令中, 除 SAHF 和 POPF 这两条指令外, 其余指令均不影响标志位 可采用堆栈指令修改 TF 标志, 以进入跟踪状态 如 : PUSHF POP AX OR AX,0000 0001 0000 0000B PUSH AX POPF 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 50

课堂讨论 下列指令是否正确, 为什么? MOV BX,[CX] MOV DS,ES MOV [SI],35H PUSH AH PUSH CS POP CS POP DS 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 51