收藏 分享(赏)

第四章伪指令及汇编语言源程序结构.ppt

上传人:ysd1539 文档编号:7176911 上传时间:2019-05-08 格式:PPT 页数:51 大小:507.50KB
下载 相关 举报
第四章伪指令及汇编语言源程序结构.ppt_第1页
第1页 / 共51页
第四章伪指令及汇编语言源程序结构.ppt_第2页
第2页 / 共51页
第四章伪指令及汇编语言源程序结构.ppt_第3页
第3页 / 共51页
第四章伪指令及汇编语言源程序结构.ppt_第4页
第4页 / 共51页
第四章伪指令及汇编语言源程序结构.ppt_第5页
第5页 / 共51页
点击查看更多>>
资源描述

1、1,第四章 伪指令及汇编语言程序格式,4.1 汇编语言语句格式,4.2 伪指令(伪操作),4.3 汇编语言源程序结构,4.4 汇编语言上机过程,2,第四章 伪指令及汇编语言程序格式,本章重点: 1、常用伪指令 2、汇编语言源程序结构 3、汇编语言程序的上机过程,3,4.1.1 语句种类,例:编程实现BUF1和BUF2两个字节单元中的数据相加,和放到SUM所指向的字节单元。,4.1 汇编语言语句格式,MOV AL, BUF1 ;取第一个加数ADD AL, BUF2 ;两数加MOV SUM, AL ;和放入SUM单元,DATA SEGMENT ;DATA段定义开始BUF1 DB 34H BUF2

2、DB 27HSUM DB ? DATA ENDS ;DATA段定义结束 CODE SEGMENT ;CODE段定义开始ASSUME CS:CODEASSUME DS:DATA ;段性质规定 START: MOV AX,DATA MOV DS,AX ;给DS赋值MOV AL, BUF1 ;取第一个加数ADD AL, BUF2 ;两数加MOV SUM, AL ;和放入SUM单元MOV AH,4CH INT 21H ;返回DOS CODE ENDS ;CODE段定义结束END START ;源程序结束,5,一、语句格式,二、标号,表示一条指令所在的单元的地址,在CS段用。,标号属性,4.1.2 语句

3、格式,6,表示数据所在的单元的地址,在DS、SS、ES段用。,变量属性,例:BUF DB 12H,注:同一程序中,同一标号和变量不能重复定义。,三、变量,7,1、可以是AZ,az,数字,特殊符号(?、)。,2、不以数字开头。,3、单独?不能作标识符。,4、长度31。,5、保留字不能做标号或变量。,四、标号和变量定义规则,指令中的助记符,指明操作性质和功能。,六、操作数,1、常数,1)数值常数比如立即数,直接寻址中的地址。,MOV AL , 12H,五、操作码,MOV AL , 1200H,用单引号或双引号引起来的一个或多个字符。字符串常量是以各字符的ASC码表示的。,如:字符串A1B2用41H

4、,31H,42H,32H表示。,MOV AL ,A,2)字符串常数,3)符号常数,COUNT EQU 3,MOV AL , COUNT等价于 MOV AL, 3,1)算术运算符,例:MOV AL, 20 MOD 7 ;数值表达式MOV SI, OFFSET BUF1+1 ;地址表达式,注:1)两地址相减:两地址间字节单元的个数;2)地址整数:另一单元地址;3)地址整数:另一单元地址。,2、表达式,例:MOV AL, 31H AND 0FH等价于 MOV AL ,01H,注:1)该运算符只用于数值表达式。2) 逻辑运算符在汇编阶段完成;逻辑运算指令在程序执行阶段完成。,2)逻辑运算符,例:MOV

5、 AL, 31H EQ 0FH等价于 MOV AL ,00HMOV AL, 31H NE 0FH等价于 MOV AL ,0FFH,七、注释项以;开始。,3)关系运算符,13,伪操作是汇编程序对源程序进行汇编时处理的操作,完成处理器选择、存储模式定义、数据定义、存储器分配、指示程序开始结束等功能。,符号定义伪指令数据定义伪指令段定义伪指令程序开始和结束伪指令,4.2 伪指令(伪操作),14,一、EQU 等值伪指令,格式:符号名 EQ 表达式,功能:为常量、表达式或其他符号定义一个等价的符号名。,例:X1 EQU 25 ;常数X2 EQU X1+12 ;表达式X3 EQU X1 ;已经定义的符号X

