《汇编语言程序设计》电子教案 第2章 寻址方式和指令系统

上传人:E**** 文档编号:89401716 上传时间:2019-05-24 格式:PPT 页数:118 大小:804.50KB
返回 下载 相关 举报
《汇编语言程序设计》电子教案 第2章  寻址方式和指令系统_第1页
第1页 / 共118页
《汇编语言程序设计》电子教案 第2章  寻址方式和指令系统_第2页
第2页 / 共118页
《汇编语言程序设计》电子教案 第2章  寻址方式和指令系统_第3页
第3页 / 共118页
《汇编语言程序设计》电子教案 第2章  寻址方式和指令系统_第4页
第4页 / 共118页
《汇编语言程序设计》电子教案 第2章  寻址方式和指令系统_第5页
第5页 / 共118页
点击查看更多>>
资源描述

《《汇编语言程序设计》电子教案 第2章 寻址方式和指令系统》由会员分享,可在线阅读,更多相关《《汇编语言程序设计》电子教案 第2章 寻址方式和指令系统(118页珍藏版)》请在金锄头文库上搜索。

1、第2章 寻址方式和指令系统,2.1 寻址方式 2.2 数据传送类指令 2.3 算术运算类指令 2.4 位操作类指令 2.5 串操作类指令 2.6 控制转移类指令 2.7 处理机控制类指令,开 始,8086CPU的指令系统的基本指令,包括数据传送类指令、算术运算类指令、位操作类指令、串操作类指令、控制转移类指令、处理机控制类指令。后几节将分别介绍这些指令的语句格式和功能。,8086CPU的指令的共同的规律,l 大多数数据传送类指令、算术运算类指令、位操作类指令及串操作类指令,其双操作数指令有相同的语句格式和操作规定。 语句格式:标号: 操作符 OPD, OPS ;注释 l 算术运算和位操作类指令

2、的部分单操作数指令有相同的语句格式和操作规定。 语句格式:标号: 操作符 OPD ;注释,2.1 寻址方式,2.1.1 寄存器寻址 2.1.2 寄存器间接寻址 2.1.3 变址寻址 2.1.4 基址加变址寻址 2.1.5 立即寻址 2.1.6 直接寻址 2.1.7 跨段问题,返回本章首页,2.1.1 寄存器寻址,寄存器寻址方式的操作数在指令指明的寄存器中。 汇编格式:R 其中R表示寄存器名。 功能:操作数直接存放在寄存器R中。 图形表示: R 指令操作数,【例2.1】,下列程序执行后,(AX)=?,(BX)=? MOV AX,1234H MOV BX,5678H ADD AX,BX 该程序中M

3、OV指令为数据传送指令操作符,ADD指令为加法指令操作符,三条指令皆为双操作数指令。第一、二条指令AX、BX皆为目的操作数地址,为寄存器寻址方式。第三条指令中,AX为目的操作数地址,BX为源操作数地址。源地址和目的地址皆为寄存器寻址方式。,图形表示: 执行:1234HAX 5678HBX (AX)+(BX)AX 执行后:(AX)=68ACH,(BX)=5678H,返回本节,2.1.2 寄存器间接寻址,寄存器间接寻址方式中,寄存器的内容为操作数的偏移地址EA,操作数在存储器中。 汇编格式:R 功能:操作数存放在存储器,寄存器R存放操作数的偏移地址EA。,偏移地址EA计算方法如下:,EA=,SI

4、SI作间址寄存器。 DI DI作间址寄存器。 BX BX作间址寄存器。 BP BP作间址寄存器。,执行指令:MOV AX ,BP 执行后:(AX)=?,(BP)=?,(SS)=?,(20030H)=? 图形表示如下:,【例2.2】寄存器和存储器内容分别为:(AX)=0,(BP)=0030H,(SS)=2000H,(20030H)=1234H,返回本节,2.1.3 变址寻址,变址寻址方式操作数的偏移地址EA为寄存器的内容加位移量,操作数在存储器中。 汇编格式:XR(X表示位移量,是8位或16位二进制补码表示的有符号数) 功能:操作数存放在存储器,寄存器R的内容加位移量X为操作数的偏移地址EA。

