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

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

幻灯片 1

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

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

数据库系统概论

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

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

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

untitled

<4D F736F F D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6B0B8C0FDB5BCD1A75FD1F9D5C22E646F63>

数据库系统概论

Microsoft PowerPoint - 微原-第3章2.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 - Ch3-8086CPU指令系统(2)-寻址.pptx

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

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

第4章 80X86指令系统

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

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

Microsoft PowerPoint - os_4.ppt

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

幻灯片 1

数据库系统概论


Microsoft PowerPoint - C15_LECTURE_NOTE_06

Microsoft PowerPoint - C15_LECTURE_NOTE_06

习 题 一

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

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

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

数据库系统概论

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

Ps22Pdf

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

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

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

CH559指令周期.doc

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

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

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

組譯與連結(Ver6

一、填空题

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

PowerPoint Presentation

<4D F736F F D C4EAC6D5CDA8B8DFB5C8D1A7D0A3D5D0C9FAC8ABB9FACDB3D2BBBFBCCAD4CEC4BFC6D7DBBACDCAD4BEEDBCB0B4F0B0B82DD6D8C7ECBEED2E646F63>

1

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

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

DPJJX1.DOC

《微型计算机原理》

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

<4D F736F F F696E74202D D D6B8C1EECFB5CDB DC6E4CBFBD6B8C1EE2E BBCE6C8DDC4A3CABD5D>

微机原理--汇编、连接和调试

<4D F736F F D C4EAB9FABCD2B9ABCEF1D4B1D0D0D5FEC4DCC1A6B2E2D1E9A3A841C0E0A3A92E646F63>

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

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

Microsoft PowerPoint - C15_LECTURE_NOTE_04.ppt

Microsoft PowerPoint - C15_LECTURE_NOTE_04.ppt

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


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

bingdian001.com

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

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

目 录


Microsoft Word - em78 sub program.doc

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

Microsoft PowerPoint - chapter5.ppt

学习MSP430单片机推荐参考书

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

Microsoft Word - Ö¸Á.doc

Ps22Pdf

L15 MIPS Assembly



Microsoft Word - Syllabus of Assembly Programming_new.doc

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

1 TPIS TPIS 2 2

80X86微机原理及接口技术

Microsoft Word - 1 page0.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

untitled

1 CPU

Microsoft Word - 新1-3.doc

Computer Architecture & Organization

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

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

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

(譯本)

渐进中的突变

GSA Media Retention Web File xlsx

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

) E F EF F F = = FE = F = F 5 E O E F O O O O O O O O O EFO E F 6 8cm 3cm 5cm cm 3cm 5cm cm 7 5% x + 3 x =

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

Ch2.1


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

Transcription:

微机原理及应用 主讲 : 谢维成 http://xweicheng.ys168.com scxweicheng@yahoo.com.cn 西华大学电气信息学院 1

第 03 章 80X86 的寻址方式和指令 ( 本章内容 ) 3.1 指令的格式 3.2 8086/8088 的寻址方式 3.3 指令系统 3.3.1 数据传送指令 3.3.2 算术运算指令 3.3.3 逻辑运算与移位指令 3.3.4 串操作指令 3.3.5 控制转移指令 3.3.6 处理器控制指令 2

寻址方式回顾 1 立即寻址:MOV AX,235AH 2 寄存器寻址:MOV AX,BX 3 存储器操作数寻址方式 (1) 直接寻址 :MOV AX,[235AH] (2) 寄存器间接寻址 :MOV AX,[BX] (3) 基地址寻址 :MOV AL,[BP]; MOV AX,[BX] (4) 变地址寻址 :MOV AX,[DI];MOV AX,[SI] (5) 相对寄存器寻址 :MOV AX,[BX+02H] (6) 基地址变地址寻址 :MOV AX,[BX+SI] (7) 相对基地址变地址寻址 :MOV AX,[BX+SI+2000H] 3

