汇编语言课件

上传人:豆浆 文档编号:5187225 上传时间:2017-08-06 格式:PPT 页数:35 大小:279.50KB
返回 下载 相关 举报
汇编语言课件_第1页
第1页 / 共35页
汇编语言课件_第2页
第2页 / 共35页
汇编语言课件_第3页
第3页 / 共35页
汇编语言课件_第4页
第4页 / 共35页
汇编语言课件_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《汇编语言课件》由会员分享,可在线阅读,更多相关《汇编语言课件(35页珍藏版)》请在金锄头文库上搜索。

1、第二章 寻址方式和指令系统,本章主要介绍8086/80286CPU的寻址方式和部分常用指令,并通过实际例子讲述了指令的功能和使用方法。通过学习,应该掌握汇编语言常用指令的格式、功能以及对CF、OF、SF和ZF标志位的影响,这是学习设计汇编语言程序的基础。本章重点:寻址方式、常用指令本章难点:寻址方式、记指令,第一节 指令结构,80X86汇编语言指令的一般格式为: 标号: 指令助记符 操作数 ;注释 其中方括号 中的内容为可选项。各部分的意义说明如下:标号:符号地址,用来表示指令在内存中的位置,以便程序中的其它指令能引用该指令。它通常作为转移指令的操作数,以表示转向的目标地址。标号后应加冒号(:

2、)作分隔符。指令助记符:指令名称,是指令的英文缩写。如“MOV”表示传送指令,“ADD”表示加法指令等。操作数:表示指令要操作的数据或数据所在的地址。80X86指令一般带有02个操作数:有些指令不需要操作数,有些指令需要一或两个操作数。如果有操作数,用一个空格符使之与助记符分隔开;若有两个操作数,则它们之间用逗号(,)分隔。将存放操作结果的操作数称作目的操作数,作第1个操作数;将指令中作为来源的操作数称作源操作数。注释:由分号(;)开始,用来说明指令的功能,使程序更容易理解和阅读。,第二节 寻址方式,操作数有立即数、寄存器、存储器,方式多。 寻址方式:寻找操作数或操作数地址的方式。 了解操作数

3、的表示方法,共七种。一、立即寻址方式:操作数直接存放在指令中, 即立即数。 例:MOV AL,06H 则指令执行后:(AL)=06H。 特点:1、主要用来给寄存器或存储器赋值。 2、速度快、只能作源操作数,不能作目的操作数, 且源操作数长度应与目的操作数长度一致。,二、寄存器寻址方式 操作数在寄存器中,指令中给出寄存器名。 例:MOV BX,AX 如指令执行前,(AX)=0203H,(BX)=0405H; 则指令执行后:(BX)=0203H,(AX)保持不变。 特点:1、速度快。 以上两种寻址方式都与存储器无关,而以下五种寻址方式均与存储器有关。由于,存储器的各个段的段地址已分别由各个段寄存器

4、存放,因此,我们需要寻找操作数的偏移地址,以便求出其物理地址。为此,我们将操作数的偏移地址称为有效地址(EA)。 规定:双操作数指令中不能同时使用存储器寻址方式。,三、直接寻址方式 1、操作数在存储器中,指令中指出其有效地址,默认段地址在DS寄存器中。计算机根据段地址和有效地址组成的逻辑地址计算出其物理地址,从该物理地址中取出操作数进行操作。 例:MOV AX,2000H 若(DS)=3000H,则执行时,计算机先计算出该存储器的物理地址=3000H*10H+2000H=32000H 若(32000H)=5080H,则指令执行后:(AX)=5080H 2、如果使用段前缀取其它段中的操作数,则在

5、有效地址前必须用其它段寄存器名作为段前缀来指示。 例:MOV BX,CS:3000H 若(CS)=5100H,则执行时,计算机先计算出该存储器的物理地址=5100H*10H+3000H=54000H 若(54000H)=1234H,则指令执行后:(BX)=1234H,3、在汇编语言指令中,用立即数表示操作数地址时,该立即数必须要加方括号,表示该立即数是有效地址。实际上,我们经常使用符号地址来代替数值地址,此时,可不加方括号,两者等效。如: MOV AX,VALUE 此时VALUE为存放操作数的符号地址,上面指令也可以等效写成:MOV AX,VALUE 4、若VALUE在附加段中,则应指定段前缀

6、如下: MOV AX,ES:VALUE 或:MOV AX, ES:VALUE 直接寻址方式适用于处理单个变量。如要处理某个存放在存储器里的变量,可以用直接寻址方式把该变量先取到一个寄存器中,然后再作进一步处理。,四、寄存器间接寻址方式 操作数的有效地址在寄存器中,而操作数则在存储器中,指令中给出寄存器名。 例:MOV AX,BX 若(DS)=3000H,(BX)=1000H,则物理地址为 30000H1000H31000H 若(31000H)62B0H,则执行结果后(AX)=62B0H。 指令中也可以指定段前缀来取得其它段中的数据。如 MOV AX,ES:BX 规定:可用的寄存器只有BX、SI

7、和DI,且寄存器必须加方括号。默认段地址在DS寄存器中。 这种寻址方式用于表格处理,执行完一条指令后,只需修改寄存器内容就可以取出表格的下一项。,五、寄存器相对寻址方式 操作数的有效地址为寄存器内容和位移量之和,指令中给出寄存器名和位移量。 例:MOV AX,COUNTSI 若(DS)=3000H,(COUNT)=3000H,(SI)=2000H 则物理地址为:30000H+3000H+2000H=35000H 若(35000H)=1234H,则指令执行后:(AX)=1234H。 上述指令也可以写成:MOV AX,COUNT+SI,两者等效。 这种寻址方式也可以使用段前缀:MOV DL,ES:

