版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、GLUT_C 2013-08 JCB1第第3章章 汇编伪指令与汇编语言程序设计汇编伪指令与汇编语言程序设计这部分内容,教材分散到第2章、第3章GLUT_C 2013-08 JCB23.1 汇编语言中的标记、表达式和伪指令汇编语言中的标记、表达式和伪指令3.1.1 汇编语言概况汇编语言概况由汇编程序执行的汇编过程GLUT_C 2013-08 JCB3汇编语言用指令助记符来表示机器语言。汇编语言编写的程序源程序。汇编语言中的指令与机器指令之间具有一一对应的关系。经过汇编后,得到目标代码。汇编语言是面向机器的语言。它的优点直接面向机器,硬件操作能力强,目标代码小,执行效率高。缺点:与其它高级语言相比
2、较,程序阅读、理解相对困难,可移植性差。下面看一段汇编语言程序例子GLUT_C 2013-08 JCB4DATASEGMENT;数据段定义开始;数据段定义开始 DAI DBINPUT STRING:$BUFDMA DB80HDUP (?)DATAENDS;数据段定义结束;数据段定义结束STACK SEGMENT;堆栈段定义开始;堆栈段定义开始 ME1 DB80HDUP(?)STACK ENDS;堆栈段定义结束;堆栈段定义结束CODE SEGMENT;代码段定义开始;代码段定义开始ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATASTART:MOV AX,DATA M
3、OV DS,AX MOV DX,OFFSET MEI MOV AH,09H INT21H MOV DX,OFFSET BUFDMA MOV AH,0AH INT21HCODE ENDS;代码段定义结束;代码段定义结束END;程序结束;程序结束程程序序例例GLUT_C 2013-08 JCB53.1.2 汇编语言指令的书写格式及标识符汇编语言指令的书写格式及标识符1. 指令书写格式指令书写格式标号:标号:指令助记符指令助记符 操作数,(操作数)操作数,(操作数) ;注释;注释(1 1)标号:又叫标识符。)标号:又叫标识符。 为可选项,它在指令助记符前,以为可选项,它在指令助记符前,以“:”结尾。
4、结尾。 标号是该指令在内存中存放的符号地址,转移指令,过程标号是该指令在内存中存放的符号地址,转移指令,过程调用指令通常使用该标号来作为目的地址。调用指令通常使用该标号来作为目的地址。 一个程序段的开头、一个数据段的开头一般会给出标识符。一个程序段的开头、一个数据段的开头一般会给出标识符。 子程序第一条指令、转移程序的转移目的需要给出标识符。子程序第一条指令、转移程序的转移目的需要给出标识符。GLUT_C 2013-08 JCB6 标号由n 英文字母、n 数字、 n 特殊字符:“_” ,“”, “ ?”,“$” 等组成,但应注意:l 第一个符号不能是数字;l “”、“?” 特殊字符不能单独做标
5、号。l 保留字不能作为标号使用。所谓保留字,就是所有的指令,伪指令以及汇编语言定义的特所谓保留字,就是所有的指令,伪指令以及汇编语言定义的特殊符号,例如殊符号,例如 ADD、LJMP 、 DB 等。等。 GLUT_C 2013-08 JCB7 标号不是每一条指令都必须的,只有需要时,指令前面才加标号。 所谓需要,就是转移指令的目的地址,或过程(子程序)的第一条指令,或其它目的。 标号的长度:不超过31位。GLUT_C 2013-08 JCB8例如:例如: START MY_CODE X ABCD1 ?001 L004 ABC MOVDATA都是有效的标号都是有效的标号GLUT_C 2013-0
6、8 JCB9而以下这些标号 4ABC 第一个字符是数字 MAIN! 使用了非法字符 ! STR=6 使用了非法字符 = A/B 使用了非法字符 / ? 问号不能单独作标号使用 MOV 使用了保留字 MOV 都是无效的标号。 保留字是指整个字符串,如果字符串中只有部分字符与保留字相同则没关系例如: A_MOV_B AND123等,都是有效标号。GLUT_C 2013-08 JCB10(2)指令助记符和操作数)指令助记符和操作数前面学过。GLUT_C 2013-08 JCB11(3)注释)注释 是可选项,它主要是为了增加程序的可读与可理解性,注释部分不影响程序的执行。 注释部分以 “;”号开始,可
7、以使用任何符号。 一行写不下,可以使用多行,凡是“;”后面的,都是注释。 注释放在一段程序之前,对这段程序进行说明。 或者放在指令之后,对这条指令执行的作用进行说明。GLUT_C 2013-08 JCB12DATA SEGMENT ;数据段定义开始DA1DB This is a sample program DB 0DH,0AH,$ DATA EMDS ;数据段定义结束 STACK SEGMENT ;堆栈段定义开始 ST1 DB 100DUB(?);定义100个字节 STACK ENDS GLUT_C 2013-08 JCB13CODE SEGMENT;代码段定义开始MAIN PROC FAR
8、 ASSUME CS: CODE,DS:DATA,SS:STACK;-;代码段开始,该段程序的功能是;-ORG 1000 START: PUSH DS ;程序代码开始 MOV AX,0 MAIN EMDP ;代码结束 CODE ENDS ;代码段定义结束 END START ;程序结束GLUT_C 2013-08 JCB142 保留字保留字汇编语言中用到的,不能给用户随意定义为其它功能的字符和字符串。例如:全部的指令助记符, 寄存器名 伪指令符号 表达式符号等。GLUT_C 2013-08 JCB153. 分界符分界符汇编语言程序设计中,作为程序,或一条指令中两个部分的分隔符用。例如 两个操作
9、数之间的分隔符 , 标号的分隔符 注释的分隔符GLUT_C 2013-08 JCB164. 常数常数在指令中,它就是立即数。可以使用各种数制,注意不同数制的表示方式。如果是字符串,需要用单引号括起来,例如ABCD它表示包含4个字符的字符转,分别用每个字符的ASCII码存放41H,42H,43H,44H1234表示的是字符串,存放31H,32H,33H,34HGLUT_C 2013-08 JCB175 表达式表达式(1). 表达式的组成:操作数和运算符。表达式的组成:操作数和运算符。(2). 操作数:可以代表一个数据,也可以代表一个操作数:可以代表一个数据,也可以代表一个地址。地址。 逻辑运算符
10、逻辑运算符 关系运算符关系运算符 分析运算符分析运算符 综合运算符综合运算符GLUT_C 2013-08 JCB186.运算符运算符(1)算术运算符)算术运算符包括包括 +; -; *; / ; 取模运算取模运算 MOD算术运算符、数据构成算术表达式,算术表达式与算术运算指算术运算符、数据构成算术表达式,算术表达式与算术运算指令有区别令有区别算术表达式在汇编时求出表达式的值,作为指令算术表达式在汇编时求出表达式的值,作为指令中的一个操作数。中的一个操作数。算术指令是在程序运行时执行算术指令是在程序运行时执行取模运算取模运算 MOD两数相除,取它的余数。两数相除,取它的余数。例如:例如: 20
11、MOD 7 结果为?结果为? 6 55 MOD 6 = 1GLUT_C 2013-08 JCB19(2) 逻辑运算符逻辑运算符包括:包括: 与(与(AND);或();或(OR),), 非(非(NOT),), 异或(异或(XOR)注:只能对常数进行,结果也是常数注:只能对常数进行,结果也是常数 他与指令的逻辑运算有区别他与指令的逻辑运算有区别该运算符在汇编时进行计该运算符在汇编时进行计算,而指令实在程序执行过程中进行运算。算,而指令实在程序执行过程中进行运算。例如例如 AND AX, 00FFHAND DX, PORT AND 0FEH逻辑表达式,汇编时逻辑表达式,汇编时计算出结果计算出结果逻辑
12、指令,程序执行逻辑指令,程序执行时起作用时起作用GLUT_C 2013-08 JCB20(3) 关系运算符关系运算符两个操作数的关系两个操作数的关系相等相等 EQ,不等,不等 NE,小于,小于 LT ,大于大于 GT, 小于或等于小于或等于 LE,大于,大于或等于或等于GE。参与运算的两个操作数必须都是数据,或者是同一段存储单元参与运算的两个操作数必须都是数据,或者是同一段存储单元的地址;的地址;结果是数据,关系成立,结果等于结果是数据,关系成立,结果等于 0FFFFH,或或0FFFF FFFFH如果关系不成立,结果等于如果关系不成立,结果等于 0例如:例如:MOV BX, PORT LT 3
13、如果确实如果确实 PORT 3, 则汇编后,得到的代码相当于指令则汇编后,得到的代码相当于指令MOV BX, 0FFFFHGLUT_C 2013-08 JCB21 反之,如果关系不成立,汇编后的机器代码相当于反之,如果关系不成立,汇编后的机器代码相当于MOV BX, 0关系运算符往往和逻辑运算符组合使用。关系运算符往往和逻辑运算符组合使用。例如例如MOV BX, (PORT LT 5) AND 20) OR (PORT GE 5 ) AND 30)如果是如果是 32位寄存器,结果位寄存器,结果0,或,或 0FFFF FFFFHGLUT_C 2013-08 JCB22(4). 分析运算符分析运算
14、符将存储单元的地址分解为段码和偏移值。将存储单元的地址分解为段码和偏移值。OFFSET取偏移地址取偏移地址例如例如 MOV DX, OFFSET DAT SEG取存储单元的段码(段基址)取存储单元的段码(段基址)例如:例如: MOV AX, SEG ABC MOV DS, AXTYPESIZE LENGTHGLUT_C 2013-08 JCB23(5). 综合运算符综合运算符主要要求掌握主要要求掌握 PTR与与BYTE,WORD,DWORD合用,定义存储单元的类型。合用,定义存储单元的类型。MOV BYTE PRT 1000, 12HMOV WORD PTR 1000H,12HGLUT_C 2
15、013-08 JCB243.1.3 语句语句汇编语言程序有一系列语句有序构成。汇编语言程序有一系列语句有序构成。两种语句两种语句1. 指令性语句指令性语句就是一条指令。例如就是一条指令。例如MOV AX,1234HADD AX,BX 2. 指示性语句指示性语句不产生机器指令代码的语句,又叫伪指令语句。不产生机器指令代码的语句,又叫伪指令语句。ABC DB 50H, 35HSEGMENT CODE 等等GLUT_C 2013-08 JCB25它们的区别:它们的区别:指令性语句对应着一条机器指令,汇编后会产生对应的机器指指令性语句对应着一条机器指令,汇编后会产生对应的机器指令代码令代码指示性语句只
16、为汇编过程提供某些信息,让汇编程序在汇编过指示性语句只为汇编过程提供某些信息,让汇编程序在汇编过程中执行某些特定的功能。程中执行某些特定的功能。指示性语句使用标号时,标号后不用冒号分隔符。指示性语句使用标号时,标号后不用冒号分隔符。最本质的区别:是否产生目标代码。最本质的区别:是否产生目标代码。GLUT_C 2013-08 JCB263.2 伪指令伪指令最常用的伪指令有:最常用的伪指令有:lCPU定义定义 . 586/.586 Pl标号赋值标号赋值 EQU;l定义存储单元定义存储单元 DB、DW、DD、DQ、DT;l定义存储类型定义存储类型 BYTE、WORD、DWORD;l段定义位指令段定义
17、位指令SEGMENT、ENDS、ASSUME和和ORG;l简约段定义位指令简约段定义位指令 DATA 、STACK、CODEl过程定义过程定义 PROC、ENDP、NEAR、FAR;l程序结束程序结束 ENDGLUT_C 2013-08 JCB27默认为默认为8086,如果不是,则需要定义。,如果不是,则需要定义。例如例如 .386 .586 .586 P3.2.1 确定确定CPU的伪指令的伪指令GLUT_C 2013-08 JCB283.2.2. 标号赋值伪指令标号赋值伪指令EQU定义标号或符号常数定义标号或符号常数比如:比如:ABC EQU 220XYZ EQU ABC程序设计中,对一些端
18、口,或常数,一般会定义一个符号常数,程序设计中,对一些端口,或常数,一般会定义一个符号常数,然后再源程序设计中使用符号常数。然后再源程序设计中使用符号常数。例如例如 COM1 EQU 3F8H COM2 EQU 2F8H LPT EQU 378HGLUT_C 2013-08 JCB29DB、DW、DD(2字)字)、DQ(4字既字既8字节)字节)、DT(10字节)字节)比如:比如:COUNT1 DT ?相当于语句相当于语句COUNT1 DB 10 DUP (?)3.2.3 定义存储单元的伪指令定义存储单元的伪指令GLUT_C 2013-08 JCB301. 字节定义伪指令字节定义伪指令DB(1)
19、格式: 名称 DB 注意:方括号 中的内容表示是可选项,(2)功能:定义字节型数据,数据表中的每个数据占据一个字节单元,从“名称”给出的符号地址开始存放,具体在内存中的存放地址由汇编程序安排。GLUT_C 2013-08 JCB31例:例:CR DB0DHLF DB0AHBUF_DIS DB?;预留一字节,不初始化;预留一字节,不初始化DO_2 DB 9 DUP (?)DONT DW10 DUP (?)TABLE DB00,01,03,02,06,04,05,07 DB 0FH,0EH,0CH,0DH,09 DB 0BH,0AH,08GLUT_C 2013-08 JCB32例如:例如:DAT
20、DB 02,01,03,04,05 DB 06, ?,08,09,10注注1:l名称与名称与DB之间留有至少一个空格,之间留有至少一个空格,lDB与第一个数据之间也要至少有一个空格,与第一个数据之间也要至少有一个空格,l数据表中的个数据之间用数据表中的个数据之间用“,”号隔开,号隔开,一行的最后一个数据后面不能有一行的最后一个数据后面不能有“,”号。号。l可以使用多行。可以使用多行。l数据按顺序存放。数据按顺序存放。l?号表示只保留存储单元,不定义初始化?号表示只保留存储单元,不定义初始化值值02DAT0103040506-0809 0A? 对应的字节对应的字节GLUT_C 2013-08 J
21、CB33注注2: 如果数据列表中的数据使用单引号如果数据列表中的数据使用单引号括起来的一个字符串括起来的一个字符串 例如例如 ST DB AB123它表示定义一个字符串。该字符串中它表示定义一个字符串。该字符串中的每个字符用它对应的的每个字符用它对应的ASCII码表示,码表示,并将其按顺序存放在以符号地址并将其按顺序存放在以符号地址ST开始的存储空间中开始的存储空间中 41ST42312233 每个字符占一个字节,每个字符占一个字节,用个字符的用个字符的ASCII码作码作为字符的值为字符的值GLUT_C 2013-08 JCB34注3:DUP表示重复例:DO_2 DB 9 DUP (?)表示连
22、续定义9个字节数据,均不初始化-DO_2-050505-DO_3DO_3 DB 3 DUP(5)连续定义连续定义3个字节数据,初始化个字节数据,初始化为为5GLUT_C 2013-08 JCB35用用DB定义的变量,在程序设计时,如果要取变量的值,可以直接写出变量,定义的变量,在程序设计时,如果要取变量的值,可以直接写出变量,汇编程序汇编时,能够确定是从变量存放的存储空间取数据,而不是立即寻汇编程序汇编时,能够确定是从变量存放的存储空间取数据,而不是立即寻址的立即数址的立即数。例如:计算有三个元素的数组例如:计算有三个元素的数组 Z=X+Y DATA SEGMMENT DATAXDB 34H,
23、56H,78HYDB 01H,09H,06HZ DB 3 DUP (?);DATA ENDSCODE SEGMENTSTART:MOV AX, DATA;取段开始地址 MOV DS,AX;开始地址送数据段基址寄存器DS MOV AL,X;取变量X的第一个数据,AL=34H ADD AL,Y;Al的内容与变量Y的第一个值相加,执行后;AL=34H+01H=35HMOV Z,ALMOVAL,X+1;AL=56HGLUT_C 2013-08 JCB36ADDAL,Y+1 ;AL=56H+09H=5FHMOVZ+1,AL ;MOVAL, X+2ADDAL,Y+2MOVZ+2,ALCODE ENDSEN
24、D如果要去如果要去X、Y、Z的偏移地址,使用的偏移地址,使用MOVBX, OFFSET X或使用或使用LEA BX, X指令中的寄存器BX可以是任何一个通用寄存器。 对于DW、DD、DQ、DT位指令定义的变量 与此类似进行存取。 X345678Y010906Z355F7EGLUT_C 2013-08 JCB372 字定义伪指令字定义伪指令(1)格式:)格式: 名称名称 DW (2)功能:定义)功能:定义16位的字型数据,数据表中的每个数位的字型数据,数据表中的每个数据占据据占据2个字节,按地址增加的方向顺序存放。个字节,按地址增加的方向顺序存放。例如:例如:ABCD DW 01H,02H,12
25、34H, DW 5678H,0ABCDH每个字的数据占用每个字的数据占用2个字节,低字节在前高字节在后。个字节,低字节在前高字节在后。为了字对齐,在自定义前可以使用对齐伪指令为了字对齐,在自定义前可以使用对齐伪指令lEVEN(偶数地址)(偶数地址) l或者或者 ALIGN Numb ;Numb=1,2,4,8,1601ABCD00020034127856CD ABGLUT_C 2013-08 JCB38例例 ABC DB ABC12345EVEN;偶数地址;偶数地址EFG DW 6,8,9或者或者ABC DB ABC12345ALIGN 2;2字节对齐字节对齐EFG DW 6,8,9GLUT_
26、C 2013-08 JCB393 四字节定义伪指令四字节定义伪指令 (1)格式:)格式: 名称名称 DD (2)功能:定义)功能:定义4字节的数据,数据表中的数据从符号地址开字节的数据,数据表中的数据从符号地址开始,每个数据占据始,每个数据占据4个字节个字节,每个字从低位开始按顺序存放。每个字从低位开始按顺序存放。例如:例如:ABCD DD 12345678H ,23456789H ,3456789AH DD 456789ABH,56789ABCH,6789ABCDH为了双字对齐存放,在为了双字对齐存放,在DD指令前可以使用指令前可以使用ALING 4GLUT_C 2013-08 JCB40例
27、:例:ABC DB 01,02,03,04,05ALIGN 4;四字节(双字)对齐四字节(双字)对齐ABCD DD 12345678H ,23456789H ,3456789AH DD 456789ABH,56789ABCH,6789ABCDHGLUT_C 2013-08 JCB414. 8字节定义伪指令字节定义伪指令(1)格式:名称 DQ (2)功能:定义8字节的数据。 数据表中的数据从符号地址开始,每个数据占据8个字节。GLUT_C 2013-08 JCB425 10字节定义伪指令字节定义伪指令(1)格式:)格式: 名称名称 D (2)功能:定义)功能:定义10字节的数据。字节的数据。 数
28、据表中的数据从符号地址开始,每个数据占据数据表中的数据从符号地址开始,每个数据占据10个字节。个字节。GLUT_C 2013-08 JCB433.2.4 复制操作伪指令复制操作伪指令(1)格式:)格式: DUP (2)功能:)功能:重复定义数据。重复定义数据。例如:例如: ABCD DB 3DUP (1,2,3)表示连续定义表示连续定义3组一样的数据,在内存中的组一样的数据,在内存中的存放存放 它可以在字节型、字型它可以在字节型、字型等中使用。等中使用。01H02HABCD03H01H02H03H01H02H03HGLUT_C 2013-08 JCB44可以使用问号可以使用问号“?”表示未确表
29、示未确定的数据,只是预留存储单元。定的数据,只是预留存储单元。例如:例如:CDEF DW 2DUP (?,(?,2)重复重复2组,每组组,每组2个字型(个字型(16位)位)数据,第一个数据不进行初始数据,第一个数据不进行初始化,第二个数据为化,第二个数据为0002H-CDEF02H00H-02H00HGLUT_C 2013-08 JCB453.2.5 段定义伪指令段定义伪指令8086/8088存储器是分段管理的,每个逻辑段长度不大于存储器是分段管理的,每个逻辑段长度不大于64KB。程序、数据、堆栈通常存放在各自不同的分段中。当程序代程序、数据、堆栈通常存放在各自不同的分段中。当程序代码较长,或
30、需要分块编写时,程序也可以存放在不同的分段中。码较长,或需要分块编写时,程序也可以存放在不同的分段中。这些段需要用段定义伪指令进行说明与控制。这些段需要用段定义伪指令进行说明与控制。GLUT_C 2013-08 JCB46格式:格式:段名段名 SEGMENT 定位方式定位方式连接方式连接方式类别名类别名 段名段名 ENDS 它们成对使用。它们成对使用。 功能:定义一个逻辑段,指定段的名字和范围,段在内存中的功能:定义一个逻辑段,指定段的名字和范围,段在内存中的起始地址,段与段之间的连接关系。起始地址,段与段之间的连接关系。段的属性可选,如果选择,各项的顺序不能错,且用空格分开段的属性可选,如果
31、选择,各项的顺序不能错,且用空格分开GLUT_C 2013-08 JCB471 定位方式:有定位方式:有4种种可选。可选。(1)PAGE方式:方式:段起始地址的低段起始地址的低8位全是位全是0。定义为页的开始地址,规定每页定义为页的开始地址,规定每页256字节,故低字节,故低8位地址为位地址为0(2)PARA方式:方式:段起始地址的低段起始地址的低4位全是位全是0。 定义为节的开始地址,规定每节定义为节的开始地址,规定每节16字节,故低字节,故低4位地址为位地址为0(3)WORD方式:方式:段起始地址的低段起始地址的低1位全是位全是0。在字对准方式,字地址的为偶数地址,故地位地址为在字对准方式
32、,字地址的为偶数地址,故地位地址为0(4)BYTE方式:方式:段起始地址可以是任何地址。段起始地址可以是任何地址。如果不选择,使用如果不选择,使用默认方式默认方式PARAGLUT_C 2013-08 JCB482 连接方式连接方式:告诉连接程序,所定义的段与其它段如何进行连接。共有告诉连接程序,所定义的段与其它段如何进行连接。共有6种连接方式。种连接方式。(1)NONE :本段与其它逻辑段没有关系,有独立的段:本段与其它逻辑段没有关系,有独立的段地址。地址。这是隐含的方式。这是隐含的方式。例如:例如: DATA SEGMENT X DB 20H ALIGN 2;字对齐;字对齐 Y DW 123
33、4H DATA ENDSGLUT_C 2013-08 JCB49(2)PUBLIC:告诉连接程序,将本段与其它同名同类别的:告诉连接程序,将本段与其它同名同类别的段连接在一起,形成一个物理段。这样,连接在一起的段具有段连接在一起,形成一个物理段。这样,连接在一起的段具有共同的段起始地址,但具有不同的偏移地址。共同的段起始地址,但具有不同的偏移地址。连接次序由连接命令指定。连接次序由连接命令指定。这也说明,段定义可以在程序中定义多个,可以重名。这也说明,段定义可以在程序中定义多个,可以重名。GLUT_C 2013-08 JCB50例如:DATA1 SEGMENT PUBLIC X DB 10HD
34、ATA1 ENDSDATA1 SEGMENT PUBLIC Y DW 2345HDAT1 ENDS是两个同名、同类别的段,连接时,将合成一个段。是两个同名、同类别的段,连接时,将合成一个段。GLUT_C 2013-08 JCB51(3)STACK : 表示是堆栈段。连接方式同PUBLIC。每个程序至少有一个堆栈段,如果没有指定,则连接程序会报错,同时取约定的堆栈段。(4)COMMNON:与其它同名同类别段公用一个物理段,具有相同的段地址,程序运行时产生覆盖,即用完后,他又被其它程序使用。这种覆盖技术可以节省内存。(5)MEMORY:该段定义在其它所有段之上,即定位在高地址处。如果定义了多个这样
35、的段,则连接程序将第一个遇到的段作为该类型段,其它则作为COMMON段处理。GLUT_C 2013-08 JCB52(6)AT:表达式是可以求出16位值的,该方式告诉连接程序:直接将段定义在16位的表达式的值。GLUT_C 2013-08 JCB533 类别名 用单引号 括起来的符号。它与标号的定义规则相同。它是程序员起的一个与段名不同的另一个名字信息。作用:程序中所有的类别相同的段将被组成一个段组,该段组以他们共同的类别作为名字。常用的类别:STACK CODE DATA 例如:STACK SEGMENT PARA STACK STACKSATPN DB 100 DUP (?)STACK E
36、NDSGLUT_C 2013-08 JCB543.2.6 段寄存器说明伪指令教材上又叫做假定伪指令。教材上又叫做假定伪指令。格式:格式: ASSUME SEG:段名:段名,SEG:段名:段名2功能:功能: 告诉汇编程序,在汇编时,各段寄存器所对应的逻辑段基告诉汇编程序,在汇编时,各段寄存器所对应的逻辑段基址。址。除代码段外,所有段寄存器的实际值必须用传送指令在程序运除代码段外,所有段寄存器的实际值必须用传送指令在程序运行时进行赋值。行时进行赋值。GLUT_C 2013-08 JCB55例:例:NAME SAMPLE DATA SENMENT X DB 10H ENEN;字对齐字对齐 Y DW
37、2020H DATA ENDS STACK SEGMENT DW 128 DUP (?) STACK ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA,SS:STACK代码段,寄存器代码段,寄存器CS DATA段,寄存器段,寄存器DSGLUT_C 2013-08 JCB56START: MOV AX,DATA ;数据段开始地址;数据段开始地址 MOV DS,AX MOV AX, STACK ;堆栈段开始地址;堆栈段开始地址 MOV SS, AX CODE ENDS ;代码段结束;代码段结束END START ;程序结束;程序结束GLUT_C 2013-08
38、 JCB57ASSUME 伪指令的说明(1)位置在代码段内。第一个ASSUME语句紧跟段代码段定义语句后。它定义当前段段寄存器。(2)如果没有新的ASSUME伪指令重新定义,则原有定义一直有效。(3)不在当前段内的变量和数据存储单元是不可访问的。(4)ASSUME伪指令不产生目标代码,仅告诉汇编程序,哪些段是当前段,分别与哪个段寄存器关联。(5)如果在程序中间用ASSUME定义了新的DS或ES关联段,则紧跟着该伪指令后,应该将新的段的首地址送DS或ES。(6)汇编程序利用该伪指令给出的信息产生正确的目标代码。GLUT_C 2013-08 JCB583.2.7 定位伪指令定位伪指令1.ORG 格
39、式: ORG 功能:告诉汇编程序,后面的程序或数据从表达式指定的地址开始存放。2EVEN3格式:4 EVEN 5功能:告诉汇编程序,后面的程序或数据从偶数地址开始存放。6如果前面存放,留有一个奇数地址,则空下。GLUT_C 2013-08 JCB59例如:DATA SEGMENT X DB 10H EVEN Y DW 0200H ORG 06H Z DB A DATA ENDS假设开始地址为0000H,则数据的存放。10H-0000H00H02H41H0001H0002H0003H0007H0004H0005H0006H0008HGLUT_C 2013-08 JCB603. 对齐伪指令ALIGN(1) 格式:格式: ALIGN Num 其中:中:Num必须是必须是2的幂,如:的幂,如:1、2、4、8和和16等。等。(2)作用:)作用:告诉
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年集团新员工安全培训内容进阶秘籍
- 公司晚餐工作总结报告2026年专项突破
- 2026年个体工商户财税代理合同协议
- 2026年采石安全培训内容包括核心要点
- 武汉市汉阳区2025-2026学年第二学期五年级语文第五单元测试卷(部编版含答案)
- 玉溪市澄江县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 齐齐哈尔市讷河市2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 鹤岗市兴山区2025-2026学年第二学期五年级语文第六单元测试卷(部编版含答案)
- 伊犁哈萨克自治州昭苏县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 咸阳市兴平市2025-2026学年第二学期五年级语文第五单元测试卷(部编版含答案)
- 《涉外法治概论》课件 杜涛 -第1-6章 涉外法治的基础理论-涉外经济管理法律制度
- 全国工程机械维修工职业技能竞赛理论考试题库(含答案)
- 产前筛查培训
- 第七章-淀粉制糖
- 高中阶段学校实际就读证明(格式)
- 部编版语文二年级下册第1单元核心素养教案
- 铁总建设201857号 中国铁路总公司 关于做好高速铁路开通达标评定工作的通知
- HEC-RAS初步教程课件
- 非物质文化遗产的分类
- 回转窑设计手册
- YY/T 1494-2016血液透析及相关治疗用浓缩物包装材料通用要求
评论
0/150
提交评论