洪第3章寻址方式与指令系统

上传人:j****9 文档编号:54449848 上传时间:2018-09-13 格式:PPT 页数:93 大小:759KB
返回 下载 相关 举报
洪第3章寻址方式与指令系统_第1页
第1页 / 共93页
洪第3章寻址方式与指令系统_第2页
第2页 / 共93页
洪第3章寻址方式与指令系统_第3页
第3页 / 共93页
洪第3章寻址方式与指令系统_第4页
第4页 / 共93页
洪第3章寻址方式与指令系统_第5页
第5页 / 共93页
点击查看更多>>
资源描述

《洪第3章寻址方式与指令系统》由会员分享,可在线阅读,更多相关《洪第3章寻址方式与指令系统(93页珍藏版)》请在金锄头文库上搜索。

1、第3章 寻址方式和指令系统,用来指挥和控制计算机完成指定操作的命令称为指令。不同的微处理器具有各自不同的指令。 每种微处理器能够识别和执行的所有指令的集合称为该微处理器的指令系统。 程序:是由一系列有序指令组成的有序集合 指令通常是用英文助记符来表示,3.1 指令格式与寻址方式,3.1.1指令格式:标号:操作码 操作数操作数;注释操作码规定计算机所执行的操作,; 操作数用来描述该指令的操作对象,为参加操作的数据或其存放的地址。根据完成的命令和程序设计要求的不同,可以缺省除操作码以外的其余三项,但必须由操作码才能组成不同功能的指令。,3.1.2 寻址方式,所谓寻址方式,就是寻找操作数或操作数地址

2、的方式。与数据有关的寻址方式有: 立即数寻址 : MOV AX,2004H 寄存器寻址: MOV AX,BX 直接寻址: MOV AX,2004H 寄存器间接寻址:MOV AX,BX 寄存器相对寻址:MOV AX,BX+204H 基址变址寻址: MOV AX,BX+SI 基址变址相对寻址:MOV AX,20BP+DI,1) 立即数寻址,立即数(操作数)直接包含在指令中,作为指令的一部分存放在代码段中。以下均源操作数为例。 例3-1 MOV AX,2004H ;(AH)=20H,(AL)=04H MOV BL, 5AH ;(BL)=5AH MOV EAX,22334455H ;(EAX)=223

3、34455H, (AX)=4455H 立即数常用于给寄存器赋初值,只能作源操作数,不能作目的操作数,2) 寄存器寻址,操作数存放在指令指定的8位、16位或32位通用寄存器中。 例3-2 寄存器寻址 MOV AL,BL ; 将BL中的内容送入AL中,BL中的内容保持不变 MOV SI,DI ;将DI中的内容送入SI中,DI中的内容保持不变 MOV EAX,EBX ;将EBX中的内容送入EAX,3 )直接寻址,指的是操作数在存储器中的有效地址EA内,书写时有效地址加上中括号 例3-3 存储器直接寻址 MOV AX,1000H ;将DS段的1000H和1001H 两个单元的内容送入AX寄存器中 MO

4、V EAX,ES:2000H ;将ES段的2000H2003H四个单元的内容送入EAX寄存中,其中ES为段超越前缀 MOV AX,BUF ;将DS段内以有效地址BUF (符号地址)起始的两个单元的内容送入AX中,4) 寄存器间接寻址,操作数的有效地址EA放在基址寄存器BX,BP,或变址寄存器SI,DI中。 操作数的物理地址为: (DS)16(SI/DI/BX)或(SS)16(BP) 例3-4 假定(DS)2000H,(SI)=3600H, (23600H)=6022H MOV AX,SI ;先将DS中的值左移4位,然后与SI中的值相加,则物理地址是23600H,再将该物理地址中的数据6022H

