《宏汇编语言小结》PPT课件.ppt

上传人:牧羊曲112 文档编号:5493502 上传时间:2023-07-13 格式:PPT 页数:55 大小:299.49KB
返回 下载 相关 举报
《宏汇编语言小结》PPT课件.ppt_第1页
第1页 / 共55页
《宏汇编语言小结》PPT课件.ppt_第2页
第2页 / 共55页
《宏汇编语言小结》PPT课件.ppt_第3页
第3页 / 共55页
《宏汇编语言小结》PPT课件.ppt_第4页
第4页 / 共55页
《宏汇编语言小结》PPT课件.ppt_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《《宏汇编语言小结》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《宏汇编语言小结》PPT课件.ppt(55页珍藏版)》请在三一办公上搜索。

1、母亲卡,宏汇编语言 小结,宏汇编语言格式表达式(*)8086基本指令系统 常用的汇编伪指令,宏汇编语言格式,1 指令语句格式2 伪指令语句格式,1 指令语句格式,指令语句的一般格式如下:标号:指令助记符 操作数;注释标号:标号是机器指令语句存放地址的符号表示,代表该指令目标代码的第一个字节地址,后面必须紧跟冒号“:”。指令助记符:指令助记符为语句的核心成分,表示了该语句的操作类型。操作数:操作数表示指令助记符的操作对象。注释:注释均以分号开始,它可占一行或多行,一般放在一条语句的后面。,2 伪指令语句格式,伪指令语句格式如下:符号名 伪指令符 操作数;注释符号名:符号名是伪指令语句的一个可选项

2、。伪指令符:伪指令符指定汇编程序要完成的具体操作,如数据定义伪指令DB、DW、DD,段定义伪指令SEGMENT,假定伪指令ASSUME等。操作数:伪指令后面的操作数可以是常数、字符串、变量、表达式等,其个数由具体的伪指令决定,各个操作数之间必须以“逗号”分隔。注释:伪指令的注释必须以“;”开始,其作用同指令语句中的注释部分。,汇编语句表达式,1 常量2 数值表达式3 变量4 标号,1 常量,1)数值常量2).符号常量,1)数值常量,表3.1 各种形式数字常量格式对照表,数值类型常量有二进制、八进制、十进制和十六进制数字形式和字符串形式的常量。,字符串常量是用单引号或双引号引起来的一个或多个字符

3、。字符串常量是以各字符的ASC码表示的。如A用41H 表示,字符串A1B2用41H,31H,42H,32H表示。,字符串形式的常量,2).符号常量,对经常使用的数值常量可以先为它定义一个名字,然后在语句中用名字来表示该常量。符号常量需要用等价伪指令EQU和等号伪指令“=”来定义。,等价伪指令的基本格式为:,符号名 EQU 表达式例:VAL EQU 100;表达式为一个常数 NUM EQU VAL+50;表达式为一个数值表达式 OPE EQU ADD;表达式为一个指令助记符,等号伪指令的基本格式为:,符号名=常数表达式例:COUNT=50 MOV BX,COUNT;等价于MOV BX,50,注意

4、:EQU语句不能重复定义,而“=”伪指令可以重复定义,其作用域从定义点到重新定义之前。,2 数值表达式,数值表达式,算术运算符包括:(加)、(减)、*(乘)、(除)、MOD(求模)几种,它既可以用于数值表达式又可用于地址表达式。,1)算术运算符,算术操作符例:,逻辑运算符包括:逻辑乘(AND)、逻辑加(OR)、按位加(XOR)、逻辑非(NOT)四种运算;另外还有SHL(左移)、SHR(右移)运算。由于逻辑运算是按位操作,且在汇编过程中完成,因而运算的结果仍为整数常量。,2)逻辑运算符,;AND AX,1,IN AL,PORT_VAL;61HOUT PORT_VAL AND 0FEH,AL;60

