汇编语言语法

上传人:xh****66 文档编号:61667747 上传时间:2018-12-09 格式:PPT 页数:102 大小:162.50KB
返回 下载 相关 举报
汇编语言语法_第1页
第1页 / 共102页
汇编语言语法_第2页
第2页 / 共102页
汇编语言语法_第3页
第3页 / 共102页
汇编语言语法_第4页
第4页 / 共102页
汇编语言语法_第5页
第5页 / 共102页
点击查看更多>>
资源描述

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

1、,汇编语言语法,指令系统,寻址方式 基本概念 1. 指令系统与指令格式 计算机可以执行的各种操作命令称为指令。通常一条指令对应一种基本操作,例如加、减、传送、移位等。计算机所能执行的全部命令的集合即为该计算机的指令系统。 计算机指令是完成特定操作的命令,CPU能直接识别和执行的指令是用二进制代码表示的,这种代码称为机器代码。,指令系统,计算机中的指令由操作码字段和操作数字段两部分组成。 (1)操作码字段 说明计算机要执行的具体操作,如传送、运算、移位、跳转等操作,是指令中必不可少的组成部分。 (2)操作数字段 说明在指令执行的过程中需要的操作数,它可以是操作数本身,也可以是操作数地址或是地址的

2、一部分,还可以是指向操作数的地址指针或其它有关操作数据的信息。单地址指令的操作只需一个操作数,如加1指令: INC AX。大多数运算型指令都需要两个操作数,如加法指令:ADD AX,BX ;运算的结果送到AX中,AX称为目的操作数,BX称为源操作数。,寻址及寻址方式的概念,计算机中的指令有些不需要操作数,大多数指令采用一个或两个操作数。一般来说,操作数可以跟随在指令操作码之后,称为立即数;操作数也可以存放在CPU内部的寄存器中,称为寄存器操作数;绝大多数的操作数存放在内存储器中,称为存储器操作数。指令指定操作数的位置,即给出地址信息,在执行时需要根据这个地址信息找到需要的操作数。这种寻找操作数

3、的过程称为寻址,而寻找操作数的方法称为寻址方式。,8086指令系统的寻址方式,1. 立即寻址 立即寻址方式中,指令操作码和操作数都在存储器代码段中。 汇编格式:n(n为立即操作数,是用8位或16位二进制补码表示的有符号数) 功能:操作数存放在 存储器,指令下一单元的 内容为立即操作数n。 图形表示如右:,6,寄存器寻址方式的操作数在指令指明的寄存器中。 汇编格式:R 其中R表示寄存器名。 功能:操作数直接存放在寄存器R中。 R 指令操作数,. 存储器寻址,如果操作码所需操作数存放在内存储器中,则指令中需要给出操作数的地址信息。为了提高程序的灵活性,8086指令系统提供了多种存储器寻址方式。 (

4、1)直接寻址 (2)寄存器间接寻址 (3)寄存器相对寻址 (4)基址变址寻址 (5)与I/O端口有关的寻址方式,直接寻址,汇编格式:含有变量的地址表达式。 段寄存器名:EA 。 功能:指令下一字单元的内容是操作数的偏移地址EA。 图形表示:,寄存器间接寻址,寄存器间接寻址方式中,寄存器的内容为操作数的偏移地址EA,操作数在存储器中。 汇编格式:R 功能:操作数存放在存储器,寄存器R存放操作数的偏移地址EA。,寄存器间接寻址示意图:,例如:MOV AX,BX 若(DS)2000H,(BX)1000H,物理地址20000H1000H21000H。指令执行前,(AX)2030H,(21000H)0A

