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

Similar documents
数据库系统概论

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

幻灯片 1

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

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

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

数据库系统概论

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

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

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

untitled

幻灯片 1

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

数据库系统概论

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

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

<4D F736F F D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6B0B8C0FDB5BCD1A75FD1F9D5C22E646F63>

DPJJX1.DOC

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

习 题 一

数据库系统概论

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

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

PowerPoint Presentation

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

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

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

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

L15 MIPS Assembly

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


<4D F736F F F696E74202D D D6B8C1EECFB5CDB DC6E4CBFBD6B8C1EE2E BBCE6C8DDC4A3CABD5D>

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

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

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


微處理機期末專題

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

<4D F736F F D C4EAC6D5CDA8B8DFB5C8D1A7D0A3D5D0C9FAC8ABB9FACDB3D2BBBFBCCAD4CEC4BFC6D7DBBACDCAD4BEEDBCB0B4F0B0B82DD6D8C7ECBEED2E646F63>

Microsoft Word - 作业2008.doc

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

<4D F736F F F696E74202D DB5DAB0CBBDB22DBBE3B1E0D3EFD1D4B3CCD0F22E >

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

Ch2.1


<4D F736F F D C4EAB9FABCD2B9ABCEF1D4B1D0D0D5FEC4DCC1A6B2E2D1E9A3A841C0E0A3A92E646F63>

Microsoft Word - 新1-3.doc

第0章 硬件部分试题分析和解题方法

Computer Architecture & Organization

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

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

Microsoft PowerPoint - C15_LECTURE_NOTE_06

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

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

一、填空题

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

bingdian001.com


Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