5、H,MOV AX,0FFFFH SHL 2,;MOV AX,0FFFCH,关系运算符包括:相等(EQ),不等(NE),小于(LT),大于(GT),小于等于(LE)及大于等于(GE)。【例】用关系运算符进行数值表达式运算。NUM1DB10 LT 5;NUM1=0NUM2DB0AAAAH GT 7FFFH;NUM2=0FFH MOVAX,A EQ 41H;0FFFFHAX MOVBX,NUM2 LT NUM1;0BX,3)关系运算符,4)数值回送操作符 OFFSET、SEG、TYPE、LENGTH、SIZE,SIZE 变量功能:LENGTH*TYPE,OFFSET/SEG 变量/标号功能:回送变量

6、或标号的偏址/段址,TYPE 变量/标号/常数 DB DW DD DF DQ DT NEAR FAR 常数 1 2 4 6 8 10-1-2 0,LENGTH 变量功能:回送由DUP定义的变量的单元数,其它情况回送1,ARRAY DW 100 DUP(?)TABLE DB ABCD ADD SI,TYPE ARRAY;ADD SI,2ADD SI,TYPE TABLE;ADD SI,1MOV CX,LENGTH ARRAY;MOV CX,100MOV CX,LENGTH TABLE;MOV CX,1MOV CX,SIZE ARRAY;MOV CX,200MOV CX,SIZE TABLE;MO

7、V CX,1,属性操作符 PTR、段前缀操作符、SHORT、THIS、HIGH、LOW、HIGHWORD、LOWWORD,HIGH和LOW CONS EQU 1234H MOV AH,HIGH CONS MOV AL,LOW CONS,类型 PTR 表达式 MOV WORD PTR BX,5段前缀操作符 MOV ES:BX,ALSHORT 标号 JMP SHORT NEXT,THIS 类型 TA EQU THIS BYTE TD DW 1234H NEXT EQU THIS FAR MOV AX,2,3 变量,1)变量2)变量的定义,(1)段属性(2)偏移地址属性(3)类型属性,1)变量,变量

8、是一个数据存储单元的名字。由于汇编语言中存储单元是分段使用的,所以变量具有三个属性:,变量定义伪指令:在汇编语言中变量的主要类型有字节(BYTE)、字(WORD)、双字(DWORD)、四字(QWORD)和十字节(TBYTE)。对应的变量定义伪指令即有:DB、DW、DD、DQ、和DT。,2)变量的定义,格式:变量名 变量定义伪指令 表达式,表达式:表达式项是给变量或指定存储单元赋予初值,它有以下几种形式:(1)数值表达式(2)字符串表达式(3)地址表达式(只适用DW和DD两个伪指令)(4)?表达式(5)带DUP的表达式,变量定义伪指令可以为一个或连续的存储单元设置数值初值。【例】为数据段分配存储

9、单元。DATASEGMENTADB11H,12H,13HBDW1122H,3344HCDD12345678HDATAENDS上述变量的存储单元分配及初始化情况如下图3.1所示。,(1)数值表达式,图3.1 数据段中数据存储分配图,字符串表达式中的字符串必须用引号引起来。DB、DW、DD伪指令将字符串中的各字符均以ASC码形式存放在相应的存储单元,但表示形式各不相同。【例】为字符串分配存储单元。DATASEGMENTSTR1DB1234STR2DWAB,CD,ASTR3DDABDATAENDS其存储单元分配如下图3.2所示。,(2)字符串表达式,图3.2 数据段存储分配图,(3)地址表达式(只适

10、用DW和DD两个伪指令)如果该地址表达式为一变量(或标号)名,用DW伪指令则是取它的偏移地址来初始化变量,用DD伪指令则是取它的段首址和偏移地址来初始化变量。例如:BUF1DWA BUF2DDB,在表达式中使用重复数据操作符DUP,可以为连续的存储单元提供重复数据,其格式为:N DUP(表达式)其中N为重复因子,只能取正整数,表示定义了N个重复数据存储单元,其类型由它前面的数据定义伪指令确定,而每个数据存储单元中的初值由DUP后面圆括号中的表达式给定。例如:BUF DB 100 DUP(0)以上语句定义了以BUF为首址,大小为100个字节,初值为0的数据存储单元。,(5)带DUP的表达式,综合