6、4 EQU ADD ;指令助记符X5 EQU CX ;寄存器MOV AX, X5 等价于 MOV AX,CX,注:同一符号须先解除再定义。,4.2.1 符号定义伪指令,格式:符号名 表达式,功能:为常量、表达式及其他各种符号定义一个等价的符号名,并能对所定义的符号多次重复定义,且以最后一次定义的值为准。,例:COST = 20M = MOVLOST = COST+10 ;30LOSTM = ADD ;M=ADD,注:“”伪指令的格式和功能与EQU类似。 二者区别:在同一程序中,“”可以对一个符号重复定义,EQU不能对同一符号重复定义。,二、 等号伪指令,格式:PURGE ,功能:解除指定符号的

7、定义。,例:X1 EQU 25PURGE X1X1 EQU 30,三、解除定义伪指令,17,格式:变量 助记符 操作数 ,;注释,功能:为操作数分配存储单元,类型由助记符确定。,一、常用助记符,4.2.2 数据定义伪指令 常用助记符,18,例:DATA1 DB -1, 20H,二、操作数,1、常数、表达式,FFH 20H,20H 00H 65H 3AH,DATA2 DW 20H, 3A65H,DATA3 DD 20H,20H 00H 00H 00H,注:1)操作数可用各种进制写,汇编程序将其转换成相应补码存入内存。2)同一操作数,助记符不同,所占的内存空间也不同。3)数据的高字节在高地址单元,

8、低字节在较低的内存单元。,4.2.2 数据定义伪指令操作数,41H 42H 43H 44H,41H 42H,注:当字符串中字符个数多于2个时,助记符只能用DB。,42H 41H,例:STR1 DB ABCD,STR2 DB AB,STR3 DW AB,STR DW BACDEF (),2、字符串,12H45H,20H 00H34H 12H,功能:只分配内存单元,不定义初值。,STR2 DW 20H , ? , ? , 1234H,例:STR1 DB 12H , ? , 45H,3、?,00H02H,01H 02H 01H 02H,例:STR1 DB 0, 2 DUP (?), 2,STR2 D

9、B 2 DUP (01H, 02H),功能:使操作数重复若干次。,4、含DUP,22,4.2.2 数据定义伪指令,1、分析运算符,1)OFFSET 运算符,功能:把某一存储单元的地址分解,格式:OFFSET 变量或标号 功能:分离出其后变量或标号的偏移地址。,三、变量、标号的分析运算和合成运算,23,例: BUF DB 2DHMOV BX,OFFSET BUF,三、变量、标号的分析运算和合成运算,24,三、变量、标号的分析运算和合成运算,格式:SEG 变量或标号 功能:分离出其后变量或标号的段地址。,例:BUF DB 2DHMOV AX,SEG BUF,2)SEG 运算符,25,三、变量、标号