組譯與連結(Ver6

Microsoft PowerPoint - C15_LECTURE_NOTE_06

CH559指令周期.doc

!!"#! " # $%%&#! ()*+ %& %,&,, &!!# # # #! "# ## # #! $# # #! %#! &# -,.$# /! 0(1 $%%& %&23%2!!!!!!!!!!!!!! %,% 4&%.&.22!!! &! 2%% 2,% %.32!,%%%,,! 56

<4D F736F F D20C7B0CBC4D5C2D7F7D2B5CCE22E646F6378>



. 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

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

1 2 9

instructions.PDF

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

Microsoft PowerPoint - C15_LECTURE_NOTE_04.ppt

PowerPoint Presentation

Microsoft PowerPoint - C15_LECTURE_NOTE_04.ppt

專題最終版.doc

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

Microsoft PowerPoint - os_4.ppt

Are You suprised ?

欧洲标准胀紧套

礼仪玉和葬玉

Microsoft Word - 1 page0.doc

<4D F736F F D20D1A7C9FACAD6B2E1B8C4D7EED6D5A3A8B4F8B1EDB8F1BCD3D2B3C2EBB0E6A3A9372E3239>

桂林市劳动和社会保障局关于

第三章 維修及管理

Microsoft Word 年度选拔硕博连读研究生的通知.doc

(譯本)

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

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

<4D F736F F D20D0C5CFA2BBAFB7A2D5B9D6D8B5E3D7A8CFEEB9E6BBAE2E646F63>

关于建立境内违法互联网站黑名单管理制度的通知

? 這 全 都 是 市 政 府 提 供 給 我 的 資 料 低 底 盤 公 車 計 畫 96 年 預 算 新 台 幣 4,500 萬 元 97 年 預 算 新 台 幣 1 億 6,500 萬 元 98 年 預 算 新 台 幣 3 億 2,300 萬 元, 共 有 307 台 低 底 盤 公 車,99

(1) (%) (1%) (1%) (1%) (1%) (1%) (1%) - 2 -

PowerPoint 簡報

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

学习MSP430单片机推荐参考书

中国证券监督管理委员会公告

1 CPU

Transcription:

本教案内容 第 3 章 8086CPU 指令系统 1. 汇编语言指令 9. 转移指令 10. 2. 8086 指令分类循环控制指令 11. 子程序调用返回 3. 数据与转移地址的指令寻址方式 12. 中断调用返回指 4. 数据传送类指令令 5. 算术运算类指令 13. 字符串操作指令 6. 逻辑运算类指令 14. I/O 输入输出指令 7. 移位类指令 15. 其它指令 8. 标志位操作指令 16. 宏指令

3.33 数据与转移地址的寻址方式 在指令中, 用于说明操作数所在地址的方法就称为寻址方式 8086CPU 指令系统的寻址方式分为两类 : 1. 数据的寻址方式 : 寻找指令操作所需数据的方法 ; 2. 转移地址的寻址方式 : 寻找转移指令所需的程序地址

下面讲关于数据的寻址方式时, 均以数 据传送指令 MOV 为例讲解 MOV 指令格式如下 : MOV DST, SRC 助记符 目的操作数 指令完成的功能 : (DST) 源操作数 (SRC)

数据的寻址方式就是告诉 CPU 存 / 取数据的地方 数据的寻址方式 ( 共 8 种 ): 立即寻址 (Immediate Addressing ) 寄存器寻址 (Register Addressing ) 存储器寻址 (Memory Addressing )(5 种 ): 直接寻址 寄存器间接寻址 寄存器相对寻址 寄存器相对寻址基址变址寻址和基址变址且相对寻址 隐含寻址 (Hidden Addressing )

1. 立即寻址 3.33 数据寻址方式 操作数直接存放在指令中, 紧跟在操作码之后, 作为指令的一部分, 存放在代码段里, 这种操作数称为立即数 立即寻址主要用来给 REG 或 M 赋初值 注意 : 只能用于源操作数字段, 不能用于目的操作数字段 如 :MOV 12H, AL ( 语法错误 )

例 :MOV AX,1234H A X A H A L B8H 34H 12H CS 段 操作码 (AX)=1234H 存储器

2. 寄存器寻址 数据放在指令规定的寄存器中, 对 16 位数据, REG 可以是 AX BX CX DX SI DI SP BP 以及段寄存器, 而对于 8 位数据, REG 可以是 AH AL BH BL CH CL DH DL 在程序设计中, 一般存放数据时, 寄存器选择通用寄存器, 而存放结果时尽可能的使用 AX 累加器, 因为使用 AX 累加器要比用其它寄存器存放结果, 指令执行时间要短一些 寄存器寻址既可以作 DST, 也可以作 SRC

例 :MOV AX, BX A X B X 若 (AX)=1234H,(BX)=5678H, 则 CPU 执行上条指令后,(AX)=5678H, 而 (BX) 不变 又如 :MOV CX, DL ( 语法错误 ) 错误原因 : 类型不一致

3. 存储器寻址 3.33 数据寻址方式 这类寻址方式, 操作数在存储器中, 而存储器单元的地址由以下五种寻址方式的任何一种均可以找到 但在指令中给出的只是要寻找的操作数所在单元的段内偏移地址, 而操作数所在单元的段地址除非指令中用段前缀特别指明, 否则是默认的 DS

1 直接寻址 (Direct Addressing ) 指令中直接给出了要寻找操作数所在单元的 16 位偏移地址 指令中直接给出的操作数所在单元的 16 位偏移地址默认在数据段 也可以通过增加段前缀来改变操作数所在的段地址 操作数所在单元的物理地址 : PA= ( 段寄存器 ) 16 + 指令中给出的偏移地址

例 1:MOV AX,[2000H] 若 DS 为 3000H, 则 : DS + 3 0 0 0 0 H 2 0 0 0 H PA=3 2 0 0 0 H A X A H A L 32000H 32001H A1H 00H 20H 存储器 CS 段 操作码 数据段

例 2:MOV [2000H],AL 若 DS 为 3000H, 则 : DS + 3 0 0 0 0 H 2 0 0 0 H PA=3 2 0 0 0 H A L 32000H 00H 20H CS 段 操作码 数据段 存储器

例 3:MOV ES:[2000H],AL 若 ES 为 2050H, 则 : ES + 2 0 5 0 0 H 2 0 0 0 H PA=2 2 5 0 0 H A L 22500H 00H 20H 前缀码操作码 CS 段附加数据段 存储器

在实际的汇编语言程序设计中, 如果程序比较复杂, 而用到的存放数据的单元又很多, 那么在直接寻址方式当中, 用户就要记住存放数据的每个单元的地址, 同时还要记住该地址单元存放的数据的意义, 这样对设计程序带来了很大的困难 所以在实际的汇编语言程序设计中, 常常采用给存放数据的单元, 定义一个符号地址名, 即变量名 / 变量

变量名一但定义了, 就具有了 : 该单元的段地址 该单元的偏移地址 类型 长度 五个属性 大小 这样, 在程序设计中就可以用这个变量名代替原来的存储器单元的实际地址

例 4: 若 (DS)=1500H,TABLE 为在 DS 段定义的一个字变量, 且偏移地址为 0004H 则 CPU 执行 MOV AX,TABLE 指令完成的操作如下 : DS 1 5 0 0 0 H + 0 0 0 4 H PA=1 5 0 0 4 H A H A L 15004H 15005H 存储器 TABLE 数据段

例 5: 若 VAR1 为字变量, VAR2 和 VAR3 为字节变量, 判断下列指令的书写格式是否正确, 正确的说出 SRC 和 DST 的寻址方式, 不正确说出错误原因 MOV AX, VAR1 SRC 为直接寻址 DST 为寄存器寻址 MOV AX, VAR2 类型不一致 MOV VAR2, VAR3 两存储器单元之间不能直接传送数据 MOV [0200H],12H 类型不明确

例 6: 将例 5 中语法不正确的语句改对 MOV AX, VAR2 类型不一致改 :MOV AL, VAR2 MOV VAR2, VAR3 两存储器单元之间不能改 :MOV AL,VAR3 直接传送数据 MOV VAR2,AL MOV [0200H],12H 类型不明确改 :MOV BYTE PTR [0200H],12H 或者 :MOV WORD PTR [0200H],12H 注 :PTR 为临时属性修改符

2 寄存器间接寻址 Register Indirect Addressing 这种寻址方式, 要寻找的操作数在某存储器单元中, 该存储器单元地址的段内 16 位偏移地址在指令中以 BX SI DI 某一个寄存器给出 其段地址默认在 DS 段 EA= BX SI DI

例 1:MOV AX, [BX] 其 SRC 为寄存器间接寻址 ; DST 为寄存器寻址 ; 指令完成的功能为 : AX (DS:(BX)) 若 :DS=3000H, BX=1050H 则 :SRC 所在单元的物理地址为 : PA=(DS) 16+(BX) =30000H+1050H =31050H

DS: 3 0 0 0 0 H + BX: 1 0 5 0 H PA: 3 1 0 5 0 H 8BH 07H CS 段 操作码 A H A X A L 31050H 31051H 数据段 存储器

例 2:MOV ES:[SI], AL 指令完成的功能为 : (ES:(SI)) (AL) 若 :ES=4000H, SI=1234H,(AL)=23H 则 :DST 所在单元的物理地址为 : PA=(ES) 16+(SI) =40000H+1234H =41234H 指令执行后 (41234H)=23H.

例 3: 判断下列指令的书写格式是否正确, 正确的说出 SRC 和 DST 的寻址方式, 不正确说出错误原因, 并改正 1 MOV [BX], [SI] 两存储器单元之间不 改正 :MOV AL, [SI] MOV [BX], AL 能直接传送数据 ; 类型也不明确

2 MOV [DI],12H 类型不明确 改正 :MOV WORD PTR [DI], 12H 3 MOV [SI],CX DST 为寄存器间接寻址 DST 为寄存器间接寻址 SRC 为寄存器寻址

3 寄存器相对寻址 Register Relative Addressing 要寻找的操作数在某存储器单元之中, 该单元 的有效地址的一部分在 8 位个 DISP 16 位 BX BP SI DI 中, 另一部分为一 其中,DISP 相对位移量

EA= BX BP SI DI + 8 位 DISP 16 位 DISP 在 DISP 为常数时, 操作数所在单元的段地址以寄存器为准, 若寄存器为 BX SI DI, 操作数默认在 DS 段中 若寄存器为 BP, 操作数默认在 SS 段中 在 DISP 为变量时, 操作数所在单元的段地址以变量为准, 变量在哪个段定义的, 就取该段的段地址

例 1:MOV AX, [BX]+05H 其中,SRC 也可以写成 : [BX+05H] 05H[BX] 05H+[BX] 若 :DS=2000H, BX=0008H, 存放操作数单元的物理地址为 : PA=(DS) 16+(BX)+05H =20000H+0008H+05H =2000DH

+ 2 0 0 0 0 H 0 0 0 8 H 0 0 0 5 H 2 0 0 0 D H 8BH 47H 05H 操作码 CS 段 AX A H A L 2000DH 2000EH 数据段 存储器

例 2:MOV AX, [BP] 若 :SS=1050H, BP=0050H, 存放操作数的存储单元的物理地址为 : PA=(SS) 16+(BP)+00H ( ) =10500H+0050H+00H =10550H

+ 1 0 5 0 0 H 0 0 5 0 H 1 0 5 5 0 H 操作码 相对偏移量 DISP 为 0, 这里特别指出,BP 寄存器无间接寻址, 只不过再相对寻址时,DISP 为 0 A H A L 10550H 10551H SS 段 CS 段 存储器

例 3: 若 (DS)=1500H,TABLE 为在 DS 段定义的一个字变量, 且偏移地址为 0004H,(BX)=0003H MOV AX,TABLE [BX] SRC 的寻址方式为寄存器相对寻址 指令完成的操作为 : (AX) (DS: OFFSET TABLE+(BX))

4 基址变址寻址 Based Indexed Addressing 要寻找的操作数在某存储器单元之中, 该单元 BX 有效地址的一部分在中, 另一部分在 BP 中 BX EA= + BP SI DI SI DI 该单元的段地址以基址寄存器为准, 若基址寄存器为 BX, 则段地址默认在 DS 中, 若基址寄存器为 BP, 则段地址默认在 SS 中

例 1:MOV AX, [BX][SI] (AX) (DS:(BX+SI)) 例 2:MOV AX, [BP][SI] (AX) (SS:(BP+SI)) 例 3:MOV [BP][DI], AL (SS:(BX+DI)) (AL)

3.3 数据寻址方式 5 基址变址且相对寻址 Based Indexed Relative Addressing 它是基址变址寻址的扩充, 操作数仍在存储器中, 存储器单元的有效地址为 : BX SI 8 位 DISP EA= + + BP DI 16 位 DISP 同样, 如果用 BX 作为基地址, 操作数默认在 DS 段中 ; 如果用 BP 作为基地址, 则在 SS 段中 在 DISP 为变量时, 操作数所在单元的段地址以变量为准, 变量在哪个段定义的, 就取该段的段地址

例 1: MOV AX, [BX][DI]04 (AX) (DS:(BX+DI+04H)) 例 2:MOV AX, [BP][DI]04 (AX) (SS:(BP+DI+04H)) 例 3:MOV DS:[BX][DI]+04H, AL (DS:(BX+DI+04H))( (AL)

8. 隐含寻址 Hidden Addressing 有些指令的指令码中不包含指明操作数地址的部分, 而其操作码本身隐含的指明了操作数地址 如 : 乘除法指令 字符串操作类指令等 MOVSB; 字节操作 MOVSB; 字节操作 (ES:DI) (DS:SI),(SI) (SI±1),(DI) (DI±1)

例 1. 若 (BX)=0158H, (DI)=10A5H, (DS)=2100H, DISP=1B57H, (BP)=0100H, (SS)=1100H, 段寄存器按默认段寄存器, 则相对于各种寻址方式的 EA 的求法如下 : 直接寻址 : EA=1B57H PA=21000H+1B57H=22B57H

例 1. 若 (BX)=0158H, (DI)=10A5H, (DS)=2100H, DISP=1B57H, (BP)=0100H, (SS)=1100H, 段寄存器按默认段寄存器, 则相对于各种寻址方式的 EA 的求法如下 : 寄存器间接寻址 ( 设寄存器为 BX): EA=0158H PA=21000H+0158H=21158H

例 1. 若 (BX)=0158H, (DI)=10A5H, (DS)=2100H, DISP=1B57H, (BP)=0100H, (SS)=1100H, 段寄存器按默认段寄存器, 则相对于各种寻址方式的 EA 的求法如下 : 寄存器相对寻址 ( 以 BP 为例 ): EA=0100H+1B57H=1C57H PA=11000H+1C57H =12C57H

例 1. 若 (BX)=0158H, (DI)=10A5H, (DS)=2100H, DISP=1B57H, (BP)=0100H, (SS)=1100H, 段寄存器按默认段寄存器, 则相对于各种寻址方式的 EA 的求法如下 : 基址变址寻址 (BX DI): EA=0158H+10A5H=11FDH PA=21000H+11FDH=221FDH

例 1. 若 (BX)=0158H, (DI)=10A5H, (DS)=2100H, DISP=1B57H, (BP)=0100H, (SS)=1100H, 段寄存器按默认段寄存器, 则相对于各种寻址方式的 EA 的求法如下 : 基址变址相对寻址 (BP DI): EA=0100H+10A5H+1B57H=2CFCH PA=11000H+2CFCH=13CFCH

例 2: 判断下列指令的书写格式是否正确, 正确的说出 SRC 和 DST 的寻址方式, 不正确说出错误原因 MOV AX, [BX][SI] SRC 为基址变址寻址 DST 为寄存器寻址 MOV AX, BL 类型不一致 MOV [BP], [DI+01H] 两存储器单元之间不能直接传送数据 MOV [BX][DI]+02H,12H 类型不明确

3.3 转移地址的寻址方式 寻找的操作数指定的地址, 赋给 IP 或 CS:IP, 从而实现程序的转移 如果程序转移后只有 IP 发生了改变, 则称为段内转移或者称为近程转移 ( 也称为 NEAR 型转移 ) 如果程序转移后 CS IP 均发生了改变, 则称为段间转移或者称为远程转移 ( 也称为 FAR 型转移 )

3.3 转移地址的寻址方式 8086 指令系统中的转移指令有两大类 : 无条件转移指令 : 有 JMP CALL RET IRET 条件转移指令 : 如 JZ JC JCXZ LOOP 等 先介绍无条件转移指令 JMP : JMP OPR 程序转移到由 OPR 指定的位置执行

3.3 转移地址的寻址方式 转移地址的寻址方式有下列 4 种 : 转移地址 寻址方式 直接方式 段内 间接方式 直接方式段间 间接方式 段内寻址表示转移在本段内完成, 段间寻址表示转移在不同段之间完成

3.3 转移地址的寻址方式 段内转移地址的寻址方式 ( 只有 IP 发生改变 ) 1. 段内直接寻址 (Direct addressing within same segment) ( 也叫段内相对寻址 ) 段内直接寻址是指直接在指令中给出转移目的地址 (16 位偏移地址 ), 转移在同一个段内完成 指令中用 JMP < 标号 > 表示, 当然这里的标号与该指令处在同一个段个段 例如 : JMP LABEL ; 程序转移到标号 LABEL 处执行

3.3 转移地址的寻址方式 16 位 DISP XXH -32768??H??H JMP L1 ;JMP NEAR PTR L1 操作码 当前 IP +32767 L1: 间隔的字节数称为相对位移量 DISP 转移目的地的 IP= 当前 (IP)+16 位 DISP

3.3 转移地址的寻址方式 2. 段内间接寻址 (Indirect addressing within same segment) 段内间接寻址是指转移目的地址 (16 位偏移地址 ) 保存在寄存器或存储单元, 转移也在同一个段内完成, 在指令中指出所使用的寄存器或存储单元的偏移地址, 当采用存储单元保存转移地址时, 可以采用以上介绍的 5 种存储器寻址方式 例如 : JMP BX ; 程序转移的目的地址为 BX 的内容 JMP VAR1 ; 程序转移的目的地址为字型变量 VAR1 的内容 JMP VAR1[SI] ; 目的地址保存在存储器, 其有效地址为 (SI)+OFFSET VAR1

3.3 转移地址的寻址方式 例 : 若 (DS)=2000H,(BX)=0100H,(SI)=0002H, (20100H)=1200H,(20102H)=1250H, 则 CPU 执行 : JMP BX 指令后,(IP)=0100H JMP WORD PTR [BX] 指令后,(IP)=1200H JMP WORD PTR [BX][SI] 指令后,(IP)=1250H

3.3 转移地址的寻址方式 段间转移地址的寻址方式 (CS IP 均发生改变 ) 只适合于无条件转移指令 1. 段间直接寻址 Direct addressing between different segments 段间直接寻址是指直接在指令中给出转移目的地址 (16 位偏移地址和 16 位段地址 ), 转移在不同段之间完成 指令中用 JMP < 标号 > 表示, 当然这里的标号与该指令处在不同的段 例如 : JMP LABEL ; 程序转移到标号 LABEL 处执行 (LABEL 不在本段中 )

3.3 转移地址的寻址方式 XXH 操作码 SEG LABEL **H **H OFFSET LABEL????:****H??H??H JMP FAR PTR LABEL ; LABEL: 2 代码段 2 代码段 1

3.3 转移地址的寻址方式 2. 段间间接寻址 Indirect addressing between different segments 段间间接寻址是指转移目的地址 (32 位地址 ) 保存在存储单元中, 转移在不同的段之间完成, 在指令中指出存储单 元的偏移地址, 可以采用以上介绍的 5 种存储器寻址方式 存储单元必须是双字型变量, 第一个字用于存放目的地址的段内偏移地址, 第二个字用于存放目的地址的段地址 例如 : JMP VAR3 JMP VAR1[BX] ; 程序转移的目的地址为双字型变量 VAR3 的内容 ; 目的地址保存在存储器, 其有效 地址为 (BX)+OFFSET VAR1

3.3 转移地址的寻址方式 存放转移地址的首址 低字节 高字节 低字节 高字节 转移 OFFSET IP 转移 SEG 地址 CS 存储器

3.3 转移地址的寻址方式 如 :JMP DWORD PTR [BX][DI] 若 (DS)=3000H,(BX)=1000H,(BX)=1000H (DI)=2000H, 则 : DS: 3 0 0 0 33000H 05H 00H BX: 1 0 0 0 20H IP DI: + 2 0 0 0 00H 3 3 0 0 0 H 80H CS CS: 8 0 0 0 IP: + 2 0 0 0 8 2 0 0 0 H 82000H 目的地址

3.3 转移地址的寻址方式 综上所述, 转移地址的 4 种寻址方式也可以从指令形式加以区分, 即 : 转移地址 寻址方式 段内直接寻址 ( LABEL 在本段内 ) JMP LABEL 段间直接寻址 ( LABEL不在本段 ) JMP REG16 段内间接寻址 段内间接寻址 ( MEM为字型 ) JMP MEM 段间间接寻址 ( MEM为双字型 )

作业 指出第 4 题 (1-10) 第 6 题