IBM汇编语言第4章:汇编语言程序格式课件_第1页
IBM汇编语言第4章:汇编语言程序格式课件_第2页
IBM汇编语言第4章:汇编语言程序格式课件_第3页
IBM汇编语言第4章:汇编语言程序格式课件_第4页
IBM汇编语言第4章:汇编语言程序格式课件_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

内容摘要汇编程序功能伪操作汇编语言程序格式上机过程第四章汇编语言程序格式语句的种类:指令语句:又称为机器指令语句,是可经过汇编程序翻译成机器代码的指令,是可执行语句伪操作语句:又称为伪指令语句或汇编控制命令语句,不会被翻译成目标代码,是告诉汇编程序如何工作的命令,是非执行语句宏指令语句:以宏定义名为助记符的指令语句,是可执行语句4.2伪操作

数据定义伪指令

符号定义伪指令

段定义伪指令

过程定义伪指令

程序模块的定义与通讯伪指令

宏定义伪指令

条件汇编伪指令

格式控制、列表控制及其它功能伪指令4.2伪操作8086宏汇编语言包括如下几类伪指令:4.2.1处理器选择伪操作.8086

选择8086指令系统.286

选择80286指令系统.286P

选择保护方式下的80286指令系统.386

选择80386指令系统.386P

选择保护方式下的80386指令系统.486

选择80486指令系统.486P

选择保护方式下的80486指令系统.586

选择Pentium指令系统.586P

选择保护方式下的Pentium指令系统注:这类伪操作一般放在整个程序的最前面,若未给出,则默认是.80864.2.2段定义伪操作segmentnameSEGMENT[align_type][combine_type][use_type][‘class’]…segmentnameENDS功能:定义了一个以SEGMENT伪操作开始,以ENDS伪操作结束,以段名命名的存储段。其定位类型、组合类型、使用类型、‘类别’为赋给段名的属性。1.完整的段定义伪操作语句格式:可有可无:若有,则各项的顺序不能错,且用空格分隔引号不能省例4.1data_seg1segment;definedatasegmentdata_seg1endsdata_seg2segment;defineextrasegmentdata_seg2endscode_segsegment;definecodesegment

assumecs:code_seg,ds:data_seg1,es:data_seg2start:movax,data_seg1movds,axmovax,data_seg2moves,ax…code_segends

endstart4.2.2段定义伪操作注:段名是为该段起的名字,用来指出汇编程序为该段分配的存储区起始位置,它有段地址和偏移地址两个属性4.2.2段定义伪操作(1).定位类型(align_type):说明段的起始位置应有怎样的边界值

PARA:指定段的起始地址必须从小段边界开始,即段起始址的最低一个十六进制数位必须为0,偏移地址可以从零开始。若未指定定位类型,则默认是PARABYTE:该段可以从任何地址开始,起始偏移地址可能不是零WORD:该段必须从字的边界开始,即段起始地址必须为偶数,也就是段起始地址的最低一个二进制数位必须为0

DWORD:该段必须从双字的边界开始,即段起始地址最低二个二进制数位必须为0

PAGE:该段必须从页的边界开始,即段起始地址最低二个十六进制数位必须为04.2.2段定义伪操作(2).组合类型(combine_type):说明程序连接时的段合并方法

PRIVATE:该段为私有段,在连接时将不与其他模块中的同名分段合并。若组合类型缺省时,默认为PRIVATE

PUBLIC:该段连接时可以把不同模块中的同名段相连接而形成一个段,其连接次序由连接命令指定。每一分段都从小段的边界开始,因此各模块的原有段之间可能存在小于16个字节的间隙

COMMON:该段在连接时可以把不同模块中的同名段重叠而形成一个段,由于各同名分段有相同的起始地址,所以会产生覆盖。COMMON的连接长度是各分段中的最大长度。重叠部分的内容取决于排列在最后一段的内容

ATexpression:使段地址是表达式所计算出来的16位值,但它不能用来指定代码段

MEMORY:与PUBLIC同义