5、图形表示如下:,偏移地址EA计算方法如下:,【例2.3】,设执行前: (AX)=0040H,(BX)=0030H,(DS)=2000H,(20036H)=0050H 执行指令:ADD 6BX,AX 执行后:(AX)=?,(BX)=?,(DS)=?,(20036H)=? 图形表示如下:,执行:(20036H)+(AX) 20036H 执行后:(AX)=0040H,(BX)=0030H,(DS)=2000H,(20036H)=0090H。,返回本节,2.1.4 基址加变址寻址,基址加变址寻址方式中,操作数的偏移地址EA是指令中基址寄存器内容、变址寄存器内容、位移量三项之和,操作数在存储器中。 汇编

6、格式:X BR+IR 功能:操作数存放在存储器,BR的内容加IR的内容加位移量X是操作数的偏移地址EA。 图形表示:,操作数偏移地址EA计算方法如下,返回本节,2.1.5 立即寻址,立即寻址方式中,指令操作码和操作数都在存储器代码段中。 汇编格式:n(n为立即操作数,是用8位或16位二进制补码表示的有符号数) 功能:操作数存放在存储器,指令下一单元的内容为立即操作数n。 图形表示:,【例2.5】,【例2.5】MOV AX, 10 执行后(AX)=? 该例中源操作数为立即寻址方式,立即数为10,存放在指令的下一单元。 图形表示: 执行:10AX 执行后:(AX)=000AH,返回本节,2.1.6

7、 直接寻址,汇编格式:含有变量的地址表达式。 段寄存器名:EA 。 功能:指令下一字单元的内容是操作数的偏移地址EA。 图形表示:,【例2.6】,【例2.6】寄存器和存储器内容为:(AX)=1212H,BUF为数据段定义的变量,其偏移地址是2000H,(DS)=3000H,(32000H)=4545H。 执行指令:MOV AX ,BUF 执行后:(AX)=? 图形表示: 执行:(32000H)AX 执行后:(AX)=4545H,返回本节,2.1.7 跨段问题,按前述规定:若选用BP作间址基址寄存器、变址寄存器或基址寄存器,则操作数在堆栈段,操作数的物理地址PA由堆栈段寄存器SS的内容左移4位与

8、偏移地址EA相加后形成;否则,操作数在数据段,操作数的物理地址PA由数据段寄存器DS的内容左移4位与偏移EA相加后形成。该规定为系统默认状态。当要否定默认状态,到非约定段寻找操作数时,必须用跨段前缀指明操作数的段寄存器名。 汇编格式:段寄存器名:操作数地址。 功能:段寄存器名指明操作数属哪个段。,【例2.7】跨段前缀示例。,MOV AX,DS:BP MOV CX,SS:SI 该例中,DS:,SS:均为跨段前缀,此时默认状态无效,操作数的物理地址PA由段寄存器内容左移4位加偏移EA形成。上述2条指令的源操作数物理地址分别为: PA1 =(DS)左移4位+BP PA2 =(SS)左移4位+SI,返

9、回本节,2.2 数据传送类指令,2.2.1 通用数据传送指令 2.2.2 堆栈操作指令 2.2.3 标志寄存器传送指令 2.2.4 地址传送指令 2.2.5 输入输出指令,返回本章首页,2.2.1 通用数据传送指令,1传送指令MOV 2数据交换指令XCHG 3查表转换指令 XLAT,1传送指令MOV 语句格式:MOV OPD,OPS 功能:将源操作数传送入目的地址,源地址内容不变。即(OPS)OPD。 下图2.1描述了MOV指令在传送数据时允许传送的路径及类型。,图2.1 MOV指令所允许的数据传送路径及类型,【例2.8】存储器与寄存器间数据传送。,MOV AX,BUF ;BUF是变量,源操作

10、数为直接寻址 MOV BH,DI ;源操作数为寄存器间接寻址 MOV DI,ES:3SI ;源操作数为变址寻址,使用跨段前缀 MOV BP,3BX+SI ;源操作数为基址加变址寻址 MOV BUFA,DL ;BUFA是一字节变量 MOV BP,AX ;使用SS段寄存器 MOV DS:BP,DL ;使用跨段前缀 MOV BUF,DS ;BUF是个字变量 MOV ES ,BUF,2数据交换指令XCHG,语句格式:XCHG OPD,OPS 功能:将源地址与目的地址中的内容互换。即(OPD)OPS,(OPS)OPD。 【例2.9】寄存器与存储器之间数据交换。 MOV AX,5678H ;(AX)=56

