微机原理讲义(4)指令

上传人:鲁** 文档编号:550904685 上传时间:2023-02-04 格式:DOC 页数:67 大小:3.76MB
返回 下载 相关 举报
微机原理讲义(4)指令_第1页
第1页 / 共67页
微机原理讲义(4)指令_第2页
第2页 / 共67页
微机原理讲义(4)指令_第3页
第3页 / 共67页
微机原理讲义(4)指令_第4页
第4页 / 共67页
微机原理讲义(4)指令_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《微机原理讲义(4)指令》由会员分享,可在线阅读,更多相关《微机原理讲义(4)指令(67页珍藏版)》请在金锄头文库上搜索。

1、第4章 8086的指令系统一、教学基本要求本章重点讲述8086的寻址方式、指令系统、常用的伪指令、常用的系统功能调用以及汇编语言程序设计的基本技术。为学生更好的掌握和使用微机系统以及常用的接口电路的使用打下坚实的软件基础。1、8086的寻址方式,要求达到“领会”层次。2、8086的指令系统,要求达到“应用”层次。3、汇编语言中的标记、表达式和伪指令,要求达到“应用”层次。4、常用的系统功能调用,要求达到“领会”层次。5、汇编语言程序设计的基本技术,要求达到“应用”层次。二、教学重点和难点1. 8086的寻址方式。*立即数寻址;*寄存器寻址;*直接寻址;*寄存器间接寻址;2、8086的指令系统。

2、 指令格式;指令执行时间;*传送指令、*算术运算指令、*逻辑运算和移位指令;*串操作指令;*控制转移指令(含中断指令等)3、汇编语言中的标记、表达式和伪指令。*标识符;*保留字;*界符;*操作数;*运算符;*语句;*符号定义伪指令;*数据定义伪指令;段与模块定义伪指令;过程定义伪指令;4、常用的系统功能调用 MS-DOS的软件中断;系统功能调用5、汇编语言程序设计的基本技术 *顺序程序设计;*循环程序设计;*分支程序设计;*子程序设计三、学习要点及教材分析本章前半部分8086的寻址方式和指令系统以及伪指令部分是该章基础,后半部分是汇编语言编程。与高级语言相比,汇编语言是最接近机器语言的,而高级

3、语言是最接近自然语言的,有人把C语言不偏不倚插在中间,说是高低级语言之间的桥梁,不无道理。8086的寻址方式机动灵活,初学者很难胜任用“手工”把一个数据从计算机中的一个地方搬到另一个地方,无论是作为数据源还是数据目的地,都要人为规定数据存放地点,这就是寻址。4.1 8086的寻址方式4.1.1立即数寻址8位或16位操作数(整数)就在指令中立即数。多用于寄存器赋值,立即数只能作为源操作数。MOV AL, 80H ;B080将8位16进制数80H送入ALMOV AX,1090H ;B89010将16位16进制数送AX,AL90HMOV AH,2BH; B42BMOV CX,400; B99001M

4、OV CL,-30; B1E2 立即数在机器中存放时符号扩展立即数也可以是定义过的符号常量、表达式。数值要在一定范围内。4.1.2寄存器寻址操作数就在CPU的内部寄存器中,寄存器名可出现在指令中,快,无需总线周期,寄存器寻址可对源和或目的数。MOV AX,ES ;ES寄存器中内容送入AX中INC CX ;将CX的内容加1ROL AL,1 ;将AL中的内容循环左移一位寄存器可以是AX BX CX DX SI DI SP BP或AL AHDL DH下面的6种寻址方式,操作数均在存储器中。4.1.3直接寻址单元地址由指令直接给出,数据总在存储单元中,指令前无指令前缀则默认DS段,否则,本条指令前必须

5、用前缀指出段寄存器名段超越MOV AX, 1070H ;将DS段的1070H和1071H单元内容送AXMOV BX, CS : 3000H ; 将CS段的3000H和3001H内容送BX若CS5100H,则将54000H和54001H内容送BX编程时常用定义过的符号地址代替数值地址MOV AX,VALUE; 相当于 MOV AX,VALUE;数据段VALUE单元4.1.4寄存器间接寻址Register Indirect Addressing寄存器间接寻址方式,操作数一定在存储单元中,存储单元的有效地址在寄存器中。SI DI BX间接寻址指令前缀未指明段地址,则默认DS,如寄存器为BP,则默认S

6、S段,采用寄存器间接寻址时,指令中可指定一个位移量(8位或16位)。寄存器间接寻址可细分以下4种:1.以BX寄存器进行间接寻址数据段基址寻址MOV AX, BX;若DS5000H,BX=3000H,则53000H、53001H内容送AX如要对其它段寻址,用段前缀指明MOV CX, ES: BX;若ES3000H,BX=4000H,则34000H、34001H 送CX2.以BP寄存器进行间接寻址堆栈段基址寻址MOV BX, BP ;若SS=4000H,BP2000H,则42000H、42001H内容送BX3.以SI、DI寄存器进行变址寻址SI、DI源和目的变址寄存器,常用于对数组的操作和串操作M

7、OV CX, SI ;若DS7000H,SI8000H,则78000H、78001H内容送CX4.将BX、BP和SI、DI寄存器组合起来进行间接寻址基址变址MOV AX, BX +SI ; 一个基址(BX、BP)一个变址(SI、DI)若DS=1000H, BX=2000H,SI=3000H,则15000H、15001H内容送AX基址变址 如果用了BP,默认段寄存器为SS,否则默认DS,SI和DI不能同时出现在一句指令中。5.相对的基址变址 可以带一个8位或16位位移量 MOV AX, BX+SI+0050 ; 将BX和SI的内容与0050相加作有效地址也有如果用了BP,默认段寄存器为SS,否则