STACK:把不同模块中的同名段组合而形成一个堆栈段,该段的长度为各原有段的总和,各原有段之间无PUBLIC所连接段中的间隙,而且桟顶可自动指向连接后形成的大堆栈段的桟顶4.2.2段定义伪操作(3).使用类型(use_type):只适用于386及其后继机型,用来说明使用16位寻址方式还是32位寻址方式

USE16:使用16位寻址方式,若使用类型缺省时,则默认是USE16USE32:使用32位寻址方式4.2.2段定义伪操作(4).类别类型(‘class’):在引号中给出连接时组成段组的类型名,类别说明并不能把相同类别的段合并起来,但在连接后形成的装入模块中,将把类别相同的所有段(它们不一定同名)存放在连续的存储区中,先出现的在前,后出现的在后(但仍然是不同的段)且每段都有自己的起始地址4.2.2段定义伪操作例2:ASEGMENTPARAPUBLIC‘SEG1’A1DB55HDUP(0)AENDSBSEGMENTPARACOMMON‘SEG2’B1DB202HDUP(0)BENDS…0000H:0000H0000H:0054H0000H:0060HA段C段0017H:0000H0000H:0162H0017H:0201H0038H:0000HB段ASEGMENTPARAPUBLIC‘SEG1’A2DB103HDUP(0FFH)AENDSBSEGMENTPARACOMMON‘SEG2’B2DB104HDUP(0)BENDSCSEGMENTCCDB100HDUP(33H)CENDS0000空11个字节0FFH0FFH空13个字节0000空14个字节33H33H………0038H:00FFHA1A2B1和B2CC模块1模块2…4.2.2段定义伪操作ASSUMEsegmentregistername:segmentname[,segmentregistername:segmentname]功能:该语句一般出现在代码段中,用来设定段寄存器与段之间的对应关系,在程序中使用这条语句后,宏汇编程序就将这些段作为当前可访问段处理2.假定伪操作语句格式:CS:段名[,SS:段名,DS:段名,ES:段名,FS:段名,GS:段名]4.2.2段定义伪操作说明:(1)CS:段名必须要写,否则会出错(2)一旦用ASSUME说明了当前段,就应立即将段首址送入相应的段寄存器中;代码段首址装入CS中是在程序初始化时由系统自动设置的,其它的都要通过指令完成4.2.2段定义伪操作grpnameGROUPsegname[,segname]功能:把不同段组成一个段组,以便在程序中对定义在不同段中的变量,都可以用同一个段寄存器进行访问3.段组定义伪操作语句格式:例4.5:END[lable]功能:表示源程序的结束,其中标号lable指示程序开始执行的起始地址语句格式:4.2.3程序开始和结束伪操作例:Win32汇编程序的基本结构.386.MODELFlat,C;说明使用段的情况.DATA………;定义有初始化值的变量.DATA?………;定义没有进行初始化的变量.CONST………;定义常量.CODE<label>;定义第一条指令的地址

………;代码End<label>;表示源程序的结束4.2.4数据定义及存储器分配伪操作[Variable]MnemonicOperand,…,Operand[;Comments]语句格式:(a)变量:是一个数据存储单元的名字,数据存放地址的符号表示,即数据单元的符号地址

属性:(1)段属性:指变量所在段的段地址(即属于哪一段),在DS、ES、SS、FS或GS中(2)偏移属性:定义变量的位置到段地址之间的字节数,是16位无符号数或32位无符号数(3)类型属性:定义该变量所保留的字节数,即存放数据的长度,如DB、DW、DD、DF、DQ、DT字节字双字3字4字5字386及其后继机型4.2.4数据定义及存储器分配伪操作(b)操作数:允许出现以下类型的操作数(1)操作数是常数或数字表达式例4.7DATA_BYTEDB10,4,10HDATA_WORDDW100,100H,-5DATA_DWDD3*20,0FFFDH4.2.4数据定义及存储器分配伪操作(b)操作数:允许出现以下类型的操作数(2)操作数可以是字符串例4.8MESSAGEDB‘HELLO’DATA1DB‘AB’DATA2DW‘AB’

