汇编语言语法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MOV指令的形式
MOV AX,BUF ;BUF是变量,源操作数为直 接寻址 MOV BH,[DI] ;源操作数为寄存器间接寻 址 MOV DI,ES:3[SI] ;源操作数为变址寻址,使用 跨段前缀 MOV BP,3[BX+SI] ;源操作数为基址加变址寻址 MOV BUFA,DL ;BUFA是一字节变量 MOV [BP],AX ;使用SS段寄存器 MOV DS:[BP],DL ;使用跨段前缀 MOV BUF,DS ;BUF是个字变量 MOV ES ,BUF
寄存器相对寻址方式是在指令中给定一个基址寄 存器(或变址寄存器)名和一个8位或16位的相对偏 移量,两者之和作为操作数的有效地址。对BX、SI、 DI这三个间址寄存器,指示的是数据段中的数据, 而用BP作间址寄存器,则指示的是堆栈段中的数据。 汇编格式:X[R](X表示位移量,是8位或16位 二迚制补码表示的有符号数)。 功能:操作数存放在存储器,寄存器R的内容加位移 量X为操作数的偏移地址EA。


完整的汇编语言源程序如下: 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 ;X×Y MOV CX,AX ;乘积的低位字转存至CX MOV BX,DX ;乘积的高位字转存至BX MOV AX,Z ;加数Z取出存入AX中 CWD ;将Z扩展成双字

寄存器间接寻址
例如:MOV AX,[BX] 若(DS)=2000H,(BX)=1000H,物理地址=20000H+1000H= 21000H。指令执行前,(AX)=2030H,(21000H)=0A0H, (21001H)=50H,指令执行后,(AX)=50A0H,(21000H)= 0A0H,(21001H)=50H。指令执行情况如下:
通用数据传送指令


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, seg


语句格式:LAHF 功能:将标志寄存器的低8位送入AH寄存器。 即(FLAGS)7-0→AH。该指令的执行对标志位无 影响。 【例】标志寄存器传送。 执行前:(FLAGS)=0485H,(AX)=0FFFFH 执行指令:LAHF
标志寄存器传送指令-标志送AH指令LAHF
语句格式:SAHF 功能:将AH的内容送入标志寄存器的低8位,高8 位不变。即(AH) →FLAGS7-0.。 从该指令功能可看出,SAHF为LAHF的逆过程。

操作数偏秱地址EA计算方法



(1)直接端口寻址 直接端口寻址是在指令中直接给出要访问的端口地址,一般采 用2位十六迚制数表示,也可以用符号表示,可访问的端口范 围为0~255。 例如:IN AL,25H 表示从I/O端口地址为25H的端口中取数据送到寄存器AL中。 (2)寄存器间接端口寻址 若访问的端口地址值大于255,则必须用I/O端口的间接寻址 方式。它是把I/O端口的地址先送到DX中,用DX作为间接寻 址寄存器。此种方式可访问的端口范围为0~65535。 例如:MOV DX,285H ;将端口地址285H送到DX寄存器 OUT DX,AL ;将AL中的内容输出到DX指定的端口

【例】存储器不寄存器间数据传送。



语句格式:XCHG OPD,OPS 功能:将源地址与目的地址中的内容互换。即 (OPD)→OPS,(OPS)→OPD。 【例】寄存器与存储器之间数据交换。 MOV AX,5678H ;(AX)=5678H MOV BX,0FFFFH ;(BX)=0FFFFH XCHG AX,BX ;(AX)=0FFFFH , ( BX)=5678H
累加器与用传送指令-输出指令OUT
语句格式:XLAT OPS或XLAT 功能:将(BX)为首址(AL)为位移量的字节存 储 单 元 中 的 数 据 送 AL 寄 存 器 。 即 ( [ BX+AL]) →AL。

查表转换指令 XLAT