5、0H,(21001H)50H,指令执行后,(AX)50A0H,(21000H)0A0H,(21001H)50H。指令执行情况如下:,偏移地址EA计算方法,EA=SI SI作间址寄存器。 EA=DI DI作间址寄存器。 EA=BXBX作间址寄存器。 EA=BP BP作间址寄存器。,寄存器相对寻址,寄存器相对寻址方式是在指令中给定一个基址寄存器(或变址寄存器)名和一个8位或16位的相对偏移量,两者之和作为操作数的有效地址。对BX、SI、DI这三个间址寄存器,指示的是数据段中的数据,而用BP作间址寄存器,则指示的是堆栈段中的数据。 汇编格式:XR(X表示位移量,是8位或16位二进制补码表示的有符号数

6、)。 功能:操作数存放在存储器,寄存器R的内容加位移量X为操作数的偏移地址EA。,偏移地址的计算方法,基址变址寻址,基址变址寻址方式是在指令中给出一个基址寄存器名和一个变址寄存器名,两者内容之和作为操作数的有效地址。基址寄存器为BX或BP,变址寄存器为SI或DI,但指令中不能同时出现两个基址寄存器或两个变址寄存器。如果基址寄存器为BX,则段寄存器使用DS;如果基址寄存器用BP,则段寄存器用SS。 汇编格式: BR+IR 功能:操作数存放在存储器,BR的内容加IR的内容加位移量X是操作数的偏移地址EA。,操作数偏移地址EA计算方法,【例】 MOV AL,BXSI(MOV AL,BXSI) 若指令

7、执行前,(DS)1000H,(BX)0010H,(SI)0002H,(10012H)45H 则EA(BX)(SI)0012H,PA(DS)10HEA10012H 指令执行后(AL)45H。,I/O端口寻址方式,(1)直接端口寻址 直接端口寻址是在指令中直接给出要访问的端口地址,一般采用2位十六进制数表示,也可以用符号表示,可访问的端口范围为0255。 例如:IN AL,25H 表示从I/O端口地址为25H的端口中取数据送到寄存器AL中。 (2)寄存器间接端口寻址 若访问的端口地址值大于255,则必须用I/O端口的间接寻址方式。它是把I/O端口的地址先送到DX中,用DX作为间接寻址寄存器。此种方

8、式可访问的端口范围为065535。 例如:MOV DX,285H ;将端口地址285H送到DX寄存器 OUT DX,AL ;将AL中的内容输出到DX指定的端口,第二部分、指令系统的应用、汇编语言程序设计,8086指令系统,8086CPU指令系统按功能可以分为以下6类指令: 数据传送类指令 算术运算类指令 逻辑运算(位操作)类指令 串操作类指令 控制转移类指令 处理器控制类指令,数据传送类指令,1 通用数据传送指令 2 累加器专用传送指令 3 地址传送指令 4 标志寄存器传送指令,通用数据传送指令,(1)传送指令MOV (2)堆栈指令PUSHPOP (3)数据交换指令XCHG (1)传送指令MO

9、V 语句格式:MOV OPD,OPS 功能:将源操作数传送入目的地址,源地址内容不变。即(OPS)OPD。 下图描述了MOV指令在传送数据时允许传送的路径及类型,MOV指令的形式,1)从通用寄存器到通用寄存器 MOV reg1,reg2 2)立即数传送到通用寄存器 MOV reg ,data 3)通用寄存器和存储单元之间 MOV mem (reg),reg (mem) 4)立即数传送到存储单元 MOV mem, data 5)段寄存器与通用寄存器间的数据传送 MOV seg,reg 或 MOV reg, seg 6)段寄存器与存储单元间的数据传送 MOV seg,mem 或 MOV mem,

10、seg,【例】存储器与寄存器间数据传送。,MOV AX,BUF ;BUF是变量,源操作数为直接寻址 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,数据交换指令XCHG,语句格式:XCHG OPD,OPS 功能:将源地址与目的地址中的内容互换。即(OPD)OPS,(OPS)OPD。