注:类型为DB时才能定义长度超过2个字符的字符串例:

要定义一个字符串‘ABCD’,则

STRINGDW‘ABCD’×STRINGDB‘ABCD’4.2.4数据定义及存储器分配伪操作(b)操作数:允许出现以下类型的操作数(3)操作数?:表示所定义的变量无确定初值例4.9ABCDB0,?,?,?,0DFFDW?,52,?4.2.4数据定义及存储器分配伪操作(b)操作数:允许出现以下类型的操作数(4)操作数字段用复制操作符DUP格式:nDUP(表达式)重复因子,正整数,定义了n个数据存储单元每个数据存储单元的初值例4.10ARRAY1DB2DUP(0,1,2,?)ARRAY2DB100DUP(?)DUP可嵌套例4.11ARRAY3DB100DUP(0,2DUP(1,2),0,3)4.2.4数据定义及存储器分配伪操作若变量类型为DW,则取值为地址表达式的偏移地址;若变量类型为DD,则低字取值为地址表达式的偏移地址,高字取值为地址表达式的段地址若变量类型为DF,则低2个字取值为地址表达式的偏移地址,第3个字取值为地址表达式的段地址386及其后继机型具有16位段地址和32位偏移地址构成的48位远地址例4.12:例4.13(b)操作数:允许出现以下类型的操作数(5)操作数字段出现变量或标号,也就是出现了地址表达式:取其偏移地址值参加运算例4.12:PAR1DW?PAR2DW?PAR3DW?DATA1DW?DATA2DW?PARAMETER_TABLEDWPAR1DWPAR2DWPAR3INTERSEG_DATADDDATA1DDDATA2例4.12:PAR1DW?PAR2DW?PAR3DW?DATA1DW?DATA2DW?PARAMETER_TABLEDWPAR1,PAR2,PAR3INTERSEG_DATADDDATA1,DATA2错误原因:类型不匹配4.2.4数据定义及存储器分配伪操作注:1.变量仅代表本数据存储区中的第一个数据存储单元的偏移地址例4.14:

OPER1DB?,?OPER2DW?,?

…MOVOPER1,0MOVOPER2,0例4.15:

OPER1DB1,2OPER2DW1234H,5678H

…MOVAX,OPER1+1MOVAL,OPER22.

变量的类型必须与指令的要求相符4.2.5符号定义伪操作语句格式:Expression_nameEQUExpression(1)表达式赋值伪操作EQU功能:也称为等价伪指令,用来为常量、表达式及其它各种符号定义一个等价的符号名,但它并不申请分配存储单元①为常量定义一个符号名,也就是符号常量例1:

CONSTANTEQU256ALPHAEQU7BETAEQUALPHA-2好处:使程序简单明了,可读性强,增强程序的通用性必须先定义4.2.5符号定义伪操作(1)表达式赋值伪操作EQU②利用EQU命令为较复杂的表达式及源程序中的任何符号,定义一个替换名DATAEQUHEIGHT+12;地址表达式赋以符号名BEQU[BP+8];变址引用赋以符号名BP8EQUDS:[BP+8];加段前缀的变址引用赋以符号名P8例3:4.2.5符号定义伪操作语句格式:Expression_name=Expression(2)等号伪操作=功能:与EQU语句类似区别:“=”允许重复定义“EQU”不允许重复定义例:EMP=7……EMP=EMP+1…不能用EQU注:同一符号名不能同时用EQU和=伪指令来分别定义4.2.5符号定义伪操作语句格式:variable_name/label_nameLABELtype(3)定义符号名伪操作LABEL功能:为下一个存储单元定义一个指定类型的变量或标号,等价于variable_name/lable_nameEQUTHIStype注:为variable_name定义的type有:BYTE、WORD、DWORD、FWORD、QWORD、TBYTE;为label_name定义的type有:NEAR、FAR,对于16位段,NEAR为2字节,FAR为4字节,对于32位段,NEAR为4字节,FAR为6字节4.2.5符号定义伪操作(3)定义符号名伪操作LABEL例4.16:BYTE_ARRAYLABELBYTEWORD_ARRAYDW50DUP(?)…MOVWORD_ARRAY+2,0;该数组的第3个和第4个字节置0MOVBYTE_ARRAY+2,0;该数组的第3个字节置0例:OUT1LABELFAR;定义了一个远标号UUT1EXIT:LEADX,BUF;EXIT为近标号…4.2.6地址计数器与对准伪操作1、地址计数器$功能:用来记录正在被汇编程序翻译的语句的地址,也就是其内容标出了汇编程序当前的工作位置注:①当$用在指令中时,表示本条指令的第一个字节的地址

