MASM汇编语言中可以作为有序名字、标号、变量名的是
汇编语言中,变量和标号都是用户定义的符号地址,标号有两个属性,段基地址、偏移地址变量有三个属性,段基地址、偏移地址和数据类型一般来说,标号只在代码段中被定义,而变量则可以被定义在数据段和代码段中!计算机汇编语言的一个突出优点就是利用符号(Symbol)来代替目标码,也即大量的二进制代码用符号来表示,使汇编语言源程序容易理解,便于记忆.在宏汇编语言中所有变量名、标号名、记录名、指令助记符和寄存器名等统称符号.这些符号可通过汇编控制语句的伪操作命令重新命名,也可以通过指令给它定义其它名字及新的类型属性,因而给程序设计带来很大的灵活性.符号是程序员在程序中用来代表某个存储单元、数据、表达式和名字等所定义的标识符,可分为寄存器、标号、变量、数字、名字五类.汇编语句形式:START:ADDAX,BUFFERDATASEGMENTBUFFERDB01H,02HDATAENDSJMPSTART其中START,BUFFER,DATA均为符号,它们分别表示标号,变量名,段名,它们具有完全不同的特定含意.标号标号(LABEL)是为一组机器指令所起的名字.标号可有可无,只有当需要用符号地址来访问该语句时,才给此语句赋予标号.标号是程序的目标标志,总是和某地址相联系,供转移或循环指令控制转移使用.21标号的属性因标号表示的是指令地址,所以它有三个属性,即段属性、偏移属性和类型属性.段属性即段地址,标号的段必须在CS中.偏移属性是表示该标号到段首地址的距离,单位是字节,是16位无符号整数.类型属性是距离属性,指标号和转移指令的距离,该标号在本段内引用,距离在-128~+127之间时称短标号,距离属性为SHORT,当标号在本段,距离在-32768~+32767之间时称近标号,距离属性为NEAT,当引用标号的指令和标号不在同一段时称远标号,距离属性为FAR.22标号的定义标号的定义有三种方法:221隐含说明标号距离属性为SHORT和NEAR的标号可以使用隐含说明,即在代码段中定义,标识符后加冒号,放在一条汇编指令的操作符前面.例:NEXT:MOVAX,BX----------LOOPNEXT---------?NEXT1:CMPAX,BXJANEXT1其中NEXT和NEXT1都是标号名.222用LABEL定义标号对于属性为NEAR和FAR的标号均可以用这种定义.格式是:标号名LABELNEAR/FAR例如:NEXTLABELNEAR/FAR---------?LOOPNEXT223用EQU定义标号对于属性为NEAR和FAR的标号也可用EQU定义.格式是:标号名EQUTHISNEAT/FAR例如:NEXTEQUTHISNEAR---------?LOOPNEXT23标号的使用231无条件转移指令中标号作为转移地址格式:JMP标号其中标号可以是短标号,近标号或远标号.232循环指令中,标号作为转移地址格式:LOOP标号其中标号只能是短标号233条件转移中标号作为转移地址格式:条件转移指令标号其中标号只能用短标号234属性分离符2.3.4.1取段地址算符SEG例如:MOVAX,SEGNEXTSEGNEXT就是取标号NEXT所在段的段地址.2342取偏移量算符OFFSET例如:MOVBX,OFFSETNEX其中OFFSETNEXT就是取标号NEXT的有效地址,该语句等效于:LEABX,NEXT2343取类型算符TYPE例如:MOVAX,TYPENEXT若NEXT为近标号,则TYPENEXT值为FFFFH(-1),若NEXT为远标号TYPENEXT值为FFFEH(-2).其中-1和-2无真正的物理意义,仅以数值表示标号类型而已.变量变量(Variable)代表存放在某些存储单元的数据,这些数据在程序运行期间可以随时被修改.变量是通过变量名在程序中引用,变量名实际上是存储区中一个数据区的名字,以变量名数据的方式供程序员使用,作为指令或伪.指令的操作数,大大方便了程序设计者.由于变量是在逻辑段中定义.这就决定了变量和标号一样具有段属性、偏移属性和类型属性,前两个和标号的属性相同,而类型属性是指出数据区的数据项的存取单位是字节(BYTE),字(WORD)或数字(DWORD)等.可见变量和标号的主要区别在于变量指的是数据,而标号则对应的是指令31变量的定义变量通常也有三种定义法.311用伪指令DB,DW,DD等来定义格式:[变量名]定义数据伪指令〈表达式〉其中变量名可有可无,若没有名字则该变量为无名变量.表达式可以是常数、保留符号"?"、ASCII码字符串(只能用DB定义)、地址表达式(不能用DB定义)、预置数据表格和用DUP定义的重复值.变量名可在任一逻辑段中定义,其后边不紧跟冒号而是加一空格.例如:ADB100;A为一个字节,值为100.BDB100,23;B值为100,B+1的值为6.CDB'ABC';C的值为41H,C+1的值为42H,C+2的值为43H.DDB?;D是一个字节,预留一个字节,可以置入任何内容.EDB23DUP(0);定义23个0,每一个0占一个字节.FDB3DUP(1,2DUP(0));定义9个数,顺序为:1,0,0,1,0,0,1,0,0.GDW'AB','CD';G的值为4142H,G+2的值为4344H.HDW23;H为一个字,存放顺序为06,00HIDW?预留一个字,占两个字节单元,312用伪指令LABEL定义变量格式:变量名LABELBYTE/WORD/DWORD例如:BUFLABELBYTEDB21它等价于BUFDB21313用伪指令EQU定义变量格式:变量名EQUTHISBYTE/WORD/DWORDTHIS是定义任意类型算符,它同LABEL一样用于建立变量或标号类型属性,而其段属性为语句所在段的段地址,偏移属性为所在位置的下一个能分配到的可用偏移地址.例如:STACKSEGMENTDW100DUP(?TOPEQUTHISWORD(或TOPLABELWORD)STACKEND变量TOP被定义为字类型,它的偏移量应为STACK段定义100个字后的下一个字的偏移量,它恰就是堆栈指针SP的初值,因此经常用这种方法为SP赋初值.本文来自编程入门网314双重定义变量名利用隐含方式和显示方式的双重方式,可以对同一位置定义为双重变量.格式〈变量名〉EQUTHIS〈类型〉〈变量名〉DB/DW/DD…例如:ABEQUTHISBYTE(或ABLABELBYTE)AWDW50DUP(0)AW定义为字变量,在AW前使用了THISBYTE,定义了一个字节类型变量,访问同一个位置,用AB按字节访问,用AW则按字访问.32变量的访问321变量名作为存储单元的直接地址变量名用直接寻址时,变量的类型必须与指令的要求相符合.例如:AB已定义字节变量,AW定义为字变量,用变量名作直接寻址形式如下:MOVAH,ABMOVAX,AW322用合成运算符PTR临时改变变量类型接上例用MOVCX,WORDPTRABMOVCL,BYTEPTRAW则可临时把AB变为字类型,AW变为字节类型,但段和偏移属性不变.323变量名作为相对寻址中的偏移量例如:MOVAX,AB〔SI〕MOVAX,AW[BX][SI]在这里AB,AW分别表示它们的偏移量而不是它们所表示的数据,常用于数组或表格操作中,AB[SI]就表示AB数组中第SI个元素.324属性分离符其中SEG和OFFSET用法和标号相同,分别表示取变量所在段的段地址和变量的偏移地址.而TYPE运算符,将回送该变量类型所表示的字节数.例如:设AB为字节变量,AW为字变量,则:MOVAH,TYPEAB即MOVAH,1MOVAX,TYPEAW即MOVAX,2325取变量数据项个数运算符LENGTH对于变量定义时使用DUP的情况,汇编程序将回送DUP前的重复次数,即分配给该变量的单元数,若表达式有多个DUP,则取第一个DUP项,其它情况则回送1.例如:ARRAYDW50DUP(0)则MOVCX,LENGTHARRAY即MOVCX,50ARRAY1,DW1,2,3则MOVCX,LENGTHARRAY1即MOVCX,1可见LENGTH表示数组元素个数,而不管其类型.326取变量数据项长度算符SIZESIZE算符,汇编程序将回送分配给该变量的字节数,即SIZE=LENGTHTYPE例如:ARRAYDW50DUP(0)则SIZEARRAY=502=100要注意:对字符串变量求其长度,使用SIZE不能达到目的.例如:STDB'ABCDEFG'则SIZEST值为1而不是7,欲求字符串长可用COUNTEQU$-ST,则COUNT值为7,其中$为定义ST一串字符后下一个可用的偏移地址.327变量名仅对应数据区第一个数据项例如:WORDDW20DUP(?)MOVAX,WORD;第一个元素送AX,MOVAX,WORD+38;第20个元素送AX.其它符号除标号和变量外,符号还可表示常量、段名、过程名、寄存器名和指令助记符等.(1)符号常数常数也常以符号形式出现,使之更具有通用性且便于修改.例:COUNTEQU100则COUNT就表示常数100.(2)符号表示指令助记符.例:MOVEQUMOV则MOVE就表示指令MOV(3)符号表示寄存器,例:COUNTEQUCX则COUNT就代表寄存器CX.(4)符号作为段名,例:DATASEGMENT---------------DATAENDSDATA是段名,引用DATA表示段地址.(5)符号作为过程名,例:SUBRPROCNEAR/FAR?---------------SUBENDPSUB为过程名,它同样具有段、偏移量和距离类型三个属性.(6)符号作为宏指令名宏定义格式宏指令名MACRO[形式参数]---------------?ENDM宏调用格式:宏指令名[实参数]每当引用宏指令名则汇编程序对宏调用作宏,就是用宏定义体取代源程序中的宏指令并用实参数取代宏定义中的形式参数.
佚名
2024-11-01 07:49:28
类似问题(10)
-
佚名2024-11-01 01:42:01
问c语言文件起名可以是一个变量加常量吗?如当名字是变量,作业为常量、文件名为小明作业。
答使用sprintf生成相应文件名的字符串再使用该字符串作为文件名即可比如n为"hello",m为123可以sprintf(file,"%s%d.txt",n,m...
-
佚名2024-11-01 00:25:42
问Visual FoxPro可以作为变量名吗?
答不可以。内存变量取名应遵守以下规则:1.以字母、汉字或下划线开头,由字母、数字、下划线组成;2.至多254个字符;3.不可与系统保留字相同,所谓系统保留字是指v...
-
佚名2024-11-01 21:17:34
问汇编语言中“名字”是由标号和变量组成,它们究竟分别表示什么啊?比如这个程序中哪些是标号哪些是变量
答简单记忆方法:1、凡是名字后边有冒号的,是标号,也就是给这段程序标记一个记号,从其他地方转移过来有个目标。2、凡是名字后边从不出现冒号的,是变量(关键字除外)。...
-
佚名2024-11-01 04:15:22
问c语言中变量名可以用大写字母么?
答变量命名的推荐规则是大写字母用来定义全局变量。小写字母用来局部变量。
-
佚名2024-11-01 08:00:00
问汇编语言中可以定义变量吗?怎么定义
答汇编语言当然是可以定义变量的。比如:LKEY EQU P3.0KVAL EQU 30HFLAG BIT 00H
-
佚名2024-11-01 08:00:00
问不可以作为变量名的是,说明理由
答选A,变量名由字母、数字、下划线组成,A选项中的+不能出现在变量名中
-
佚名2024-11-01 08:00:00
问汇编语言的标号和变量有什么区别?
答1).A1: MOV AL,10H ;这是一条指令语句,在指令语句中标号位于指令之前,后面跟“:”,A1是标号,代表指令在存储器中的首地址;当调用A1时,比如J...
-
佚名2024-11-01 08:00:00
问程序设计语言里为什么引入变量
答为了使程序变得更加完整,毕竟内置变量有限无法实现所有的功能
-
佚名2024-11-01 08:00:00
问.汇编语言程序设计考题,求高手解答
答一、判断题(5道小题,共15分) 1、MASM汇编语言的注释用分号开始,无所谓英文分号、还是中文分号。(3分) 错误 2、按照MASM语法编程...
-
佚名2024-11-01 08:00:00
问汇编语言注释
答MOV R6,R5MOV R5,R4MOV R4,R3MOV R3,R7这些,都是非法指令。===============LOOPOF: MOV 32H, 0A...
风水
起名
网名
- 1 励志网名简单气质
- 2 带君字的女生网名
- 3 潮流网名2016男生专用
- 4 艾辰的QQ网名
- 5 有关木偶的网名
- 6 最伤女朋友网名
- 7 有汽水的网名
- 8 伤感加霸气的qq网名
- 9 昵称怎么打特殊字符
- 10 游戏昵称四人
说说
- 1 空间说说同步个性签名
- 2 qq带海字情侣签名
- 3 男士爱老婆的签名
- 4 被男朋友上的说说
- 5 成熟语录说说
- 6 厦大芙蓉隧道说说
- 7 qq说说自己骂自己的说说
- 8 想找个人聊天说说
- 9 天长地久的思念说说
- 10 三五个闺蜜的说说