11、【例】寄存器与存储器之间数据交换。 MOV AX,5678H ;(AX)=5678H MOV BX,0FFFFH ;(BX)=0FFFFH XCHG AX,BX ;(AX)=0FFFFH ,( BX)=5678H,堆栈操作指令,1)进栈指令PUSH 2)出栈指令POP 进栈指令PUSH 语句格式: PUSH OPS 功能:将寄存器、段寄存器或存储器中的一个字数据压入堆栈,堆栈指针减2 出栈指令POP 语句格式: POP OPD 功能: 将栈顶元素弹出送至某一寄存器、段寄存器(除CS外)或存储器,堆栈指针加2。 从POP指令功能可看出,该指令为PUSH指令的逆过程,累加器专用传送指令输入指令IN

12、,输入指令用来从指定的外设寄存器取信息送入累加器。它有四种形式: 语句格式:IN AL,PORT 功能:(PORT) AL 语句格式:IN AX,PORT 功能:(PORT) AX 语句格式:IN AL,DX 功能:(DX) AL 语句格式:IN AX,DX 功能:(DX) AL,累加器专用传送指令-输出指令OUT,输出指令用来把累加器的内容送往指定的外设存储器,它有四种形式: 语句格式:OUT PORT,AL 功能:(AL) PORT 语句格式:OUT PORT,AX 功能:(AX) PORT 语句格式:OUT DX,AL 功能:(AL) DX 语句格式:OUT DX,AX 功能:(AX)

13、DX,查表转换指令 XLAT,语句格式:XLAT OPS或XLAT 功能:将(BX)为首址(AL)为位移量的字节存储单元中的数据送AL寄存器。即(BX+AL)AL。,地址传送指令,语句格式: LEA OPD,OPS 功能:主存按源地址的寻址方式计算偏移地址,将偏移地址送入指定寄存器。 【例】主存偏移地址的获取。 MOV BX,0100H ;(BX)=0100H MOV SI, 0210H ;(SI) =0210H LEA BX,1234BX+SI ; (BX)=1544H,传送有效地址及数据段首址指令LDS,语句格式:LDS OPD,OPS 功能:将主存中指定字单元数据送入指定存储器,下一字单

14、元数据送DS寄存器,传送有效地址及附加数据段指令LES,语句格式:LES OPD,OPS 功能:将主存某字单元内容送指定寄存器。即(OPS)OPD,(OPS+2)ES。,标志寄存器传送指令-标志送AH指令LAHF,语句格式:LAHF 功能:将标志寄存器的低8位送入AH寄存器。 即(FLAGS)7-0AH。该指令的执行对标志位无影响。 【例】标志寄存器传送。 执行前:(FLAGS)=0485H,(AX)=0FFFFH 执行指令:LAHF,AH送标志指令SAHF,语句格式:SAHF 功能:将AH的内容送入标志寄存器的低8位,高8位不变。即(AH) FLAGS7-0.。 从该指令功能可看出,SAHF

15、为LAHF的逆过程。,标志寄存器进栈指令PUSHF,语句格式:PUSHF 功能:将标志寄存器的内容压入堆栈。,标志寄存器出栈指令POPF,功能: 将栈顶内容弹出送入标志寄存器中。即(SP)FLAGS。 POPF指令与PUSHF指令互为逆过程。,下节课 ?,完整的汇编语言源程序如下: DATA SEGMENT ;数据段 W DW -245 X DW 15 Y DW -32 Z DW 280 RESULT DW 2 DUP(?) DATA ENDS CODE SEGMENT ;代码段 ASSUME CS:CODE,DS:DATA START:MOV AX,DATA ;初始化DS MOV DS,AX MOV AX,X ;被乘数X取出存入AX中 IMUL Y ;XY MOV CX,AX ;乘积的低位字转存至CX MOV BX,DX ;乘积的高位字转存至BX MOV AX,Z ;加数Z取出存入AX中 CWD ;将Z扩展成双字,ADD CX,AX ;XY的低位字与Z的低位字相加 ADC BX,DX ;XY的高位字与Z的高位字及进位相加 SUB BX,340 ;XYZ的代位字减340 SBB BX,0 ;XYZ

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

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

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