②当$用在伪操作的参数字段时,表示地址计数器的当前值说明:汇编程序将源程序翻译成目标程序时,每遇到一个新的段,就为该段分配一个初值为0的汇编$,然后,再对该段中的语句汇编,对凡是需要申请分配存储单元的语句和产生目标代码的语句,汇编$则按该语句目标代码的长度增值4.2.6地址计数器与对准伪操作1、地址计数器$例1:1000:2543JNE$+6…1000:2549MOVAX,BX…例4.17:ARRAYDW1,2,$+4,3,4,$+4例2:DATASEGMENTBUFDB‘12345ABCD’COUNTEQU$-BUFARRAYDW1,$,2+$,4-10DATAENDS;COUNT的值就是BUF数据区所占的字节数4.2.6地址计数器与对准伪操作2、ORG伪操作功能:表达式的值是下一个存储单元的偏移地址注:若程序中没有设置“ORG”语句,一般情况每个逻辑段的起始地址为0000H说明:

该语句可以设置在程序段、数据段的任何位置语句格式:ORG

constantexpression4.2.6地址计数器与对准伪操作2、ORG伪操作例1:DATASEGMENTORG100HXDB12HYDW?DATAENDS例2:VECTORSSEGMENTORG10VECT1DW47A5HORG20VECT2DW0C596HDATAENDS;X的EA=100H;Y的EA=101H;VECT1的EA=0AH;VECT2的EA=14H4.2.6地址计数器与对准伪操作2、ORG伪操作例3:DATASEGMENTORG100HXDB12HYDW?ORG$+8ZDD12345678HDATAENDS;表示跳过8个字节的存储区,如果要访问此存储区,则可以BUFFERLABELBYTEORG$+8BUFFERDB8DUP(?)4.2.6地址计数器与对准伪操作3、EVEN伪操作例:DATASEGMENTEVENWORD_ARRAYDW100DUP(?)DATAENDS功能:指定下一个变量或指令开始于偶数字节地址说明:

用该伪操作可以保证字数组从偶数地址开始……这样,访问该字内容只需访问一次内存4.2.6地址计数器与对准伪操作4、ALIGN伪操作例:DATASEGMENTALIGN4ARRAYDD25DUP(?)DATAENDS功能:保证双字数组边界从4的倍数开始说明:

其中boundary必须是2的幂,当它等于2时就等价于EVEN伪操作……语句格式:ALIGN

boundary4.2.7基数控制伪操作例:MOVBX,0FFHMOVBX,0FDHMOVBX,178功能:把默认的十进制改变为2~16范围内的任何基数说明:

expression表示基数值(用十进制数表示)语句格式:.RADIX

expression.RADIX16MOVBX,0FFMOVBX,0FDHMOVBX,178D4.3汇编语言程序格式[name]operationOperand[;Comments]语句格式:语句的种类:指令语句:又称为机器指令语句,是可经过汇编程序翻译成机器代码的指令,是可执行语句伪操作语句:又称为伪指令语句或汇编控制命令语句,不会被翻译成目标代码,是告诉汇编程序如何工作的命令,是非执行语句宏指令语句:以宏定义名为助记符的指令语句,是可执行语句可有可无4.3.1名字项名字:由字母A~Z(a~z),数字0~9,特殊字符?、·

