微机系统与接口第三讲1指令系统_第1页
微机系统与接口第三讲1指令系统_第2页
微机系统与接口第三讲1指令系统_第3页
微机系统与接口第三讲1指令系统_第4页
微机系统与接口第三讲1指令系统_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

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

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

3、e Addressing)MOV AL, 100; MOV CX, 2000H; 2、寄存器寻址(Register Addressing)MOV DS, AX; MOVCX,BX;MOVSI,DX3、直接寻址(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 EA=SI/

4、DI+位移量 MOV AX,SI+6;MOV DL,TABLESI6、基址寻址(Based Addressing) BX、BPMOV AL,BX+100;MOV DX,TABLEBP 基址寻址与变址寻址类似,不同之处在于: 变址寻址中的寄存器是 SI、DI 基址寻址中的寄存器是BX、BP寻址方式的种类7、基址-变址寻址(Based Indexed Addressing)EA=BX/BP+SI/DI+COUNTMOV AL,COUNT BXSIMOV DX,BP+DI+COUNT下面,进行这几种寻址方式的动画演示立即寻址MOV AX,0102HAXAHAL高地址低地址存储器操作码MOV AX,0

5、102H0102B8立即数立即数0102寄存器寻址MOV AX,AXAHALBXBHBLMOV AX,BXBX1212341234寄存器间接寻址 MOV AX, AX AH AL16921H 操作码 高地址 低地址 2000HBXBX9078078BDS 1492H016920H物理地址 操作数 9078DS=1492H 变址寻址 & 基址寻址MOV AX, 存储器高地址16927H16926H7890低地址 8B44 操作码AX AH AL2000HSIDS 1492H016926H物理地址 SI+06H操作数 9078060006H06基址-变址寻址MOV AX, BXSI+06H1000

6、HBX1000HSIDS 1492H016926H物理地址 高地址 9078064116927H 操作码 低地址 操作数 90788B0006H06 AH ALAX8086/8088CPU的功能框图(回顾)AH ALBH BLCH CLDH DLSPBPDISI通 用 寄 存 器AXBXCXDXALU数据总线(16位)运算寄存器ALU标志寄存器EU 控制系统执行单元EUCSDSSSESIP内部暂存器1 2 3 4 5 6数据总线8088:8位8086:16位总线 控制逻辑地址总线20位指令队列80888086Q总线(8位)指令指针段寄存器总线接口单元BIU外部总线寄存器(回顾)AHSIALBH

7、BLCHCLDHDLDIBPSPDSESSSCSIPPSWAX,累加器AccumulatorBX,基数寄存器BaseCX,计数寄存器CountDX,数据寄存器Data源变址寄存器Source Index目的变址寄存器Destination Index基址指针寄存器Base Point堆栈指针寄存器Stack Point数据段寄存器Data Segment附加段寄存器Extra Segment堆栈段寄存器Stack Segment代码段寄存器Code Segment指令指针寄存器Instruction Pointer状态标志寄存器Processor Status Word数据寄存器变址寄存器指针

8、寄存器通用寄存器段寄存器控制寄存器指令系统的分类类型说明举例数据传送通用/ IO 目标地址传送/标志传送 MOV、OUT LEA 、PUSHF算术运算整型数据处理ADD、 MUL 逻辑指令逻辑数据处理AND、 SHL串处理字符型数据处理MOVS、REP控制转移程序流控制处理JMP、LOOP CALL、 INT处理器控制系统控制管理CLS、 HLT指令中操作数的表示符号表示内容I立即数操作数R通用寄存器操作数8位 AH、AL、BH、BL、CH、CL、DH、DL16位 AX,BX,CX,DX,BP,SP,SI,DISR段寄存器 CS、DS、SS、ESM或 存储器操作数src源操作数dst目的操作数

9、()注释时表示寄存器、存储器、端口的内容oprd1 oprd2两操作数书写指令注意事项不区分字母的大小写下列写法表示同一条指令:MOV AX, 1ABDH mov ax, 1abdh不添加指令系统没有的指令将 MOV AL , 0 写成MOVE AL,0 JMP Label 写成JUMP Label注意操作数的范围对字节操作指令 0 FFH 0 255 对字操作指令 0 FFFFH 0 65535 书写指令注意事项对无操作数指令,不添加操作数STC AL 对单操作数指令,操作数不能是立即数IMUL 6 对双操作数指令 不能两个同为存储器操作数MOV DI , SI 目的操作数不能是立即数ADD

10、 3 , AL 两个操作数的类型应相同SUB AX , BL 若 value 定义为字类型存储器变量: MOV CL, value 书写指令注意事项 内存操作数的属性应明确MOV BX ,0MOV byte ptr BX , 0MOV word ptr BX , 0MOV BX , ALMOV BX , AX书写指令注意事项 A、B、C、D、E、F开头的十六进制数前面加0,与H结尾的标识符区别如 寄存器名: AH、BH、CH、DH 变量名 : abcdH 等例:mov AL, 0AHmov AL, AH mov BX, 0abcdH上面,0AH是立即数,AH是寄存器。数据传送地址总线 AB存储

11、器I/O接口输入设备I/O接口数据总线 DB控制总线 CB输出设备CPU寄存器,存储器,I/O端口数据传送按传送内容,可分为四类:1.通用数据传送 MOV PUSH POP XCHG2.累加器专用传送 IN OUT XLAT 3.地址传送 LEA LDS LES标志传送 PUSHF POPF LAHF SAHF 特点:1. 除POPF、SAHF外,其他传送指令对标志位均无影响2. 唯一允许以段寄存器做操作数的指令种类; 且只有MOV、PUSH、POP这三条允许通用数据传送(GP transfer)MOV BYTE/WORD数据传送;可以使用各种寻址方式; MOV DST,SRC 执行:(dst

12、) (src) MOV AX,80A0H ; (BX,SI,3000)允许:RR/M,I(直接数)R/M;R/MSR(段寄存器)禁止:MM;ISR;SRSR举例 R/M/SR 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 , 9MOV BX , OFFSET bufferMOV BYTE PT

13、R value , 0 MOV WORD PTR BX , 1例题例:编程将CL寄存器的内容传送到200:100H单元中 MOV AX, 200H MOV DS , AX ; (DS) = 200H MOV 100H , CL ;(02100H) = (CL)编程1: MOV AX, 200H MOV DS , AX ; (DS) = 200H MOV DI , 100H ; (DI) = 100H MOV DI , CL ;(02100H) = (CL)编程2: MOV 200:100H , CL通用数据传送(GP transfer)堆栈操作指令PUSH (Push word onto st

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

15、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 AX存放CPU寄存器或存储器中暂时不使用的数据,使用数据时将其弹出: PUSH AX; 将(AX)入栈(AX)(AX) 低地址. 高地址.1122

16、(SP)-2(SP)-1(SP)堆栈段PUSH AX前 低地址.22H11H 高地址.11H22H(SP)(SP)+1(SP)+2堆栈段PUSH AX后示例 PUSH AX若执行前: (SS)= 2000H(SP)= 1002H(SS:SP)= 2010H (AX)= 1234H10低高20地址SS:SP2000:1002指令执行前则执行PUSH AX后: (SS)= 2000H(SP)= 1000H(SS:SP)= 1234H(AX)= 1234H123410低高20地址指令执行后不变 减2 变不变 SS:SP2000:1000示例 POP BX使用数据时将其弹出:POP BX 低地址.22

17、H11H 高地址.33H44HBX(SP)(SP)+1(SP)+2堆栈段POP BX前 低地址.22H11H 高地址.11H22HBX(SP)-2(SP)-1(SP)堆栈段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 变 变 123410低高20地址指令执行前SS:SP2000:100010低高20地址SS:SP2000:1002指令执行后(BX)= 5678H123

18、4(BX)= 1234H 调用子程序(或过程)或发生中断时要保护断点的地址, 子程序或中断返回时恢复断点。子程序嵌套断点地址压入和弹出情况程序嵌套调用 低地址.断点2(L)断点2(H)断点1(L)断点1(H) 高地址.(SP)先压入后压入先弹出后弹出堆栈段通用数据传送(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 ,

19、 (BX)= 1122H 例 XCHG AH, BL 字节操作 执行前(AX)= 1122H , (BX)= 3344H 执行后(AX)= 4422H , (BX)= 3311H通用数据传送(GP transfer)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)

20、传送指令输入输出指令共两种:IN (Input byte or word)OUT (Output byte or word) 输入指令用于CPU从外设端口接受数据, 输出指令用于CPU向外设端口发送数据。无论接受还是发送数据,必须通过累加器AX(字)或AL(字节)使用AX,则输入(输出)字;使用AL,则输入(输出)字节。输入、输出指令不影响标志位。当端口地址为16位二进制数时,外部设备最多有65536个I/O端口,由A0A15译码形成。I/O端口(Port)传送指令每个外设要占几个端口:数据口,状态口和控制口;信息交换要通过端口。端口是CPU和外设的桥梁。CPUIO接口I/O设备译码数据端口状

21、态端口控制端口总线I/O端口(Port)传送指令访问方式直接:端口号中前256个端口(0FFH),可以直接写在指令中,端口号代替指令中的PORTINAL/AX, portNo;8位立即数portNo:0255OUTportNo , 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:P

温馨提示

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

评论

0/150

提交评论