11、举例,DATA SEGMENT A DW M BUF DB AB,0DH,0AH CON EQU 500H B DW 0FFAAH D DD BUF M DB 2 DUP(1),A DUP(2,B),123,1,2,3DATA ENDS,4 标号,标号是一条指令语句的符号地址。在汇编源程序中,只有在需要转向一条指令语句时,才为该指令语句设置标号,以便在转移类指令(含子程序调用指令)中直接引用这个标号。因此,标号可作为转移类指令的操作数,即转移地址。【例】符号地址表示。NEXT:MOVAL,SI;带标号NEXT的指令 DEC CX JNE NEXT;标号NEXT作转移指令的操作数,1段属性2偏移

12、地址属性3类型属性,标号也具有三种属性,伪指令(伪操作),1 数据定义伪指令2 符号定义伪指令3 段定义伪指令SEGMENT/ENDS4 假定伪指令ASSUME5 地址计数器与对准伪操作6 基数控制伪操作7 源程序结束伪指令,1 数据定义伪指令,常用的数据定义伪指令有DB,DW,DD,DQ,DT。格式:变量名数据定义伪指令表达式,功能:定义数据存储区,类型由数据定义伪指令确定,初值由表达式给定。,2 符号定义伪指令,1)等价伪指令2)等号伪指令3)定义符号名伪指令,1)等价伪指令,格式:符号名 EQ 表达式功能:为常量、表达式及其他各种符号定义一个等价的符号名,但它不申请存储单元。用途:用符号

13、表示常量、数值表达式,即定义符号常量。使用符号常量可使程序简单明了,增强程序的可读性和通用性。EQU与属性运算符PTR或THIS联合使用,可以给变量或标号定义新的类型属性并重新命名,但保持其段偏移地址属性不变。利用EQU可以用一个符号名替代一个复杂的地址表达式和其他一些符号,如指令助记符、变量名、标号、段名、寄存器名、宏定义名等。,2)等号伪指令,格式:符号名=表达式功能:为常量、表达式及其他各种符号定义一个等价的符号名,并能对所定义的符号多次重复定义,且以最后一次定义的值为准。【例】定义等价符号名。COST=20COST=COST+10;30LOST,3)定义符号名伪指令Label,格式:变

14、量名或标号 LABEL 类型功能:定义与原有变量类型不同的新变量或为指令语句定义有指定类型的标号。通常与数据定义伪指令连用,其功能类似语句“变量名或标号 EQU THIS 类型”。【例】定义新类型的变量。DDBUFLABEL DWORDBUFDB 200 DUP(0)A LABEL FARB:LEA DX,BUF,3 段定义伪指令SEGMENT/ENDS,段定义的一般格式为:段名 SEGMENT 定位类型 组合类型 类别.段名 ENDS,说明:汇编语言中的段定义伪指令等指示汇编程序把合适的连接信息写入到目标模块中,连接程序再根据目标模块中的连接信息进行连接操作。,1段名段名是为该段起的名字,用

15、来指出汇编程序为该段分配的存储区起始位置。,2定位方式定位方式表示当前段对起始地址的要求,从而指示连接程序如何衔接相邻的两段。(1)PARA:表示本段必须从能被16整除的地址处开始存放,即段起始地址最低四位必须是0。(2)WORD:表示本段要从一个偶数地址处开始存放,即段起始地址的最低一位必须是0。(3)BYTE:表示本段起始地址可以从任一地址处开始存放。(4)PAGE:表示本段要从能被256整除的地址处开始存放,即起始地址的最低八位必须是0。,组合方式用于通知连接程序,如何把不同模块内段名相同的段组合到一起。组合方式有五种类型可供选择。(1)PRIVATE表示 本段与其他段逻辑上不发生关联,

