指令系统.ppt_第1页
指令系统.ppt_第2页
指令系统.ppt_第3页
指令系统.ppt_第4页
指令系统.ppt_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二章指令系统,本章主要内容,寻址方式 8086/8088指令系统,学习网站:,指令与指令系统,指令:控制计算机完成指定操作的命令 汇编指令:助记符形式的指令 例如: ADD AX, 1000H 机器指令:指令的二进制代码形式 例如: 05 00 10 指令系统:CPU所有指令及其使用规则的集合,指令的基本构成,示例:ADD AX, 1000H 对应机器指令:05 00 10,05为操作码,表示要执行“与累加器相加”操作, 00 10为操作数,是低位开始存放的操作数1000H,示例,借助系统自带的debug工具,明确机器码的概念,寻址方式,指令由操作码和操作数构成。 操作码在指令中已经显式给出

2、; 如何寻找操作数?,寻址方式,寻址方式是CPU指令中规定的寻找操作数所在地址的方式。,逻辑地址(回顾),程序设计时,使用的是逻辑地址。逻辑地址由“段基址”和“偏移量”构成(均为16位)。 表示方法:段基址:偏移量 “段基址”由段寄存器CS、DS、SS和ES提供 “偏移量”由BX、BP、IP、SP、SI、DI或根据寻址方式计算出的有效地址EA(Effective Address)提供,由逻辑地址获得物理地址的计算公式(回顾),物理地址段基址16偏移量,15 0,3 0,19 0,15 0,0000,段基址,偏移量,物理地址,逻辑地址,物理地址,寻址方式的种类,1、立即寻址(Immediate

3、Addressing) MOV AL, 100; MOV CX, 2000H; 2、寄存器寻址(Register Addressing) MOV DS, AX; MOVCX,BX; MOVSI,DX 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)SI、DI 索引源变址寄存器SI 目标变址寄存器DI

4、 EA=SI/DI+位移量 MOV AX,SI+6; MOV DL,TABLESI 6、基址寻址(Based Addressing) BX、BP MOV AL,BX+100; MOV DX,TABLEBP,基址寻址与变址寻址类似,不同之处在于: 变址寻址中的寄存器是 SI、DI 基址寻址中的寄存器是BX、BP,寻址方式的种类,7、基址-变址寻址(Based Indexed Addressing) EA=BX/BP+SI/DI+COUNT MOV AL,COUNT BXSI MOV DX,BP+DI+COUNT,下面,进行这几种寻址方式的动画演示,立即寻址,MOV AX,0102H,AX,AH,

5、AL,高地址,低地址,存储器,操作码,MOV AX,0102H,01,02,B8,立即数,立即数,01,02,寄存器寻址,MOV AX,AX,AH,AL,BX,BH,BL,MOV AX,BX,BX,12,12,34,12,34,寄存器间接寻址,MOV AX,AX,AH AL,16921H,操作码,高地址,低地址,2000H,BX,BX,90,78,07,8B,DS 1492,H,0,16920H,物理地址,操作数,90,78,DS=1492H,变址寻址 (BX,SI,3000) 允许: RR/M,I(直接数)R/M; R/MSR(段寄存器) 禁止: MM;ISR; SRSR,举例, R/M/S

6、R R 通用寄存器/存储器/段寄存器通用寄存器 MOV AL , BL MOV BX , AL MOV DS , AX R/SR M 通用寄存器/段寄存器 存储器 MOV AL , BX MOV DS , BX+SI R/M SR 通用寄存器/存储器 段寄存器 MOV BX , CS MOV BX , DS R/M I 通用寄存器/存储器 立即数 MOV Al , 9 MOV BX , OFFSET buffer MOV BYTE PTR value , 0 MOV WORD PTR BX , 1,例题,例:编程将CL寄存器的内容传送到200:100H单元中,MOV 200:100H , CL

7、,通用数据传送(GP transfer),堆栈操作指令 PUSH (Push word onto stack) POP(Pop word off stack) 什么是堆栈,为什么需要堆栈? 堆栈是按照先进后出原则组织的一段内存区域, 通常用于存放一些重要数据, 如:程序的地址、或是需要恢复的数据。 为方便数据的存放和恢复, 设置专门的指针,指向堆栈中要操作的单元。 段值由 SS 给出,偏移地址由 SP 给出 SS 堆栈段寄存器 (stack segment) SP 堆栈指针寄存器 (stack point),SS:SP,通用数据传送(GP transfer),PUSH SRC (SP)(SP)

8、- 2;(SP)+1,(SP)(SRC); POP DST (DST)(SP)+1,(SP); (SP)(SP)+2; SRC/DST 可以为 R/M/SR (但DST不可为CS) SP只能为偶数! 用途 临时保存数据(INT断点/CALL返回地址/数据) 传递信息(函数/子程序),通用数据传送(GP transfer),特点与规则 操作 按字(2字节)进行 PUSH指令 从高地址低地址增长, POP相反 操作规则 FILO (First-In-Last-Out) SP 为当前栈顶指针(EA) 使用过程 / 关键 1. 堆栈平衡,防止溢出 2. PUSH、POP配对使用,示例 - PUSH A