5、送入AX寄存器中 例3-5 假定(SS)=3000H,(BP)=1100H,(31100H)=5E28H MOV BX,BP 例3-6 偏移量为32位时的寄存器间接寻址 MOV EAX,DX,5)寄存器相对寻址,操作数的有效地址是一个基址寄存器或变址寄存器中存放的数据加上指令给出的8位或16位偏移量,其物理地址为: (DS)16(SI/DI/BX)8位或16位偏移量或 (SS)16(BP)8位或16 位偏移量 例3-7 假定(DS)=2000H,(SS)=3000H,(SI)=3600H,(BP)=1100H,COUNT=10H,(23620H)=8A76H,(31110H)=4567H MO

6、V AX ,SI+20H MOV BX ,BP+COUNT;该指令书写有下面的等效形式: MOV BX,BP+COUNTMOV BX,COUNTBP,6) 基址变址寻址,操作数的有效地址只能是一个基址寄存器和一个变址寄存器的内容之和。其物理地址为: (DS)16(BX)(SI/DI) 或(SS)16+(BP)+(SI/DI) 例3-9,假定(DS)=2000H,(SS)3000H,(BX)=1800H,(BP)=2080H ,(DI)=1000H,(SI)=0800H, (22800H)=80CFH,(32880H)=067AHMOV AX,BXDI MOV AX,BP+SI,7) 基址变址相

7、对寻址,操作数的有效地址是一个基址寄存器内容和一个变址寄存器的内容和8位或16位偏移量相加之加,其物理地址为: (DS)16(BX)+(SI/DI)+8位或16位偏移量 (SS)16(BP)+(SI/DI)+8位或16位偏移量 例3-10基址变址相对寻址 MOV AX, BX+SI+100H MOV CX,BX+SI+NUM MOV DX,SS: NUMDIBP 例3-11 32位偏移量的寄存器比例寻址 MOV EAX,DAT EBX+ESI MOV EAX,NUM EBP+EDI,8) 寄存器(变址)比例寻址,这种寻址方式中,形成存储器操作数的有效地址采用: (1)变址寄存器的内容乘以比例因

8、子,再加上偏移量,称为比例变址方式 (2)变址寄存器的内容乘以比例因子,再加上基址寄存器的内容,称为基址比例变址方式。 (3)变址寄存器的内容乘以比例因子,再加上基址寄存器的内容和偏移量,称为基址比例变址偏移方式。 MOV EAX,XEDI*4 MOV EBX,EDI*8EBX ;EA=(EDI)*8+(EBX) MOV EAX,XESI*4EBP ;=(ESI)*4+(EBP)+X,3.2 8086指令系统,8086指令系统是80x86的基本指令集,共有95条指令,按功能可以分为六种类型: 数据传送指令 算术运算指令 逻辑运算与移位指令 串操作指令 控制转移指令 处理器控制指令,3.2.1

9、数据传送指令,数据传送指令用于寄存器,存储单元和输入输出端口之间传送数据或地址。除SAHF和POPF外,对标志无影响。主要有四类: 1通用数据传送指令 2地址传送指令 3标志传送指令 4输入输出指令,1通用数据传送指令 (MOV、XCHG、PUSH、POP、XLAT),(1)基本的传送指令MOV 格式:MOV DEST , SRC MOV AL,30H ;立即数传送到寄存器 MOV AL,BL ;寄存器之间传送字节数据 MOV BX+62H , SI ;寄存器和存储器之间传送数据 MOV AL, BX 例3-13下列指令是不合法的。 MOV 6234H,AX ;立即数不能用于目的操作数 MOV

10、 CS,AX ;CS不能改变(不能为目的操作数) MOV IP,AX ;IP不能改变(不能为目的操作数) MOV DS,4234H ;立即数不能直接传送给段寄存器 MOV AL,BX ; 寄存器之间传送,位数必须一致 MOV BUF1,BUF2 ;两个存储器单元之间不能传送数据 MOV DS,ES ;不能在两个段寄存器之间传送数据,(2)交换指令 XCHG,格式:XCHG DEST,SRC 功能:将源操作数与目的操作数的内容交换。 例XCHG AL,CL ;字节交换(通用寄存器之间) XCHG BX,SI ;字交换 XCHG AX,BX+SI ;寄存器和存储器之间下列指令是非法的 XCHG A