16、尽管在物理地址上可能相邻,但每段都有自己的段首址,这是隐含的组合类型。(2)PUBLIC 表示将本段与其他模块中的同名、同类别段按各模块连接的顺序相邻地连接在一起,组成一个物理段,该段大小不能超过64K。(3)STACK 与PUBLIC同样处理,但在运行时,该段作为堆栈段。(4)COMMON 表示本段和同名、同类别的其他段应具有相同的段首址,即将本段与这些段相覆盖,覆盖长度取决于最长的COMMOM段。,3组合方式,(5)AT表达式表示将本段装在根据表达式求值得到的16位的段地址上,这个表达式可以是任何一个有效的常数,使用这个组合类型可以很方便地实现在某一个固定存储区(如ROM区或中断向量区)内

17、的固定偏移地址处定义标号或变量,这样源程序就能以标号和变量的形式访问这些固定的存储单元。,4类别,类别用于表示段的分类,link程序总是使类别相同的段相邻。实际上只有类别相同的同名段才根据组合类型进行组合。类别是一个由程序员指定的字符串,必须用单引号括起来。如果一个段没有给出类别,那么这个段的类别就为空。,【例3】有两个模块,各模块段定义如下:,模块1:DATA1SEGMENT PARA PUBLIC DATA1M1DB 45H DUP(0)DATA1ENDSDATA2SEGMENT PARA COMMON DATA2N1 DB 102H DUP(0)DATA2ENDSEND,模块2:DATA

18、1SEGMENT PARA PUBLIC DATA1M2DB 104H DUP(11H)DATA1ENDSDATA2SEGMENT PARA COMMON DATA2N2DB 105H DUP(0)DATA2ENDSDATA3SEGMENTT1DB 50 DUP(20H)DATA3ENDSEND,该段的定位组合方式示意图如图3.3所示。,图3.3 模块1、模块2连接后段的定位组合方式示意图,4 假定伪指令ASSUME,格式:ASSUME 段寄存器:段名,段寄存器:段名功能:建立段寄存器与段之间的对应关系。该伪指令一般出现在代码段中。【例】用ASSUME伪指令建立段与段寄存器之间的对应关系。DA

19、TA1SEGMENTADB 1,2,3DATA1ENDSSTACKSEGMENT STACKDB200 DUP(0)STACKENDSDATA2SGEMENTBDB 123ABC,DATA2ENDSDATA3SEGMENTCDB?,?,?DATA3ENDSCODESEGMENTASSUMEDS:DATA1,ES:DATA2,CS:CODE,SS:STACKSTART:MOVAX,DATA1 MOVDS,AX;DATA1DS MOVAX,DATA2 MOVES,AX;DATA2ES ASSUME ES:DATA3 MOVAX,DATA3 MOVES,AX;DATA3ES,Q1:MOVAL,AQ2

20、:MOVC,AL ASSUME DS:DATA2;建立DS与DATA2段的对应关系MOVAX,DATA2MOVDS,AX MOVAL,BMOVC,ALCODEENDS ENDSTART,5 地址计数器与对准伪操作,地址计数器$:保存当前正在汇编的指令的地址 ORG$+8;跳过8个字节的存储区 JNE$+6;转向地址是 JNE 的首址+6 JMP$+2;转向下一条指令$用在伪操作的参数字段:表示地址计数器的当前值,ARRAY DW 1,2,$+4,3,4,$+4,ORG 伪操作:SEG1 SEGMENT ORG 10 VAR1 DW 1234H ORG 20 VAR2 DW 5678H ORG$

21、+8 VAR3 DW 1357HSEG1 ENDSBUFFER LABEL BYTE ORG$+8 BUFFER DB 8 DUP(?),ORG 100HSTART:,B DW 2 DUP(?)ALIGN boundary ALIGN 4 ALIGN 2;EVEN,EVEN;使下一地址从偶地址开始A DB morning,EVEN,6 基数控制伪操作,.RADIX 表达式;规定无标记数的基数,MOV BX,0FFHMOV BX,178.RADIX 16MOV BX,0FFMOV BX,178D,7 源程序结束伪指令,格式:END 表达式功能:该语句标志整个程序的结束,是源程序的最后一条语句。,本章结束,谢谢!,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号