3.3 指令系统 Intel 8086/8088 指令系统共有 117 条基本指令, 可分成以下 6 类 : 1 数据传送类指令 2 算术运算类指令 3 位操作类指令 ( 逻辑运算与移位指令 ) 4 串操作类指令 5 控制转移类指令 6 处理机控制类指令 4

3.3.1 数据传送指令 (P90) 用来实现 : 寄 寄,CPU 存,CPU I/O 之间的数据传送 这是一种最基本 最重要的操作 这类指令又可分为如下四种 : 1 通用传送 2 累加器专用传送 3 地址传送 4 标志传送 5

6 1 通用数据传送指令 MOV (P90) 格式为 : MOV DST,SRC; DST SRC 传送的是字节还是字取决于指令中涉及的寄存 器是 8 位还是 16 位 具体来说可实现 : 1 MOV MEM/REG1,MEM/REG2 式中两操作数中至少有一个为寄存器 例 :MOV CL,DL MOV AX,BX MOV [SI],CX MOV CL,[BX+5]

2MOV REG,DATA ; 立即数送寄存器 3MOV MEM/REG,DATA 4MOV AC,MEM ; 存储单元送累加器 5MOV MEM,AC ; 累加器送存储单元 6MOV SEGREG,MEM/REG ; 段寄 7MOV MEM/REG,SEGREG ; 存 / 寄 存 / 寄 段寄 7

MOV 指令的寻址方式 8 例 :MOV DST,SRC ; 目的源操作数放在什么地方? MOV DST,SRC R, R MOV AX,BX MOV CS,DS R, M MOV AX,[BX] M, R MOV [BX],AL R, im MOV AX,2A3BH M, im MOV [BX],12H im, R im, M M, M

几个 MOV 不能送的解决办法 : 几个不能送的解决办法 : MOV AL,MEM1 ; 通过寄存器 AL 作桥梁 MOV MEM2,AL ; 用来解决存 存 MOV AX,DS ; 通过 AX 解决 : MOV ES,AX ; 段寄 段寄 MOV AX,DATA ; 通过 AX 解决 : MOV DS,AX ; 段寄 立即数 9

举例 : 举例 : 将 1000H 开始的 100 个存储单元送上 ASCII 码 2AH(*) 程序段如下 : MOV DI,1000H MOV CX,64H MOV AL,2AH AGAIN:MOV [DI],AL INC DI DEC CX JNZ AGAIN INT 20H ; 若 CX=0, 返回 DOS 10

11 DEBUG 下调试 上程序段存放在码段中, 設 CS=109EH, 则各条指令存放地址如下 : CS : IP 109E:0100 MOV DI,1000H 109E:0103 MOV CX,64H 109E:0106 MOV AL,2AH 109E:0108 MOV [DI],AL 109E:010A INC DI 109E:010B DEC CX 109E:010C JNZ 0108 109E:010E INT 20H 109E:0110

12 DEBUG 下调试 ( 结果 ) 送上 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 00 00 00 00 00 00 00 00 00 00 00 00 ****

CS:IP 存放指令 SS:SP 堆栈操作 DS+16 位偏移量存放操作数 ES+16 位偏移量存放操作数 一条指令包含两个部分 : 一部分是指令操作码, 另一部分是操作数字段 前者指出执行什么样操作, 后者指出操作数放在什么地方? 结果送至何处? 13

2 交换指令 XCHG(P91) 格式为 :XCHG REG/MEM,MEM/REG 功能 : REG/MEM MEM/REG 要求两操作数中必须有一个在寄存器中, 不允许使用段寄存器 举例 :XCHG AX,BX XCHG [2000],CL 14

3 堆栈操作指令 (PUSH/POP) (P94) 堆栈 : 在内存中开辟若干单元作为栈区, 按 后进先出 方式工作 为什么要设置堆栈? 为什么要按 后进先出 方式工作? 15

16 子程序调用实例 main MOV AX,BX IP PUSH POP Main program subroutine CODE SEGMENT ADD AX,BX CALL SUB MOV CX,BX SUB