8、默认DS的约定。相对的基址变址 3数相加再加段代码多种写法:MOV AX,MASKBXDIMOV AX,MASK+BX+DIMOV AX,BXDI+MASKMOV AX,BX+DI +MASK4.2 8086指令系统的概况(1) 数据传送类(Data transfer)14条(2) 算术运算类(Arithmetic)20条(3) 逻辑运算类(Logic)12条(4) 串操作类(String manipulateion)8条(5) 控制转移类(Control transferr)26条(6) 处理器控制类(Processor control)12条4.2.1指令格式指令格式中包含了指令系统的设计

9、思想,有必要了解。8086的指令为16字节。第1或2个字节为操作码和寻址方式操作码域8086大多数指令的操作码中含有3个特征位,W、D、S位。W是字操作位, W1 对字操作,W0 字节操作D位是对目的操作数进行寄存器寻址的标志,D0寄存器寻址源操作数S位是符号扩展位,扩展方法使所有高位低位字节的最高有效位S0,W=0时,为8位操作数S0,W=1时,为16位操作数S1,W=1时,为由8位操作数作符号扩展得到的16位操作数。操作码后为操作数域,可为有效地址、位移量、立即数,这要由操作码和寻址方式决定,8086规定一条指令只能包含12个操作数。涉及2个操作数的指令中,至少一个操作数必须用寄存器给出。

10、16位立即数或位移量,指令代码中低位字节在前,高位字节在后(汇编后)。有些单字节指令中,隐含指出了寄存器。MOD操作码R/M或MOD REG R/MMOD叫方式字段,指出操作数放在存储器还是寄存器中。 表3.1 MOD字段的编码MOD数据00存储器寻址,不带位移量01存储器寻址,带8位位移量10存储器寻址,带16位位移量11寄存器寻址,没有位移量当MOD=11时,操作数就在寄存器中,由R/M指出寄存器编号R/M字段受MOD控制,MOD11时,R/M还表明如何计算存储单元有效地址 REG叫寄存器字段,指定一个寄存器,操作码域的D位则指出源还是目的操作数 4.2.2 指令执行时间(指令周期)。取决

11、于时钟周期和时钟周期数,涉及内存时,加上计算有效地址所需时间.指令周期=基本执行时间+计算有效地址时间+访问内存时间。字操作数在内存的存放格式,影响指令执行时间。一个字若放在奇地址开始的存储单元,需要两个总线周期(8*T)。一个从偶地址开始的字,与一个字节相同,只要一个总线周期(4*T)4.3 8086指令8086指令系统中包含133条基本指令,特有难点:一是新手未掌握指令规定的细节,编出的程序实际不能运行二是老手习惯于一些简单指令,功能强的不会用4.3.1传送指令4类传送指令,实现CPU内部寄存器之间、CPU和存储器、I/O端口间。通用传送指令。累加器专用传送指令。地址传送指令。标志传送指令

12、1. 通用传送指令 通用传送指令中包括最基本的MOV、堆栈指令PUSH和POP,数据交换指令XCHG最基本的传送指令最简单、用得最多的指令,CPU内部寄存器之间、寄存器与内存、立即数到寄存器。格式:MOV DST,SRC(1) MOV m/r,r/m如:MOV AX,DX ;AX DXMOV AL,SI+DISPMOV BXSI,DX(2) MOV m/r,IMOV BX,2000HMOV TABLE,3AF0H ;(TABLE) 3AF0HMOV DI,2345HMOV CL,4(3) MOV m/a,a/mMOV AX,VALUE ;AL(VALUE),AH (VALUE+1)MOV SI

13、+2,AL(4) MOV rs,m16/r16MOV ES,AXMOV DS,BX+SI(5) MOV m16/r16,rsMOV AX,DSMOV BP+5,ES几点注意: 可传送8位或16位数据,取决所用寄存器或立即数位数 指令中既有源操作数又有目的操作数,至少一个用寄存器指出。立即数不能直接送段寄存器。 不能在两个内存单元之间、两个段寄存器间直接传送数据 CS和IP寄存器不能作为目的操作数(不能随意修改) 用BX、SI、DI间接寻址时,默认DS段,BP间址默认SS段 8086规定,给SS赋值时,系统自动禁止外部中断 所有通用传送指令都不影响标志位堆栈操作指令子程序调用和中断处理,分别要保

14、存返回地址和断点地址,进入处理程序后,还要保护现场,均须堆栈操作。PUSH AX ;将AX的内容推入堆栈(栈顶上移2格)PUSH BX+DI;将BX+DI和BX+DI+1内容入栈(顶上移2格)POP ES ;将栈顶两单元弹出送ESPOP BX+DI ;将栈顶两单元弹出送BX+DI和BX+DI+1堆栈几点注意:8086的堆栈操作总是按字进行的,不存在PUSH AL 之类每次PUSH 指针SP2,低位字节入低地址,弹出反之CS可移入栈,但不能 POP 到CS堆栈中的数据先进后出,POP顺序应与PUSH相反交换指令交换指令XCHG可实现字节、字交换XCHG AL,BL ;AL和BL之间进行字节交换XCHG BX,CX ;BX和CX之间进行字交换XCHG 2530H,CX;CX中的内容和2530、2531两单元的内容交换交换指令注意两点:目的操作数和原操作数不能都是内存单元CS、IP寄存器不能作为交换指令的源操作数、目的操作数2. 累加器专用传送指令(两类

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

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