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

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

数据库系统概论

幻灯片 1

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

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

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

数据库系统概论

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

untitled

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

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

<4D F736F F D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6B0B8C0FDB5BCD1A75FD1F9D5C22E646F63>

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

数据库系统概论

幻灯片 1

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

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

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

<4D F736F F F696E74202D D D6B8C1EECFB5CDB DC6E4CBFBD6B8C1EE2E BBCE6C8DDC4A3CABD5D>

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

习 题 一

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

Microsoft PowerPoint - C15_LECTURE_NOTE_06

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

Microsoft PowerPoint - C15_LECTURE_NOTE_06

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

Microsoft PowerPoint - os_4.ppt


DPJJX1.DOC

数据库系统概论

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

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

PowerPoint Presentation

CH559指令周期.doc

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

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

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

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

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

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

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

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

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

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

<4D F736F F D C4EAC6D5CDA8B8DFB5C8D1A7D0A3D5D0C9FAC8ABB9FACDB3D2BBBFBCCAD4CEC4BFC6D7DBBACDCAD4BEEDBCB0B4F0B0B82DD6D8C7ECBEED2E646F63>

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

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

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

Ps22Pdf


Microsoft Word - 作业2008.doc

<4D F736F F D C4EAB9FABCD2B9ABCEF1D4B1D0D0D5FEC4DCC1A6B2E2D1E9A3A841C0E0A3A92E646F63>

一、填空题

bingdian001.com

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

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

Microsoft PowerPoint - C15_LECTURE_NOTE_04.ppt

Microsoft PowerPoint - C15_LECTURE_NOTE_04.ppt

微處理機期末專題

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




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