子程序调用示意图 17 主程序 继续执行 IP 主程序 转子程序 压栈 弹出 返回主程序 (a) 执行子程序 主程序 IP IP( 下 ) 继续执行 主程序 转子程序 1 压栈 IP IP ( 下 ) 弹出 返回主程序 (b) 执行子程序 1 转子程序 2 返回子程序 1 继续执行 (a) 主程序调子程序 ;(b) 子程序嵌套示意图 子程序 1 执行子程序 2

18 PUSH (P95) 堆栈规定设置在堆栈段 SS 内, 堆栈指针 SP 始终指向堆栈的顶部,SP 的初值规定了所用堆栈区的大小 堆栈的最高地址叫栈底 1 压栈指令 PUSH SRC 功能 : [SP-1][SP-2] SRC(R) SP SP-2 例 :PUSH AX ; 将 AX 内容压栈 执行操作 :[SP-1] 高字节 AH [SP-2] 低字节 AL SP SP-2

PUSH AX 指令执行示意图 设 AX =1020H, 执行示意图 存储区 存储区 (SS 段 ) 低地址 (SS 段 ) 低地址 SP-2 SP 20 AL SP-1 10 AH SP 进栈方向 执行前 执行后 19 AX =1020

PUSH/POP (P96) 20 压栈指令的格式为 : PUSH REG PUSH MEM/REG PUSH SEGREG 2 弹出指令 POP 功能 : DST (R) [SP+1][SP] SP SP+2 例 :POP BX ; 将栈顶内容弹至 BX 执行操作 :BL [SP] BH [SP+1] SP SP+2

POP BX 指令执行示意图 存储区 存储区 (SS 段 ) 低地址 (SS 段 ) 低地址 SP 20 20 SP+1 10 10 SP+2 SP 出栈方向 21 执行前 执行后 BX=1020

22 执行如下程序 AX BX CX=? MOV AX,5C9BH MOV BX,7823H MOV CX,4512H PUSH AX PUSH BX PUSH CX POP AX POP BX POP CX SP.. 5C 9B 78 23 45 12..

PUSH/POP 注意点 POP 指令的格式同 PUSH 指令, 堆栈指令使用时应注意两点 : 1 堆栈操作总是按字进行 2 不能从栈顶弹出一个字给 CS 23

4 地址传送指令 (P92) 共有三条, 我们只介绍 LEA 指令 : 格式 :LEA REG,MEM ; 功能 : REG offset MEM; 取 MEM 的偏移地址 将指定存储器的 16 位偏移地址送指定寄存器. 指令要求源操作数必须是一个内存操作数, 目的操作数必须是一个 16 位的通用寄存器 24

例 :LEA BX,[SI+10H] 设 :SI=1000H 则执行该指令后,BX=1010H 注意以下两条指令差别 : LEA BX,BUFFER 和 MOV BX,BUFFER 前者表示将符号地址为 BUFFER 的存储单 元的偏侈地址取到 BX 中 ; 后者表示将 BUFFER 存储单元中的内容取到 BX 中 常用 :LEA SI,FIRSTNUM; 取变量的偏侈地址 25

OFFSET 下面两条指令等效 : LEA BX,BUFFER 和 MOV BX, OFFSET BUFFER 其中 OFFSET BUFFER 表示 BUFFER 的偏移地址 格式 :LDS REG,MEM ; 功能 : REG [MEM+1,MEM]; 取 MEM 的前两字节 DS [MEM+3,MEM+2]; 取 MEM 的 3 4 字节 26

LDS SI,1000H[BX][SI] LDS SI,1000H[BX][SI] DS: 20000H BX: 1500H SI: 0100H 1000H 22603H 22602H 22601H 66 57 34 22600H 22600H 12 SI: 3412H DS: 6657H 27