、@、_、$组成的字符串,不能以数字开始,最长31个字符,如用·,则必须是第一个字符(1)标号:是机器指令语句存放地址的符号表示,即一个指令单元的符号地址,也可以是过程名(符号地址)属性:(a)段属性:指定义标号所在段的段地址(即属于哪一段),在CS中(b)偏移属性:定义标号处到段地址之间的字节数,是16位无符号数,在IP中或是32位无符号数(c)类型属性:在代码段中定义,后跟“:”NEARPTR说明:段内直接引用(默认类型)FARPTR说明:段间直接引用即缺省不写时为NEAR型4.3.1名字项名字:由字母A~Z(a~z),数字0~9,特殊字符?、·

、@、—

、$组成的字符串,不能以数字开始,最长31个字符(2)变量:是一个数据存储单元的名字,数据存放地址的符号表示,即数据单元的符号地址

属性:(a)段属性:指变量所在段的段地址(即属于哪一段),在DS、ES、SS、FS或GS中(b)偏移属性:定义变量的位置到段地址之间的字节数,是16位无符号数或32位无符号数(c)类型属性:定义该变量所保留的字节数,即存放数据的长度,如DB、DW、DD、DF、DQ、DT字双字3字4字5字386及其后继机型字节

后不跟“:”4.3.1名字项名字:由字母A~Z(a~z),数字0~9,特殊字符?、·

、@、—

、$组成的字符串,不能以数字开始,最长31个字符注:①变量或标号不能重名

②名字不能与保留关键字相同

③不分大小写如操作符、寄存器名、运算符4.3.2操作项操作项(或操作码项):指令助记符:汇编程序将其翻译成机器指令伪指令助记符:汇编程序将按其要求处理宏指令助记符:汇编程序将其宏展开,再翻译成机器指令

助记符:一条指令操作码的符号表示4.3.3操作数项操作数项:可以是常数、寄存器、标号、变量或由表达式组成(1)常数:(a)数字常数:二进制数(B)、十进制数(D)、十六进制数(H)、八进制数(O或Q)注:十六进制的第一位若是“A”~“F”,则在前面加“0”例:0F6HF6H表示十六进制数表示标号或变量MOVBL,0A7H;0A7H是个常数BLMOVBL,A7H;A7H是个变量:(A7H)BL4.3.3操作数项(1)常数:(b)字符串常数:‘字符串’或“字符串”存在内存中是其ASCⅡ码值例:常用字符

ASCⅡ码值‘A’~‘Z’

41H~5AH‘a’~‘z’

61H~7AH‘0’~‘9’

30H~39H(c)符号常数:用EQU或“=”定义的符号常量MOVCX,COUNT…COUNTEQU100H……例:4.3.3操作数项(2)表达式:常数、寄存器、标号、变量与一些运算符和操作符相组合的序列(a)数字表达式:用常数、符号常数和算术、逻辑、关系运算符组成的表达式例:(75*2+X)/Y(b)地址表达式:由变量、标号、常数、寄存器、“+”、“-”运算符和方括号组成的表达式意义:表示一个常数例:DATA+5VARY[BX][BX][SI+BP][BX+DI-6]意义:用以表示存储单元地址,即表示一个存储器操作数4.3.3操作数项(2)表达式:常数、寄存器、标号、变量与一些运算符和操作符相组合的序列地址表达式应注意以下几点:MOVAX,SI+5①地址表达式中,不允许出现不带方括号的寄存器符号×MOVAX,[SI+5]例:②在数据定义语句中,如果操作数是地址表达式,则该表达式不能带寄存器符号和方括号ERRODW[SI+3]例:×③在数据定义语句中,如果操作数中出现变量或标号,则是取其EA值参加运算4.3.3操作数项(2)表达式:常数、寄存器、标号、变量与一些运算符和操作符相组合的序列(c)运算符和操作符:1)算术操作符:+、-、*、/、MOD例:19MOD7=MOD:取余运算5例4.18:例4.19:可用于数字和地址表达式中4.3.3操作数项(c)运算符和操作符:2)逻辑与移位操作符:NOT、AND、OR、XOR、SHL、SHR例4.20:INAL,PORT_VALOUTPORT_VALAND0FEH,AL逻辑运算符移位运算符按位操作,只能用于数字表达式中移位操作符格式:expressionSHL(或SHR)numshift功能:汇编程序将expression左移(或右移)numshift位,如果移位数大于15,则结果为0例4.21:ANDDX,PORT_VALAND0FEH符号常量4.3.3操作数项(c)运算符和操作符:3)关系操作符:EQ、NE、LT、GT、LE、GE例4.22:MOVBX,((PORT_VALLT5)AND20)OR((PORT_VALGE5)AND30)定义:关系成立——0FFFFH

