在汇编语言中变量的名字代表啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在汇编语言中变量的名字代表啥?相关的知识,希望对你有一定的参考价值。

在汇编语言中,标号和名字是有区别的。指令中的标号代表所指的指令的地址。而在伪指令中定义变量时使用的名字代表的是什么呢?

变量顾名思义,这个量是变化的,用一个符号(在伪指令语句中叫名字,在指令语句中叫标号)来表示变量就是这个符号可以表示你定义的那些字符,例如:BUFF DB 12H,34H,56H这里buff就是变量名,表示buff可以表示每一个数值。变量是定义在数据段里的,在数据段里变量名表示符号地址(偏移地址),例如:
data segment
buff db 12H,34H,56H
data ends
这里data是段基址,buff是偏移地址,因为buff是这个数据段的开始,所以汇编的时候buff就是0000H,代表偏移地址。但是在指令语句中,直接mov ah,buff表示把0000H中的内容(因为buff表示的是一个变量)送到ah,即ah=12h。假入你想把56h送到ah那么就需要mov ah,buff【2】,也就是【0000h+2】里的内容。
多说几句,汇编语言里段名表示段基址,你直接mov ax,data表示把段基址送到ax。段里面的符号不论是数据段还是代码段,里面的符号代表偏移地址,这些符号直接写在指令语句中表示把符号所表示的偏移量确定的存储单元的内容当做操作数。
自己可以随便想然后去masm里面练习,debug看看存储单元、寄存器的内容就可以总结出来了,这是我自己总结出来的,请大家批评指正!!!!
参考技术A 变量名:是个符号地址而已,它有三个属性,段基址、偏移量和类型,并不能说切确的是几个量。
比如:varx 的偏移量是0,那么偏移量2的地方。
1.如是以两个字节处理的话,一个量就是1023h。
2.如是以一个字节处理的话,一个量就是23(注意:intel的内存存储方式,“高高低低”,就是高位放在高地址,低位放在低地址)。
如内存状态:
| 6FH |<------偏移量0(也就是varx的偏移量处)。
| 82H |<------偏移量1。
| 23H |<------偏移量2。
| 10H |<------偏移量3。

汇编语言(assembly language,台湾译作组合语言),是一种与硬件紧密相关的程序设计低级语言。汇编语言是机器语言便于记忆和理解的符号形式(又称为助记符)。
汇编语言的语句与机器语言 (机器语言操作码) 存在对应关系,并不意味着汇编语言语句与机器操作对应。在 CISC (复杂指令集) 结构 CPU 上,汇编语言(或一个机器语言操作码)可能被组译器解译成多个“微指令”。
汇编语言不像大多数的程序设计语言一样被广泛用于程序设计;在今天的实际应用中,通常被应用在底层硬件操作和高要求的程序优化的场合。驱动程序、嵌入式操作系统和实时运行程序都需要汇编语言。
参考技术B 伪指令是用于告诉汇编程序如何进行汇编的指令,它既不控制机器的操作也不被汇编成机器代码,只能为汇编程序所识别并指导汇编如何进行。伪指令的名字所代表的地址是程序段的入口地址,伪指令的名字就是标号,它有三重属性:段属性、偏移地址属性、距离属性。不知道这样说你明白没有。追问

MOV AX,COUNT(假设是已经定义的变量名字)
与 LEA AX,COUNT 的区别在于前者给的是count的内容,而后者是将他的地址给AX?
但是为什么有时候再用地址来做存储器寻址的时候要打中括号?在这里需不需要呢?

追答

MOV AX,COUNT(假设是已经定义的变量名字)
与 LEA AX,COUNT 的区别在于前者给的是count的内容,而后者是将他的地址给AX
以上是对的,有些打上中括号是由于读取方式不一样,在汇编语言中有11种寻址方式吧,如直接寻址,寄存器寻址……这些书上有详细的解释和图例。多看看肯定会懂的。

本回答被提问者采纳
参考技术C 伪指令中定义变量时使用的名字代表的是变量的地址,就是内存操作数的地址 参考技术D 这个名字代表指向堆栈的一个缓冲区的地址的指针

以上是关于在汇编语言中变量的名字代表啥?的主要内容,如果未能解决你的问题,请参考以下文章

汇编语言用啥软件写的?后缀名是啥?

C语言中,变量到底是个啥概念?

C语言中&表示引用时啥意思?在函数中void select(huffmantree &ht)&不要貌似也可以啊?

单片机汇编程序中MAIN里可以啥都不写么?MAIN必须有么?

C++ int i[233];我直接这样写代表了啥意思?

C语言可以在不同的源文件中定义相同名字的全局变量吗