9、X,存放CPU寄存器或存储器中暂时不使用的数据,使用数据时将其弹出: PUSH AX; 将(AX)入栈,(AX),(AX),示例 PUSH AX,若执行前: (SS)= 2000H (SP)= 1002H (SS:SP)= 2010H (AX)= 1234H,10,低 高,20,地址,SS:SP 2000:1002,指令执行前,则执行PUSH AX后: (SS)= 2000H (SP)= 1000H (SS:SP)= 1234H (AX)= 1234H,12,34,10,低 高,20,地址,指令执行后,不变 减2 变 不变,SS:SP 2000:1000,示例 POP BX,使用数据时将其弹出

10、:POP BX,示例 POP BX,若执行前: (SS)= 2000H (SP)= 1000H (SS:SP)= 1234H (BX)= 5678H,则执行POP BX后: (SS)= 2000H (SP)= 1002H (SS:SP)= 2010H (BX)= 1234H,不变 加2 变 变,12,34,10,低 高,20,地址,指令执行前,SS:SP 2000:1000,10,低 高,20,地址,SS:SP 2000:1002,指令执行后,(BX)= 5678H,12,34,(BX)= 1234H,调用子程序(或过程)或发生中断时要保护断点的地址, 子程序或中断返回时恢复断点。,子程序嵌套

11、,断点地址压入和弹出情况,程序嵌套调用,通用数据传送(GP transfer),XCHG dest,src ; (dest) (src) 交换操作数。可进行字或字节操作,不影响标志位。 支持RR/M; 禁止MM 例:XCHG AL, AH XCHG AX, BX 例 XCHG AX, BX 字操作 执行前(AX)= 1122H , (BX)= 3344H 执行后(AX)= 3344H , (BX)= 1122H 例 XCHG AH, BL 字节操作 执行前(AX)= 1122H , (BX)= 3344H 执行后(AX)= 4422H , (BX)= 3311H,通用数据传送(GP trans

12、fer),XLAT src_table 字节转换指令(换码指令) 该指令不影响标志位 格式: XLAT str_table; 实现:(AL)(BX )+(AL) 运行前BX须赋值,例: MOV BX, OFFSET src_table ; (BX) 表首址 MOV AX, SEG src_table ;(AL) 序号 XLAT Hex_table ;查表转换 (详见书P69 例2.4),I/O端口(Port)传送指令,输入输出指令共两种: IN (Input byte or word) OUT (Output byte or word) 输入指令用于CPU从外设端口接受数据, 输出指令用于CP

13、U向外设端口发送数据。 无论接受还是发送数据,必须通过累加器AX(字)或AL(字节) 使用AX,则输入(输出)字;使用AL,则输入(输出)字节。 输入、输出指令不影响标志位。 当端口地址为16位二进制数时,外部设备最多有65536个I/O端口,由A0A15译码形成。,I/O端口(Port)传送指令,每个外设要占几个端口:数据口,状态口和控制口;信息交换要通过端口。端口是CPU和外设的桥梁。,CPU,IO接口,I/O设备,译 码,数据端口,状态端口,控制端口,总线,I/O端口(Port)传送指令,访问方式 直接: 端口号中前256个端口(0FFH),可以直接写在指令中,端口号代替指令中的PORT

14、 INAL/AX, portNo;8位立即数portNo:0255 OUTportNo , AL/AX; 间接: 当端口号256时,必须先把端口号放到DX寄存器中。 INAL/AX,DX; DX:064K(0FFFFH) OUT DX,AL/AX;,I/O端口(Port)传送指令,例1:实现将(AL) (05H) OUT 05H,AL;(05H)(AL) 例2:实现(29H)(28H)(DATA_WORD) IN AX,28H MOV DATA_WORD,AX 例3:PC串口读写示例 MOV DX, 3F8H IN AL, DX ;PC读COM1 (接收) OUT DX, AL ;发送,目标地

15、址传送指令 LEA,LEA reg16, mem16 取有效地址,近地址指针(段内) reg16 例:LEA DX, BETABXSI 当BX=0400H, SI=003CH, BETA=0F62H 执行后,DX=139EH 比较: LEA AX,BUFFER MOV AX, BUFFER MOV AX, OFFSET BUFFER,目标地址传送指令 LDS、LES,LDS reg16, mem32 mem32存放FAR Pointer数据 (4bytes)DS:reg16 (mem32) reg16, (mem32+2) DS 例:LDS SI, 0010H DS:0010H SI, DS:0012H DS LES reg16,mem32 mem32存放FAR Pointer数据 (4bytes)ES:reg16,标志传送指令 Flag Register Transfer,LAHF (Load AH from

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论