语句格式: LEA OPD,OPS 功能:主存按源地址的寻址方式计算偏移地址, 将偏移地址送入指定寄存器。 【例】主存偏移地址的获取。 MOV BX,0100H ;(BX)=0100H MOV SI, 0210H ;(SI) =0210H LEA BX,1234[BX+SI] ; (BX)=1544H
I/O端口寻址方式
第二部分、指令系统的应用、汇编语言程序 设计




8086CPU指令系统按功能可以分为以下6类指令: ● 数据传送类指令 ● 算术运算类指令 ● 逻辑运算(位操作)类指令 ● 串操作类指令 ● 控制转移类指令 ● 处理器控制类指令
8086指令系统
1 ห้องสมุดไป่ตู้ 3 4
寻址及寻址方式的概念
立即寻址 立即寻址方式中,指令操作码和操作数都在存 储器代码段中。 汇编格式:n(n为立即操作数,是用8位或16位 二迚制补码表示的有符号数) 功能:操作数存放在 存储器,指令下一单元的 内容为立即操作数n。 图形表示如右:

1.
8086指令系统的寻址方式
寄存器寻址方式的操作数在指令指明的寄存器中。 汇编格式:R 其中R表示寄存器名。 功能:操作数直接存放在寄存器R中。
汇编语言语法
北京理工大学
寻址方式 基本概念 1. 指令系统与指令格式 计算机可以执行的各种操作命令称为指令。 通常一条指令对应一种基本操作,例如加、减、 传送、移位等。计算机所能执行的全部命令的集 合即为该计算机的指令系统。 计算机指令是完成特定操作的命令,CPU能 直接识别和执行的指令是用二迚制代码表示的, 这种代码称为机器代码。
累加器与用传送指令—输入指令IN


输出指令用来把累加器的内容送往指定的外设存储器, 它有四种形式: 语句格式:OUT PORT,AL 功能:(AL) →PORT 语句格式:OUT PORT,AX 功能:(AX) →PORT 语句格式:OUT DX,AL 功能:(AL) →[DX] 语句格式:OUT DX,AX 功能:(AX) →[DX]

AX AH AL 数据段 物理地址
A0H 50H 56H
21000H 20001H 20002H
寄存器间接寻址示意图:
EA=[SI] SI作间址寄存器。 EA=[DI] DI作间址寄存器。 EA=[BX]BX作间址寄存器。 EA=[BP]BP作间址寄存器。

偏秱地址EA计算方法



基址变址寻址
【例】 MOV AL,[BX+SI](MOV AL, [BX][SI]) 若指令执行前,(DS)=1000H,(BX)= 0010H,(SI)=0002H,(10012H)= 45H 则EA=(BX)+(SI)=0012H,PA=(DS) ×10H+EA=10012H 指令执行后(AL)=45H。

指令系统

计算机中的指令由操作码字段和操作数字段两部分组成。 (1)操作码字段 说明计算机要执行的具体操作,如传送、运算、移位、 跳转等操作,是指令中必不可少的组成部分。 (2)操作数字段 说明在指令执行的过程中需要的操作数,它可以是操 作数本身,也可以是操作数地址或是地址的一部分,还可 以是指向操作数的地址指针或其它有关操作数据的信息。 单地址指令的操作只需一个操作数,如加1指令: INC AX。大多数运算型指令都需要两个操作数,如加法指令: ADD AX,BX ;运算的结果送到AX中,AX称为目的操 作数,BX称为源操作数。
指令系统

计算机中的指令有些不需要操作数,大多数指令 采用一个或两个操作数。一般来说,操作数可以 跟随在指令操作码之后,称为立即数;操作数也 可以存放在CPU内部的寄存器中,称为寄存器操 作数;绝大多数的操作数存放在内存储器中,称 为存储器操作数。指令指定操作数的位置,即给 出地址信息,在执行时需要根据这个地址信息找 到需要的操作数。这种寻找操作数的过程称为寻 址,而寻找操作数的方法称为寻址方式。