10、的分析运算和合成运算,格式: TYPE 变量或标号 功能:分离出其后变量或标号的类型,3)TYPE 运算符,26,三、变量、标号的分析运算和合成运算,格式:LENGTH 变量 功能:计算分配给用DUP定义的变量的单元个数; 其它变量 LENGTH=1。,4)LENGTH 运算符,27,三、变量、标号的分析运算和合成运算,例:DATA SEGMENTA DB ABCDEFB DW 10 DUP(1,2DUP(2)C DB 3,20 DUP(0)DATA ENDSMOV AX,LENGTH A ;1AXMOV BX,LENGTH B ;10BXMOV CX,LENGTH C ;1CX,28,三、变

11、量、标号的分析运算和合成运算,格式: SIZE 变量 功能:计算分配给变量的字节数,SIZE= LENGTH*TYPE,例:DATA SEGMENTA DB ABCDEFB DW 10 DUP(1,2DUP(2)C DB 3,20 DUP(0)DATA ENDS,SIZE A = LENGTH A*TYPE A = 1 SIZE B = LENGTH B*TYPE B = 20 SIZE C = LENGTH C*TYPE C = 1,5)SIZE 运算符,例:DATA SEGMENTDAB1 DB 20, 20, 20, 20, 20,DAB2 DB 5 DUP(20)DAW1 DW 20,

12、 20, 20, 20, 20,DAW2 DW 5 DUP(20)DAD1 DD 20, 20, 20, 20, 20,DAD2 DD 5 DUP(20)DATA ENDSMOV AX,SIZE DAB1MOV BX,SIZE DAW2,TYPE DAB1 = TYPE DAB2 = TYPE DAW1= TYPE DAW2= TYPE DAD1 = TYPE DAD2 =,LENGTH DAB1 = LENGTH DAB2 = LENGTH DAW1= LENGTH DAW2= LENGTH DAD1 = LENGTH DAD2 =,SIZE DAB1 = SIZE DAB2 = SIZE

13、DAW1= SIZE DAW2= SIZE DAD1 = SIZE DAD2 =,1 1 2 2 4 4,1 5 1 5 1 5,1 5 2 10 4 20,30,三、变量、标号的分析运算和合成运算,1)PTR 运算符,功能:改变原有变量或标号类型。,格式: PTR 功能:给变量或标号指定类型。,例:MOV BYTE PTR 1000H, 0 MOV WORD PTR 1000H, 0,2、合成运算符,31,三、变量、标号的分析运算和合成运算,34H 12H,例: X DW 1234H ;X代表一个字单元,MOV AX, X ;AX=1234H MOV AL, X1 ;AL=34H MOV A

14、L, X2 ;AL=12H,X1 EQU BYTE PTR X ;X1代表一个字节单元,X2 EQU BYTE PTR X1 ;X2代表一个字节单元,32,三、变量、标号的分析运算和合成运算,功能:给变量或标号指定类型,不分配新的存储单元。 寻址空间与后面变量的寻址空间同。,例:DAB EQU THIS BYTEDAW DW 4567H ;DAB和DAW具有相同的段地址和偏移量, DAB为字节变量, DAW为字变量。,等价于: DAW DW 4567H DAB EQU BYTE PTR DAW,2)THIS 运算符,33,MOV AX,DAB MOV AX,DAW MOV AL,DAB MOV

15、 AL,DAW MOV AX,WORD PTR DAB MOV AL,BYTE PTR DAW,例:DATA SEGMENTDAB DB 20H,33HDAW DW 1234HDATA ENDS,; ; AX=1234H ; AL=20H ; AX=3320H; AL=34H,四、变量类型与操作数类型匹配,34,4.2.3 段定义伪指令, SEGMENT ;段体ENDS,注:SEGMENT和ENDS前的标号可任意,但配对必须相同。,一、 段定义,35,4.2.3 段定义伪指令,二、段性质规定,ASSUME : ,: ,注:除CS段外,段寄存器的实际值必须用MOV指令赋予。,三、设置段地址值,M

16、OV AX, DATA MOV DS, AX ;设置数据段段地址,例:编程实现把数据段BUF1单元中的数据送扩展段BUF2单元。DATA SEGMENT ;DATA段定义开始BUF1 DB 34H DATA ENDS ;DATA段定义结束 EXTRA SEGMENT ; EXTRA段定义开始BUF2 DB ? EXTRA ENDS ; EXTRA段定义结束 CODE SEGMENT ;CODE段定义开始ASSUME CS:CODE, DS:DATAASSUME ES:EXTRA ;段性质规定,START: MOV AX,DATA MOV DS,AX ;设置数据段段地址MOV AX,EXTRA

17、MOV ES,AX ;设置扩展段段地址MOV AL, BUF1 ;从数据段取数据MOV ES:BUF2, AL ;送扩展段存储MOV AH,4CH INT 21H ;返回DOS CODE ENDS ;CODE段定义结束END START ;源程序结束,38,格式: ORG 数值表达式,功能:规定目标程序存放单元的偏移量。一般段内偏移地址从0开始,可用ORG设置某单元起始地址。,例:DATA SEGMENT ORG 10 ; 置值为10X1 DW 100HORG +2 ;置的值为12+2,即14X2 DB 11H,12HDATA ENDS,$:地址计数器,指向下一可用单元。,4.2.4 置汇编地