5 标志传送指令 ( 共四条 )(P98) (1) 读标志指令 LAHF (P98) 本指令把标志寄存器低 8 位中的 5 个标志位传送到 AH 中的指定位, 如下图所示 : FLAG AH D7 D 6 D 5 D D 3 D D 4 2 1 D0 OF DF IF TF SF ZF AF PF CF LAHF 指令的功能 28

SAHF (2) 设置标志指令 SAHF SAHF 的功能与 LAHF 的功能正好相反, 如图示 D7 D 6 D 5 D D 3 D D 4 2 1 D0 FLAG AH OF DF IF TF SF ZF AF PF CF SAHF 指令的功能 29

30 PUSHF/POPF (3) 把标志寄存器推入栈顶指令 PUSHF 执行的操作 : [SP-1] 标志寄存器高 8 位 [SP-2] 标志寄存器低 8 位 SP SP-2 (4) 从栈顶弹出标志寄存器指令 POPF 执行的操作 : 标志寄存器低 8 位 [SP] 标志寄存器高 8 位 [SP+1] SP SP+2 注 :PUSHF 和 POPF 指令用于保护和恢复标志寄存器内容

31 PUSH/POP/PUSHF/POPF 典型用法 例如 : PUSH AX PUSH CX PUSHF. ; 程序要用到 AX,CX 以及标志位,. ; 执行时可能改变 POPF ; 恢复时, 后入栈先弹出 POP CX POP AX 对标志位的影响, 除 SAHF 和 POPF 这两条指令外, 其余 所有指令均不影响标志位

5 I/O 指令 IN/OUT (p98) 两种 I/O 端口寻址方式 A. I/O 直接寻址方式 (I/O 地址 8-bit, 256 ports) IN AL,40H AL [Port 40H] OUT 60h,AX [p61h+1][p60h] AX B. I/O 间接寻址方式 (I/O 地址 16-bit, 64K ports), I/O 地址必须保存在 DX 中 MOV DX,04A0H IN AX,DX OUT DX,AL AX [DX+1][DX] [DX] AL 32

6 查表转换指令 (p91) 指令格式 ;XLAT 功能 :AL [BX+AL] 又叫换码指令, 它可根据表中代码的序号查出表中对应代码的内容 执行时先将表的首地址 ( 偏移地址 ) 送到 BX 中, 代码序号存于 AL 中 例如 : 内存数据段有一张 16 进制数的 ASCII 码表, 设首地址为 2000H, 下图所示, 如欲查出表中第 11 个代码 ( 代码序号从 0 开始 ) 即 B 的 ASCII 码,( 表中地址设 DS=4000H) 33

XLAT 指令举例 42000H+0 十六进制数 ASCII 码表 42000H+11 存储器 30 31 32... 39 41 42... 0 1 2 9 A B 34 45 46... E F

XLAT 指令举例 则可用如下几条指令实现 : MOV BX,2000H ;BX 表首地址 MOV AL,0BH ;AL 序号 XLAT ; 查表转换执行后得到 :AL=42H 35

小结 3.3.1 数据传送指令 MOV;PUSH/POP;XCHG IN/OUT;XLAT LEA;LDS/LES/LSS LAHF;SAHF;PUSHF;POPF XLAT 36

37 参考文献 本课件根据本校教学大纲, 参考教材, 参考了国内多个大学的 微机原理及应用 课程的课件, 主要参考文献如下 : 1 钱晓捷, 郑州大学, 微机原理及应用 课件 2 陈涛, 河南工业大学, 微机原理及接口技术 ( 授课 80+ 实验 24) 课件 3 杨景常, 西华大学, 微机原理及应用 ( 授课 42+ 实验 10) 课件 4 作者不详, 计算机硬件技术 课件 5 姚燕南, 薛钧义主编, 微型计算机原理与接口技术, 高等教育出版社, 2004.11 6 Barry B.Brey, Intel 微处理器 - 从 8086 到 Pentium 系列体系结构 编程与接口技术 ( 第 5 版英文影印版 ), 高等教育出版社 7 周明德, 微型计算机系统原理及应用,( 第四版上册 ), 清华大学出版社, 2004.8