堆栈操作指令


输入指令用来从指定的外设寄存器取信息送入累加器。 它有四种形式: 语句格式:IN AL,PORT 功能:(PORT) →AL 语句格式:IN AX,PORT 功能:(PORT) →AX 语句格式:IN AL,DX 功能:([DX]) →AL 语句格式:IN AX,DX 功能:([DX]) →AL
. 存储器寻址
汇编格式:①含有变量的地址表达式。 ②段寄存器名:[EA] 。 功能:指令下一字单元的内容是操作数的偏移地 址EA。 图形表示:

直接寻址
寄存器间接寻址方式中,寄存器的内容为操作数 的偏移地址EA,操作数在存储器中。 汇编格式:[R] 功能:操作数存放在存储器,寄存器R存放操 作数的偏移地址EA。
地址传送指令
语句格式:LDS OPD,OPS 功能:将主存中指定字单元数据送入指定存储器, 下一字单元数据送DS寄存器

传送有效地址及数据段首址指令LDS
语句格式:LES OPD,OPS 功能:将主存某字单元内容送指定寄存器。即 (OPS)→OPD,(OPS+2)→ES。

传送有效地址及附加数据段指令LES


R 指令→操作数




如果操作码所需操作数存放在内存储器中,则指 令中需要给出操作数的地址信息。为了提高程序 的灵活性,8086指令系统提供了多种存储器寻 址方式。 (1)直接寻址 (2)寄存器间接寻址 (3)寄存器相对寻址 (4)基址变址寻址 (5)与I/O端口有关的寻址方式
?数据传送类指令?算术运算类指令?逻辑运算位操作类指令?串操作类指令?控制转移类指令?处理器控制类指令数据传送类指令?1通用数据传送指令?2累加器丏用传送指令?3地址传送指令?4标志寄存器传送指令通用数据传送指令?1传送指令mov?2堆栈指令pushpop?3数据交换指令xchg11传送指令mov语句格式
寄存器相对寻址
偏秱地址的计算方法
基址变址寻址方式是在指令中给出一个基址寄存 器名和一个变址寄存器名,两者内容之和作为操 作数的有效地址。基址寄存器为BX或BP,变址 寄存器为SI或DI,但指令中不能同时出现两个基 址寄存器或两个变址寄存器。如果基址寄存器为 BX,则段寄存器使用DS;如果基址寄存器用BP, 则段寄存器用SS。 汇编格式: [BR+IR] 功能:操作数存放在存储器,BR的内容加IR 的内容加位移量X是操作数的偏移地址EA。

AH送标志指令SAHF
语句格式:PUSHF 功能:将标志寄存器的内容压入堆栈。

标志寄存器进栈指令PUSHF
功能: 将栈顶内容弹出送入标志寄存器中。即 ↑(SP)→FLAGS。 POPF指令与PUSHF指令互为逆过程。

标志寄存器出栈指令POPF




数据交换指令XCHG
1)进栈指令PUSH 2)出栈指令POP 进栈指令PUSH 语句格式: PUSH OPS 功能:将寄存器、段寄存器或存储器中的一个字数据压入 堆栈,堆栈指针减2 出栈指令POP 语句格式: POP OPD 功能: 将栈顶元素弹出送至某一寄存器、段寄存器(除CS 外)或存储器,堆栈指针加2。 从POP指令功能可看出,该指令为PUSH指令的逆过程

通用数据传送指令 累加器丏用传送指令 地址传送指令 标志寄存器传送指令
数据传送类指令


(1)传送指令MOV (2)堆栈指令PUSH/POP (3)数据交换指令XCHG
(1)传送指令MOV 语句格式:MOV OPD,OPS
功能:将源操作数传送入目的地址,源地址内容丌变。即 (OPS)→OPD。 下图描述了MOV指令在传送数据时允许传送的路径及类型
相关文档
最新文档