关系不成立——0当PORT_VAL<5时,汇编结果:MOVBX,20当PORT_VAL≥5时,汇编结果:MOVBX,304.3.3操作数项(c)运算符和操作符:4)数值回送操作符:把特征或存储区地址的一部分作为数值回送,主要有TYPE、LENGTH、SIZE、OFFSET、SEG例4.23:ARRAYDW1,2,3对于ADDSI,TYPEARRAY

TYPE格式:TYPE

expression功能:表示表达式的类型码如表达式是变量,其回送值是1,2,4,6,8,10(字节)

如表达式是标号,其回送值是-1,-2

如表达式是常数,其回送值是0立即寻址DBDWDDDFDQDTNEARFAR4.3.3操作数项(c)运算符和操作符:例4.24:FEESDW100DUP(0)对于MOVCX,LENGTHFEES

LENGTH格式:LENGTH

Variable例4.25:ARRAYDW1,2,3对于MOVCX,LENGTHARRAY例4.26:TABLEDB‘ABCD’

对于MOVCX,LENGTHTABLE4)数值回送操作符:把特征或存储区地址的一部分作为数值回送,主要有TYPE、LENGTH、SIZE、OFFSET、SEG功能:表示为变量分配的单元数如变量中使用DUP,则回送分配给该变量的单元数否则,其回送值是1立即寻址4.3.3操作数项(c)运算符和操作符:

SIZE格式:SIZE

Variable4)数值回送操作符:把特征或存储区地址的一部分作为数值回送,主要有TYPE、LENGTH、SIZE、OFFSET、SEG功能:回送分配给该变量的字节数=LENGTHVariable*TYPEVariable例4.24:FEESDW100DUP(0)对于MOVCX,SIZEFEES例4.25:ARRAYDW1,2,3对于MOVCX,SIZEARRAY例4.26:TABLEDB‘ABCD’

对于MOVCX,SIZETABLE立即寻址4.3.3操作数项(c)运算符和操作符:例4.27:MOVBX,OFFSETOPER_SEG

OFFSET格式:OFFSET

Variable或Label功能:回送变量或标号的偏移地址值4)数值回送操作符:把特征或存储区地址的一部分作为数值回送,主要有TYPE、LENGTH、SIZE、OFFSET、SEG立即寻址LEABX,OPER_SEG4.3.3操作数项(c)运算符和操作符:例4.28:MOVBX,SEGOPER1

SEG格式:SEG

Variable或Label功能:回送变量或标号的段地址值4)数值回送操作符:把特征或存储区地址的一部分作为数值回送,主要有TYPE、LENGTH、SIZE、OFFSET、SEG立即寻址4.3.3操作数项(c)运算符和操作符:5)属性操作符:主要有PTR、段操作符、SHORT、THIS、HIGH、LOW、HIGHWORD、LOWWORD

PTR格式:type

PTRexpression功能:临时定义存储单元的类型或变量/标号的类型(type)=BYTE、WORD、DWORD、FWORD、QWORD、TBYTE、FAR、NEAR注:表达式为地址表达式;表达式的段属性和偏移属性不变;4.3.3操作数项(c)运算符和操作符:5)属性操作符:主要有PTR、段操作符、SHORT、THIS、HIGH、LOW、HIGHWORD、LOWWORD