8、STRINGSI 规定:可用的寄存器只有BX、BP、SI和DI。且寄存器必须加方括号。当使用BP时,默认段为堆栈段SS;使用其它寄存器时,默认段为数据段DS。 寄存器相对寻址方式同样可用于表格处理,表格首地址设为位移量,修改基址或变址寄存器的内容来取得表格中的值。,六、基址变址寻址方式 操作数的有效地址是一个基址寄存器和一个变址寄存器的内容之和,指令中给出基址和变址寄存器名。 例:MOV AX,BXDI 若(DS)=3000H,(BX)=1000H,(DI)=0C00H, 则物理地址为:30000H+1000H+0C00H=31C00H 若(31C00H)=562DH,则指令执行后:(AX)=

9、562DH。 上述指令也可以写成:MOV AX,BX+DI,两者等效。 这种寻址方式可使用段前缀,如:MOV AX,ES:BXSI 规定:可用的寄存器只有BX、BP、SI和DI。且两个寄存器必须加方括号。当基址寄存器用BP时,默认段为堆栈段SS;当基址寄存器用BX时,默认段为数据段DS。(以基址为准) 基址变址寻址方式同样适用于数组或表格处理,首地址可存放在基址寄存器中,而用变址寄存器来访问数组中的各个元素。由于基址寄存器和变址寄存器都可以修改,所以比直接变址方法更加灵活。,七、相对基址变址寻址方式 操作数的有效地址是一个基址寄存器、一个变址寄存器的内容和指令中指定的位移量之和,它所允许使用的

10、寄存器及其对应的默认段与基址变址寻址方式相同。 例:MOV AX,MASKBXSI 若(DS)=3000H,(BX)=2000H,(SI)=1000H,MASK=0250H, 则物理地址为:30000H+2000H+1000H+0250H=33250H 若(33250H)=3456H,则指令执行后:(AX)=3456H 上述指令也可以写成:MOV AX,MASK+BX+SI MOV AX,MASKBX+SI MOV AX,MASK+BXSI MOV AX,MASK+SIBX 这种寻址方式也可以使用段前缀。 这种寻址方式适用于二维数组的处理。,不加方括号-立即寻址 立即数 加方括号-直接寻址操

11、不加方括号-寄存器寻址作 1个-寄存器间接寻址数 寄存器 加方括号 1个+位移量-寄存器相对寻址 BX、BP 基址+变址-基址变址寻址 SI、DI 基+变+位移量-相对基址变址寻址,第三节 指令系统,这一节主要介绍8086/80286的几种比较常用的指令,只要掌握了这些常用指令,就可以设计大多数汇编语言程序了。一、数据传送指令 在寄存器、存储单元或I/O端口之间传送数据和地址,是最简单、最常用的一类指令。它通常分为四种:(一)通用数据传送指令:MOV、PUSH、POP、XCHG交换1MOV 传送指令 指令格式:MOV DST,SRC 功能:(DST)(SRC),即将源操作数传送到目的操作数中。

12、 其中DST表示目的操作数,SRC表示源操作数。,特点:1)源操作数与目的操作数的长度必须一致。 正确指令:MOV AL,BL MOV BX,DX 不正确指令:MOV AX,BL MOV AL,3824H 2)目的操作数不能为CS、IP或立即数。 3)不能在存储单元之间直接传送数据。 例:MOV AR2,AR1是错误的。 正确指令:MOV AX,AR1 MOV AR2,AX 4)不能在段寄存器之间直接传送数据。 与3)类似,要以通用寄存器为桥梁。 例:MOV AX,ES MOV DS,AX 5)立即数不能直接送段寄存器。通用寄存器来实现传送。 例:MOV AX,DATA_SEG ;数据段寄存器

13、初始化 MOV DS,AX 6) MOV指令不影响标志位。,2PUSH进栈指令和POP出栈指令 格式:PUSH SRC 功能:(SP)(SP)2 (SP)1,(SP)(SRC) 格式:POP DST 功能:(DST)(SP)1,(SP) (SP)(SP)2 堆栈是以“先进后出”为工作方式的一个特殊的数据存储区,它必须存在于内存的堆栈段中,因而其段地址存放于SS寄存器中。堆栈一端固定,是栈底;另一端浮动,唯一的数据出入口,是栈顶。也只有唯一的堆栈指针寄存器SP,任何时候都指向当前的栈顶地址。所以PUSH和POP指令都必须根据当前SP的内容来确定进栈或出栈的存储单元,而且必须及时自动修改指针,以保

14、证SS:SP指向当前的栈顶。 (向上生成,与单片机相反) 例:PUSH AX;(AX)1234H POP AX;执行后(AX)=1234H(见书),特点:1)SRC、DST只能为字的寄存器或存储器。 不正确指令:PUSH AL 2) DST不能为CS、IP。 不正确指令:POP CS3) PUSH和POP是互补的指令,因此通常成对使用,以避免程序出错-“栈平衡”。4) PUSH和POP指令均不影响标志位。,3XCHG 交换指令 格式:XCHG OPR1,OPR2 功能:(OPR1)(OPR2) 其中OPR表示操作数,既是目的,又是源操作数。 例:XCHG BX,DI 如指令执行前:(BX)=6300H,(DI)=0246H,(DS)=2F00H, (2F246H)=4100H OPR2的物理地址=2F000H+0246H=2F246H 则指令执行后:(BX)=4100H,(2F246H)=6300H特点:1)操作数不能使用立即数和段寄存器。2)存储器之间不能直接交换。所以,只可在寄存器之间或者寄存器与存储器之间交换信息。3)目的操作数与源操作数的长度必须一致。4)不影响标志位。,

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

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

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