18、址计数器伪指令ORG,39,4.2.4 置汇编地址计数器伪指令ORG,例: X1 DB 01H, 02H, 03HCNT1 EQU X1 ;CNT1为X1存储单元元素个数,01H 02H 03H,31H 01H 02H 00H,X2 DW 0131H, 0002H CNT2 EQU (X2)/2 ;CNT2为X2存储单元元素个数,40,格式: END 表达式,注:表达式通常为程序第一条指令前的标号,可省略。,功能:该语句标志整个程序的结束,是源程序的最后一条语句。,4.2.5 源程序结束伪指令,41,DATA SEGMENT ;DATA段定义开始 DATA ENDS ;DATA段定义结束 EX

19、TRA SEGMENT ; EXTRA段定义开始 EXTRA ENDS ; EXTRA段定义结束 STAK SEGMENT ; STAK段定义开始 STAK ENDS ; STAK段定义结束 CODE SEGMENT ;CODE段定义开始ASSUME CS:CODE, DS:DATAASSUME ES:EXTRA, SS:STAK ;段性质规定,4.3 汇编语言源程序结构,42,4.3 汇编语言源程序结构,START: MOV AX,DATA MOV DS,AX ;设置数据段段地址MOV AX,EXTRA MOV ES,AX ;设置扩展段段地址MOV AX,STAK MOV SS,AX ;设置

20、堆栈段段地址 CODE ENDS ;CODE段定义结束END START ;源程序结束,43,4.4 汇编语言上机过程,1、用EDIT.COM建立ASM文件C:masmEDIT *.ASM,2、用MASM.EXE产生OBJ文件C:masm MASM *.ASM,3、用LINK.EXE产生EXE文件C:masmLINK *.OBJ,4、用DEBUG.COM调试程序 C:masmDEBUG *.EXE,一、汇编语言上机过程,44,1、A 命令,格式:A Address,功能:逐行汇编命令。,1)如不指定地址,且前面无汇编命令,语句被汇编到 CS:0100H开始的存储单元。,2)如不指定地址,前面有

21、汇编命令,语句被汇编紧接 前一条汇编语句的后一存储单元。,注:在DEBUG状态下键入的数字均为16进制,不用加H。,二、常用DEBUG命令,格式:D 段地址:偏移量D 段地址:偏移量 偏移量 ;显示指定范围的内存内容。,功能:显示指定内存单元的内容。,例:D 12A0:0000,3、U 命令,格式:U ;接上一U命令继续反汇编。U 段地址:偏移量U 段地址:偏移量 偏移量,功能:反汇编。,例:U 12A0:0100 0120,2、D 命令,例: DATA SEGMENTBUF DB 10H,11HSUM DB ? DATA ENDS CODE SEGMENTASSUME CS:CODE, DS

22、:DATA START:MOV AX,DATAMOV DS,AXMOV AX ,0MOV SI,OFFSET BUFMOV AL,SIADD AL,SI+1MOV SUM,ALMOV AH,4CHINT 21H CODE ENDSEND START,格式:GCS:IP ;从CS:IP处执行。GCS:IP1 IP2 ;从CS:IP1执行到IP2。,功能:执行命令。,例:G0C08:0120 0136,5、R 命令,格式:R ;显示各寄存器内容以及下一条要执行的指令的地址、内容。R 寄存器 ;显示某寄存器的内容。,功能:显示寄存器的内容。,4、G 命令,48,标志寄存器各位表示的含义,格式:E 段地址:偏移量,功能:修改指定地址单元中的内容。,(1)连续修改多个字节。 例:E 1418:0100 ;修改完一个后按空隔键,可连续修改多个单元的内容,6、E 命令,(2) 用给定的内容代替指定范围的内存单元的内容。 例:E 1418:0100 abcdE 1418:0100 12 34 61 62,格式:T ;单步执行。T n ;连续执行n条指令。,功能:单步执行命令。,8、Q 命令,格式:Q ;返回DOS。,7、T 命令,51,习 题,P53 习题3 3.2; 3.3; 3.4; 3.5,

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

当前位置:首页 > 网络科技 > C/C++资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报