11、X,6234H ;立即数不能参加交换XCHG BX,4234H ; 存储器之间不能交换 XCHG DS,AX ;段寄存器不能参加交换 XCHG CS,DATBX ;不能改变CS、IP的值 只能是通用寄存器之间或其与存储器之间交换,3) 堆栈操作指令 (PUSH/POP ),堆栈是主存一个特殊的区域 操作原则:先进后出或后进先出 堆栈指针它指示栈顶位置,在8086中,栈顶由SS*16+SP指示,栈顶随不断压入(存)数据而由高低地址;随弹出(取)数据由低高地址自动改变。栈底即程序中设定的SP的值,不会变 指令格式PUSH AX POP BX PUSH 2000H POP BX,字操作不能字节操作,

12、高对高,低对低; 进栈操作1次,SP=SP-2,向低地址方向生长; 出栈操作1次,SP=SP+2,向高地址方向生长。 “栈顶总满”(栈顶已有数据)。进栈先SP-1-压入高8位数据,再SP-1压入低8位数据。,总结8088/8086的堆栈操作特点, 堆栈操作指令,说明: PUSH、POP指令不能使用立即寻址方式,POP指令不能使用CS寄存器,不能改变CS与IP的值。 堆栈中数据的压入弹出必须以字为单位进行, 这两条堆栈指令不影响标志位。,堆栈只有两种基本操作:进栈和出栈两条指令。,例3-16 将16位通用寄存器CX的内容压入堆栈,然后,弹出栈顶至CX中,已知:(SS)=0200H,(SP)=00

13、08H,(CX)=12FAH,其示意图见图。PUSH CX POP CX,PUSH CX,POP CX,用途:现场的保护和恢复,push ax ;进入子程序后 push bx push ds . pop ds ;返回主程序前 pop bx pop ax,(4)换码指令,格式:XLAT 功能:执行(AL) BX+AL的操作,使AL中的值变换为内存表格中的某一个值,实现码的转换。例3-17 在内存的数据段中存放有一张数值09的ASCII码转换表,首地址为Hex_table,如图3-3所示。现要把数值8转换成对应的ASCII码,可用以下几条指令实现: LEA BX,Hex_table ;(BX)表首

14、偏移地址 MOV AL, 8 ; (AL)8 XLAT ;查表转换,2.地址传送指令,1)有效地址传送指令 格式:LEA DEST,SRC 功能:这是一条取有效地址的指令。将源操作数的偏移地址传送到16位通用、指针或变址寄存器中。 例3-18 MOV BX,3200H ; 将3200H单元的内容送BX LEA BX,3200H ;将有效地址3200H送BX LEA SI,ADDR ;将ADDR的有效地址送SI LEA SI,50HBX+DI,2)地址指针传送指令,格式:LDS DEST,SRC(数据段地址指针)LES DEST,SRC(附加据段地址指针) 功能:将源操作数指定的连续4个存储器单元中存放的32位地址指针(包括一个段地址和一个偏移地址)传送到两个16位寄存器 例3-19 POINT DD 55663344H ;设定变量POINT(段地址和偏移地址)中存放4个字节的数据。 LDS BX,POINT ;(BX)=3344H,(DS)=5566H LES DI,POINT ; (DI)=3344H, (ES)=5566H,3. 标志寄存器传送指令(LAHF/SAHF) (PUSHF/POPF),标志读写指令 LAHF 将标志寄存器FLAGS中的低8位,传送至AH中。,SAHF SAHF与LAHF正好相反,把AH传送至标志寄存器FLAGS的低8位。,LAHF指令操作格式,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号