PTRMOV[BX],5×;类型不明确例:×;5不是地址表达式MOVAL,BYTEPTRBLOCKMOVBX,BLOCKJMPFARPTRNEXTMOVAL,SI×;类型不匹配×;SI不是地址表达式MOVBYTEPTR[BX],5MOV[BX],BYTEPTR5MOVAL,BYTEPTRSIMOVAX,SI4.3.3操作数项(c)运算符和操作符:5)属性操作符:主要有PTR、段操作符、SHORT、THIS、HIGH、LOW、HIGHWORD、LOWWORDPTR与EQU连用:可以给变量/标号定义新的类型属性,段属性和偏移属性不变例4.29:TWO_BYTEDW?ONE_BYTEEQUBYTEPTRTWO_BYTEOTHER_BYTEEQUBYTEPTR(TWO_BYTE+1)OTHER_BYTEEQUBYTEPTR(ONE_BYTE+1)OTHER_BYTEEQUONE_BYTE+14.3.3操作数项(c)运算符和操作符:5)属性操作符:主要有PTR、段操作符、SHORT、THIS、HIGH、LOW、HIGHWORD、LOWWORD段操作符:表示一个标量、变量或地址表达式的段属性表示形式:段寄存器:地址表达式(即段跨越前缀)

段名:地址表达式组名:地址表达式4.3.3操作数项(c)运算符和操作符:5)属性操作符:主要有PTR、段操作符、SHORT、THIS、HIGH、LOW、HIGHWORD、LOWWORDSHORT:表示JMP指令中转向地址的属性,是短跳转4.3.3操作数项(c)运算符和操作符:5)属性操作符:主要有PTR、段操作符、SHORT、THIS、HIGH、LOW、HIGHWORD、LOWWORD

THIS格式:variable_name/lable_name

EQUTHIStype功能:与伪指令EQU连用,具有与PTR类似的功能,为下一个存储单元定义一个指定类型的变量或标号,等价于variable_name/lable_nameLABLEtype(type)=BYTE、WORD、DWORD、FWORD、QWORD、TBYTE、FAR、NEAR4.3.3操作数项(c)运算符和操作符:5)属性操作符:主要有PTR、段操作符、SHORT、THIS、HIGH、LOW、HIGHWORD、LOWWORD

HIGH和LOW格式:HIGH常量或地址表达式

LOW常量或地址表达式功能:HIGH取其后的常量或地址表达式的高位字节LOW取其后的常量或地址表达式的低位字节4.3.3操作数项(c)运算符和操作符:5)属性操作符:主要有PTR、段操作符、SHORT、THIS、HIGH、LOW、HIGHWORD、LOWWORD

HIGH和LOW例:CONSTEQU0ABCDHMOVAH,HIGHCONSTMOVAL,LOWCONST例:ADW1234HMOVAL,LOWAMOVAH,HIGHA……;(AH)=;(AL)=;(AL)=;(AH)=0ABH0CDH34H12H立即寻址4.3.3操作数项(c)运算符和操作符:5)属性操作符:主要有PTR、段操作符、SHORT、THIS、HIGH、LOW、HIGHWORD、LOWWORD

HIGHWORD和LOWWORD格式:HIGHWORD常量或地址表达式

LOWWORD常量或地址表达式注:操作符的优先级别如P143所示功能:MASM6.0具有的操作符

HIGHWORD取其后的常量或地址表达式的高位字

LOWWORD取其后的常量或地址表达式的低位字4.3.4注释项注释:以分号开始,说明指令的功能和作用,不会产生目标代码,可以一行或多行例1:例2:分行:一行未完,可用分行符(\),接着换行书写,适用于masm6.0例如:studentdb‘zhangsan’,88,\

‘lisi’,90例1datareasegment;definedatasegmentdatareaendsprognamsegment;definecodesegmentmainprocfarassumecs:prognam,ds:datareastart:

pushdsmovax,datareasubax,axmovds,ax

pushax…movax,datareamovds,ax…movah,4ch;movax,4c00h

retint21hmainendpprognamendsendstart例1datar

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论