11、78H MOV BX,0FFFFH ;(BX)=0FFFFH XCHG AX,BX ;(AX)=0FFFFH ,( BX)=5678H,3查表转换指令 XLA,语句格式:XLAT OPS或XLAT 功能:将(BX)为首址(AL)为位移量的字节存储单元中的数据送AL寄存器。即(BX+AL)AL。,返回本节,2.2.2 堆栈操作指令,1进栈指令PUSH 2出栈指令POP,1进栈指令PUSH,语句格式: PUSH OPS 功能:将寄存器、段寄存器或存储器中的一个字数据压入堆栈,堆栈指针减2。 即:(SP)SP(OPS)158SP (SP)SP (OPS)70SP,2出栈指令POP,语句格式: POP

12、 OPD 功能: 将栈顶元素弹出送至某一寄存器、段寄存器(除CS外)或存储器,堆栈指针加2。 从POP指令功能可看出,该指令为PUSH指令的逆过程。 即:(SP)(OPD)70 (SP)+SP (SP)(OPD)158 (SP)+SP,返回本节,2.2.3 标志寄存器传送指令,1标志送AH指令LAHF 2AH送标志指令SAHF 3标志寄存器进栈指令PUSHF 4标志寄存器出栈指令POPF,1标志送AH指令LAHF,语句格式:LAHF 功能:将标志寄存器的低8位送入AH寄存器。 即(FLAGS)7-0AH。该指令的执行对标志位无影响。 【例2.13】标志寄存器传送。 执行前:(FLAGS)=04

13、85H,(AX)=0FFFFH 执行指令:LAHF,2AH送标志指令SAHF,语句格式:SAHF 功能:将AH的内容送入标志寄存器的低8位,高8位不变。即(AH) FLAGS7-0.。 从该指令功能可看出,SAHF为LAHF的逆过程。,3标志寄存器进栈指令PUSHF,语句格式:PUSHF 功能:将标志寄存器的内容压入堆栈。即(FLAGS)(SP)。,4标志寄存器出栈指令POPF,功能: 将栈顶内容弹出送入标志寄存器中。即(SP)FLAGS。 POPF指令与PUSHF指令互为逆过程。 【例2.14】将标志寄存器的单步标志TF置位。 PUSHF ;(FLSGS)(SP) POP AX ;(SP)A

14、X OR AX, 0100H ;设置D8=TF=1 PUSH AX ;(AX)(SP) POPF;(SP)FLAGS,即(AX)FLAGS,返回本节,2.2.4 地址传送指令,1传送偏移地址指令 LEA 2传送偏移地址及数据段首址指令LDS 3传送偏移地址及附加数据段指令LES,1传送偏移地址指令 LEA,语句格式: LEA OPD,OPS 功能:主存按源地址的寻址方式计算偏移地址,将偏移地址送入指定寄存器。 【例2.15】主存偏移地址的获取。 MOV BX,0100H ;(BX)=0100H MOV SI, 0210H ;(SI) =0210H LEA BX,1234BX+SI ; (BX)

15、=1544H,2传送偏移地址及数据段首址指令LDS,语句格式:LDS OPD,OPS 功能:将主存中指定字单元数据送入指定存储器,下一字单元数据送DS寄存器。,3传送偏移地址及附加数据段指令LES,语句格式:LES OPD,OPS 功能:将主存某字单元内容送指定寄存器。即(OPS)OPD,(OPS+2)ES。,返回本节,2.2.5 输入输出指令,1输入指令IN 2输出指令OUT,1输入指令IN,输入指令用来从指定的外设寄存器取信息送入累加器。它有四种形式: (1)语句格式:IN AL,PORT 功能:(PORT) AL (2)语句格式:IN AX,PORT 功能:(PORT) AX (3)语句

16、格式:IN AL,DX 功能:(DX) AL (4)语句格式:IN AX,DX 功能:(DX) AL,2输出指令OUT,输出指令用来把累加器的内容送往指定的外设存储器,它有四种形式: (1)语句格式:OUT PORT,AL 功能:(AL) PORT (2)语句格式:OUT PORT,AX 功能:(AX) PORT (3)语句格式:OUT DX,AL 功能:(AL) DX (4)语句格式:OUT DX,AX 功能:(AX) DX,返回本节,2.3 算术运算类指令,2.3.1 加法指令 2.3.2 减运算指令 2.3.3 乘运算指令 2.3.4 除运算指令 2.3.5 符号扩展指令 2.3.6 十进制调整指令,返回本

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

当前位置:首页 > 高等教育 > 大学课件

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