組譯與連結(Ver6

. 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

! "! "! # $ # # %#!# $# &# # ()*+, )-.) /# () () 0# 1,2.34, 4*.5)-*36-13)7,) ,9,.).6.(+ :# 13).+;*7 )-,7,<*7,-*=,>,7?#

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

Microsoft Word - Syllabus of Assembly Programming_new.doc

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

Computer Architecture & Organization

7688使用手冊V10.doc

untitled

<4D F736F F F696E74202D DB5DAB0CBBDB22DBBE3B1E0D3EFD1D4B3CCD0F22E >

untitled

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

Microsoft Word - Ö¸Á.doc

HD61202 HD HD61203 HD61202, HY HY HD61202 HD61202 HD61203 HD =4096 RAMRAM LCD 2HD HD HD /32--

GSA Media Retention Web File xlsx

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

1 CPU

PowerPoint Presentation

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

(譯本)

<4D F736F F D20CAB5D1E BACDBBE3B1E0D3EFD1D4B5C4BBECBACFB1E0B3CCCAB5D1E92E646F63>

Are You suprised ?


W77E58中文手册

Ps22Pdf

Microsoft Word - 1-3陳詠琳-近代..

欧洲标准胀紧套

AT89C2051中文资料.doc

Ps22Pdf


Transcription:

2017 版 微机原理与系统设计 第 3 章 8086CPU 指令系统 董明皓, 博士 西安电子科技大学 dminghao@xidian.edu.cn

目录 (12 课时 ) 1 2 3 4 5 汇编语言基本概念 8086 指令分类数据与转移地址的寻址方式 8086 的六类指令总结 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn 2

基础知识引入 指令系统 :CPU 能完成的所有指令的集合, 它是在 CPU 设计时就确定了的 对不同的 CPU, 其指令系统中所包含的具体指令不同 8088/8086 CPU 的指令系统是完全一样的 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

基础知识引入 直接寻址 [1508H],VAR,DAT 寄存器间接寻址 [BX/SI/DI] 寄存器相对寻址 [BX/BP/SI/DI]+8/16 位 disp 基址变址寻址 [BX/BP]+[SI/DI] 基址变址且相对寻址 [BX/BP]+[SI/DI]+8/16 位 disp 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

8086 指令系统 数据传送指令 算术运算指令 逻辑运算指令 移位 循环指令 串操作指令 控制转移指令 处理器控制指令 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

可以完成数据在 MEM 单元 REG 之间的传递 包括 ( 七种 ): MOV LEA LDS LES LAHF SAHF XCHG XLAT PUSH POP PUSHF 和 POPF 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

共同特点 : 1. 除标志传送指令 ( SAHF ) 堆栈操作指令(POPF) 之外, 其它指令在 CPU 执行后, 不影响 PSW( 微处理器状态字 ) 中的各标志位 ; 2. 当指令中有两个操作数时, 第一个操作数为 DST, 第二个为 SRC 3. SRC 寻址方式不能为立即数和段寄存器 CS

通用语法 1: 立即数只能做 SRC; 通用语法 2: 数据类型一致 ; 通用语法 3: 数据类型要明确 ; 通用语法 4: 当 DS/SS/ES 为 DST 时,SRC 不能为立即数 通用语法 5:CS/IP 不能做 DST, 用户无权更改 CS IP 值通用语法 6: 两 MEM 单元不能直接操作通用语法 7: 指令语句中, 不允许两个变量进行运算 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

通用传输类指令 格式 :MOV DST, SRC;(DST) (SRC) 说明 : 将 SRC( 源操作数 ) 中的一个字节或一个字传送到 DST( 目的操作数 ) 所指定的位置 MOV 指令可以在立即数 存储单元 寄存器和段寄存器之间传送数据, 其传送路径如图 3.3 所示 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

通用传输类指令 1 立即数 通用寄存器或存储单元例 1: MOV AX,1234H ; 将 1234H 传送到 AX 中 AX???? 1234 1234H 例 2: MOV var1,1234h ; 将 1234H 传送到变量 var1 中 DS:var1 34H?? 12H?? 1234H

通用传输类指令 2 通用 REG M 单元例 3: MOV var1,dx ; 将 DX 的内容传送到变量 var1 中例 4: MOV DX,var1 ; 将变量 var1 的内容传送到 DX 中 DS:var1 AAH?? 55H?? DX 55AAH

通用传输类指令 3 通用 REG 通用 REG 例 5 : MOV AX,BX ; 将 BX 的内容传送到 AX 中 4 通用寄存器 段寄存器例 6: MOV DS,AX MOV BX,ES 5 通用寄存器 段寄存器例 7: MOV DX,CS 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

通用传输类指令 6 段寄存器 存储单元 例 8 例 9 MOV DS,var1 MOV var2,es CS 不能作目的 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

通用传输类指令 应该特别注意 MOV 指令不能直达的路径 : 立即数 段寄存器 存储单元 存储单元 段寄存器 段寄存器 任意单位 CS, IP IP 任意单位 要实现这些功能需要中转步骤或其他途径 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

通用传输类指令 1 立即数 段寄存器一般可以通过 : 立即数 通用 REG 段 REG 完成, 如 : MOV AX,3A01H MOV DS,AX ;(DS) 3A01H 2 存储单元 存储 2M 单元 M 单元一般可以通过 :M 单元 通用 REG M 单元, 如 : MOV AX,VAR1 MOV [DI+10],AX ;((DI)+10) VAR1 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

通用传输类指令 3 段寄存器 段寄存器 可以通过段 REG 通用 REG 段 REG 完成, 如 : MOV AX, CS MOV DS,AX ;(DS) (CS) IP,CS 的改变 通过转移指令来实现 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

例题 通用传输类指令下面指令书写是否正确, 分析寻址方式和实现功能 MOV AX,BX ; 将 BX 中的一个字传送到 AX 中 MOV AL,DL ; 将 DL 中的一个字节传送到 AL 中 MOV AX,02 ; 将立即数 02 传送到 AX 中 MOV SI,[BX] ;(SI) ((BX)) 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

例题 通用传输类指令下面指令书写是否正确, 分析寻址方式和实现功能 MOV AL,4[DI] : 将 (DI)+4 作为偏移地址, 将该单元内容送入 AL MOV AX,[BX+2] : 将寄存器 BX 中的内容加 2 后的值作为偏移地址, 将该单元中的一个字节送入 AL 中, 下一单元中的一个字节送 AH 中 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

例题 通用传输类指令下面指令书写是否正确, 分析寻址方式和实现功能 MOV [BX][DI],DX ;((BX)+(DI)) (DL) ;((BX)+(DI)+1) (DH) 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

例题 通用传输类指令程序中采用伪指令定义了一组变量, 分析下列语句设在数据段 (DS 段 ) 有下面的变量定义 : DATA1 DW 1234H, 5678H DATA2 DB 20H, 30H, 40H DATA3 DW 10 DUP(?) 则传送指令可以有 : MOV AX, DATA1 ; AX (DATA1) 指令执行后,(AX)=1234H DATA1 34H 12H 78H 56H AL AH 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

例题 通用传输类指令程序中采用伪指令定义了一组变量, 分析下列语句设在数据段 (DS 段 ) 有下面的变量定义 : DATA1 DW 1234H, 5678H DATA2 DB 20H, 30H, 40H DATA3 DW 10 DUP(?) MOV DI,2 MOV AL,DATA2[DI] ;AL (DS:OFFSET DATA2+(DI)) 指令执行后, (AL)=40H 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

例题 通用传输类指令 程序中采用伪指令定义了一组变量, 分析下列语句 设在数据段 (DS 段 ) 有下面的变量定义 : DATA1 DW 1234H, 5678H DATA2 DB 20H, 30H, 40H DATA3 DATA3 DW 10 DUP(?) +1 MOV SI,2 +2 MOV DX,0AABBH MOV DATA3[SI],DX ;(DS:OFFSET DATA3+(SI)) (DX) 0BBH 0AAH DL DH 指令执行后, (DS:OFFSET DATA3+(SI))=0AABBH 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

例题 通用传输类指令 设在数据段 (DS 段 ) 有下面的变量定义 : DATA1 DW 1234H, 5678H DATA2 DB 20H, 30H, 40H DATA3 DW 10 DUP(?) 则传送指令可以有 : MOV BP, 2 MOV AL, DATA2[BP] 指令执行后,(AL)=40H ;AL (DS : OFFSET DATA2+(BP)) 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

例题 通用传输类指令 设在数据段 (DS 段 ) 有下面的变量定义 : DATA1 DW 1234H, 5678H DATA2 DB 20H, 30H, 40H DATA3 DW 10 DUP(?) 则传送指令可以有 : MOV CX, LENGTH DATA3 ;CX LENGTH DATA3 指令执行后,(CX)=10 (0AH) 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

例题 通用传输类指令 设在数据段 (DS 段 ) 有下面的变量定义 : DATA1 DW 1234H, 5678H DATA2 DB 20H, 30H, 40H DATA3 DW 10 DUP(?) 则传送指令可以有 : MOV BX, SIZE DATA3 ;(BX) SIZE DATA3 指令执行后,(BX)=20 (14H) 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

例题 通用传输类指令 设在数据段 (DS 段 ) 有下面的变量定义 : DATA1 DW 1234H, 5678H DATA2 DB 20H, 30H, 40H DATA3 DW 10 DUP(?) 则传送指令可以有 : MOV SI, OFFSET DATA2 ;(SI) OFFSET DATA2 指令执行后,(SI)=0004H 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

例题 通用传输类指令例如, 下面指令书写是错误的 (DATA1 为字变量 ) MOV 10H,AL ㄨ DST 不能为立即数寻址 MOV AL,CX ㄨ类型不一致 MOV [BX][SI],78H ㄨ类型不明确 MOV DS,SEG DATA1 ㄨ立即数不能给段寄存器传送数据 MOV [BX],12H*2 ㄨ类型不明确 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

例题 通用传输类指令例如, 下面指令书写是错误的 (DATA1 为字变量 ) MOV DATA1,AH ㄨ类型不一致 MOV [DI]+02H,DATA1 ㄨ两单元之间不能直接传送数据 MOV CS,AX ㄨ CS 不能做 DST MOV DS,0100H ㄨ当 DS 作 DST 时,SRC 不能为立即数 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

例题 通用传输类指令 对于双操作数指令, 两个操作数的类型必须匹配 : 两者都指定了类型, 则必须一致, 否则指令出错 ; 两者之一指定了类型, 一般指令无错 ; 两者都无类型, 则指令出错 ( 类型不定 ) 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

例题 通用传输类指令 对于操作数的类型, 还应该注意 : 不含变量名的直接寻址 寄存器间接寻址 寄存器相对寻址 址变址寻址 基址变址且相对寻址的操作数也是无类型的 ; 利用 PTR 操作符可指定或暂时改变存储单元的类型 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

例题 通用传输类指令 总结 : 两操作数字长必须相同 ; 两操作数不允许同时为存储器操作数 ; 两操作数不允许同时为段寄存器 ; 在源操作数是立即数时, 目标操作数不能是段寄存器 ; IP 和 CS 不作为目标操作数,FLAGS 一般也不作为操作数在指令中出现 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

取有效地址指令 (LEA)Load Effective Address 格式 :LEA REG16, MEM 功能 : 指令的功能是将源操作数 MEM 的偏移地址传送到寄存器 REG( 只能用 REG) 这是一条特殊指令, 它传送的不是操作数本身, 而是操作数的有效地址 DST REG 为通用 REG, 一般用 BX BP SI DI 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn

取有效地址指令 (LEA)Load Effective Address 例 :LEA DI, VAR1 ;(DI) VAR1 的偏移地址等效于 : MOV DI, OFFSET VAR1 例 :LEA BX,VAR1+15 ;(BX) VAR1 的偏移地址 +15 等效于 : MOV BX, OFFSET VAR1+15

取有效地址指令 (LEA)Load Effective Address 例 : 取 MEM 中一字节单元的偏移地址, 设该单元变量名为 DAT1 MOV BX, OFFSET DAT1 ;BX 内容指向 DAT1 单元 EA LEA BX, DAT1 ;SRC 直接寻址区分 MOV BX, DAT1 ;,SRC 直接寻址 MOV BX, WORD PTR DAT1 ;,SRC 直接寻址, 找到字单元

取地址指针指令 (LDS,LES)Load Data/Extra Segment Register 格式 : LDS REG16,MEM ;(DS) (MEM+2), (REG16) (MEM) LES REG16,MEM ;(ES) (MEM+2), (REG16) (MEM) 功能 : 取地址指针指令 LDS 可以将双字变量 MEM 内容中的高 16 位送入 DS, 低 16 位送入指定的 REG16 中 ; 而取地址指针指令 LES 可以将双字变量 MEM 内容中的高 16 位送入 ES, 低 16 位送入指定的 REG16 中

取地址指针指令 (LDS,LES)Load Data/Extra Segment Register 例 : 某数 X( 字类型 ) 所在 MEM 单元的地址指针在 POINT 双字 单元中, 编程实现将 X 存入 DX LDS BX, POINT ;SRC 直接寻址, 找到 POINT 单元 ;POINT 单元字单元 BX,BX 指向 X 所在单元 EA ;POINT 单元下一个字单元 DS,BX 指向 X 所在单 MOV DX, [BX] 元段地址 ;SRC-REG 间接寻址, BX 默认在 DS 段 ;(DX)=X

标志传送指令 (LAHF,SAHF) Load AH register from flags /Store AH register in flags LAHF ;(AH) PSW 寄存器的低 8 位 SAHF ;PSW 寄存器的低 8 位 (AH), 影响标志位 源操作数和目的操作数的寻址方式均为隐含寻址方式 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OF DF IF TF SF ZF AF PF CF 状态标志 :CF PF AF ZF SF OF 共 6 位 控制标志 :TF IF DF 共 3 位

数据交换指令 (XCHG) 数据传输指令 格式 :XCHG DST, SRC ;DST SRC 功能 : 该指令是完成 REG MEM/REG 内数据互换 例 : 判断以下指令是否合法 XCHG AX, BX ;,(AX) (BX) XCHG CX, [DI] ;,(CX) ((DI)) XCHG DX, VAR1 ;,(DX) (VAR1) XCHG AL, [SI+3] ; XCHG DH, DL ; 段 REG 不能进行交换立即数不能进行交换 MEM 单元不能进行交换

数据交换指令 (XCHG) 例 : 判断以下指令是否合法 XCHG AX,1234H ; ㄨ立即数不能参加交换 XCHG BX,ES ; ㄨES 段寄存不能参加交换 XCHG AL,CX ; ㄨ类型不一致 XCHG DAT1,DAT2 ; ㄨ两存储器单元不能直接交换 XCHG AX,BL ; ㄨ类型一致 例 : 若 (CX)=9A8BH, 试将 CX 的高 8 位与低 8 位互相交换 XCHG CH, CL ; 指令执行后,(CX)=8B9AH

字节转换指令 (XLAT)Translate byte 格式 :XLAT 功能 : (AL) ((BX)+(AL)) ; 无 OPR ;SRC/DST 为隐含寻址 默认在 DS 段, 以 BX 内容作为基址 +AL 内容作为相对位 移量, 两部分和作为待寻找 MEM 单元 EA 将该字节单元内容读出给 AL

字节转换指令 (XLAT)Translate byte 转换码指令, 或查表指令非常适合于两个代码之间的转换, 使用该指令之前, 应在数据段中定义一个字节型表, 并将表起始地址的偏移量放入 BX, 表的索引值放入 AL, 索引值从 0 开始, 最大为 255; 指令执行后, 在 AL 中即可得到对应于该索引

字节转换指令 (XLAT)Translate byte 转换码指令, 或查表指令例 P39 : 要将 Code1 转换成 Code2, 如表 3.3 所示, 则分三步完成从 Code1 转换成 Code2 1. 在 TABLE 变量中按 Code1 的顺序存储 Code2 的内容, 如图 3.4 所示 ; 2. 将 BX 指向变量 TABLE 的首地址, 即 LEA BX,TABLE ; 3. 在 AL 中给出 Code1 的值后, 执行 XLAT 指令, 这时 AL 的内容即为相应的 Code2 值

字节转换指令 (XLAT)Translate byte 例如 P39 表 3.3 和图 3.4 所示当 AL=0 时, 则执行 XLAT 指令后得到 AL=? 当 AL=1 时, 则执行 XLAT 指令后得到 AL=?

字节转换指令 (XLAT)Translate byte 例 : 将 0~9 及 AH~FH 数字转换为对应的字符 DS: (BX) ; 在 DS 段 TABLE DB 30H,31H, 39H,41H, 46H ; 在 CS 段 MOV AL, 4 LEA BX, TABLE XLAT 语句执行完后,(AL)=34H 31H 32H 33H 34H 35H 36H 39H 41H 42H 46H TABLE

字节转换指令 (XLAT)Translate byte 例 : 若 TAB 为 DS 段一个字节型表的开始地址, 则执行以下程序段后,AL=? TAB DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH MOV BX, OFFSET TAB MOV AL,4 XLAT 答 AL=66H

堆栈操作指令 (PUSH POP PUSHF POPF) 堆栈是 M 的一部分, 按照后进先出原则操作 ; 按照字单元进行操作 ; 该存储区的存取地址由一个专门的地址 REG 来管理, 称为堆栈指针 (SP); 在 8088/8086 系统中, 堆栈段的段地址由 SS 提供, 堆栈操作的偏移地址由 SP 提供 ; 在 8088/8086 系统中, 栈顶向低地址单元变化 压入堆栈操作 : 将信息送入堆栈的过程 ; 弹出堆栈操作 : 从堆栈中取出信息的过程

堆栈操作指令 (PUSH POP PUSHF POPF)...... 堆栈操作不会从 Stack 中去掉 / 擦除信息, 因 SP 的自动修改改变栈顶 SP DX DX 主要用于 : 中断控制 CX BX SP CX BX 子程序调用 暂存数据 AX AX SP 栈底 栈底 栈底 (a) (b) (c)

1. 压入堆栈指令 (PUSH) 格式 :PUSH SRC ; 将 SRC 压入堆栈, 即 (SP) (SP)-2,(SP) (SRC) PUSHF ; 将 16 位 PSW 压入堆栈, 即 (SP) (SP)-2,(SP) (PSW) 说明 : 压入堆栈指令 PUSH(Push word onto stack) 将先修正堆栈指 针 SP 的内容, 然后再将 SRC 或 PSW 的内容送入堆栈 SRC 必须是字型的 SRC 可以是是通用 REG 段 REG 和 MEM 单元 SRC 不能是立即数 数据传输指令 堆栈操作指令 (PUSH POP PUSHF POPF)

2. 弹出堆栈指令 (POP) 格式 :POP DST; 从堆栈弹出 DST, POPF 数据传输指令 堆栈操作指令 (PUSH POP PUSHF POPF) 即 (DST) (SP),(SP) (SP)+2 ; 从堆栈弹出 PSW, 即 (PSW) (SP),(SP) (SP)+2, 堆栈内一个字单元内容给 FLAG, 改变标志位 说明 : 取出堆栈的内容送入 DST 所指定的寄存器 存储单元或 PSW, 然后修正 SP 的内容 DST 也必须是字型的 DST 可以是通用 REG 段 REG(CS 除外 ),MEM 单元 DST 不能是立即数

堆栈操作指令 (PUSH POP PUSHF POPF) 例 : 判断下列指令是否合法, 如合法叙述完成什么操作 PUSH AX PUSH DS PUSH [SI] PUSHF POP CS PUSH CL PUSH 1234H ;, 将 (AX) 压入堆栈 ;, 将 (DS) 压入堆栈 ;, 将 ((SI)) 压入堆栈 ;, 将 (PSW) 压入堆栈 ;,CS 不能做 DST ;, 字节操作 ;, SRC 不能为立即数

堆栈操作指令 (PUSH POP PUSHF POPF) 例 : 判断下列指令是否合法, 如合法叙述完成什么操作 POP BX ; 从堆栈弹出一个字, 送给 (BX) POP ES ; 从堆栈弹出一个字, 送给 (ES) POP [SI] ; 从堆栈弹出一个字, 送给 ((SI)) POPF ; 从堆栈弹出一个字, 送给 (PSW)

堆栈操作指令 (PUSH POP PUSHF POPF) 利用堆栈操作指令可以方便地完成某些复杂操作, 例如当需要交换 DS 和 ES 的内容时, 可以采用 : PUSH DS PUSH ES POP DS POP ES

堆栈操作指令 (PUSH POP PUSHF POPF) 另外, 在子程序设计时, 需要从子程序返回时尽量保持通用寄存器不变, 例如为保持 AX BX CX DX 的内容不变, 则在子程序入口处排入指令 : PUSH AX PUSH BX PUSH CX PUSH DX 然后在子程序返回指令之前, 排入指令 : POP DX POP CX POP BX POP AX

堆栈操作指令 (PUSH POP PUSHF POPF) 例 3.1 设 (SP)=00A0H, 执行下列指令 PUSH AX PUSH VAR1 后,(SP)= 解 : 每向堆栈压入一个字,SP 的内容减 2, 因此指令执行后 (SP)= 009CH

堆栈操作指令 (PUSH POP PUSHF POPF) P81 3.10 如果堆栈的起始地址为 2200:0000, 栈底为 0100H, (SP)=00A8H, 求 : (1) 栈顶地址 (2)SS 内容 (3) 再存入数据 5678H,3AF2H 后,SP 的内容

堆栈操作指令 (PUSH POP PUSHF POPF) 例 : 利用 PUSHF 和 POPF 指令将 PSW 中的单步标志 TF 置 1 PUSHF POP AX OR AX, 0100H PUSH AX POPF ; 将标志 REG 内容压入栈顶 ; 将栈顶内容弹出到 AX ; 将 AX 高 8 位中的最低位 ( 对应于 TF 位 ) 置 1, 其余保持不变 ; 将 AX 内容压入栈顶 ; 将栈顶内容弹出到标志 REG,TF 被置 1 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OF DF IF TF SF ZF AF PF CF

堆栈操作指令 (PUSH POP PUSHF POPF) 应该注意 : 在程序设计时,PUSH POP 必须配对使用, 尤 其是在分支中应该确保 PUSH 与 POP 成对出现, 以保证堆栈 操作的正常次序, 这也是子程序能够正常返回的前提条件

课后作业 无 Deadline:2016.9.24 23:59