這裡蒐索程式師資訊,查找有用的技術資料
当前位置:首页 » 服务存储 » 汇编变量定义的存储
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

汇编变量定义的存储

发布时间: 2022-08-31 04:25:57

1. 汇编语言中怎样定义一个变量

不管上ASM汇编还是8051汇编,变量定义的格式都是:
变量名 DB 内容
例如:BUF DB 100
就是在内存中定义一个单元,“取名”叫BUF,实际上BUF是该单元的地址,该单元的初始化内容为100;在程序中可以对BUF进行读写。

2. 在汇编中对变量定义中 如 X DW 2;那么X中存放的到底是什么是2 存放的地址还是数值2

这是不应该的,可能是你理解上的一些错误。

DB,DW等一系列语句是汇编的伪代码,相当于C语言里的预处理指令。

所以X DW 2只是相当于给常量2取了一个名字,以便于调用。而实际程序中止保存了常量2,而没有X的位置。

X就是表示X的值,而[X]则表示以X的值为地址的内存空间。

3. 汇编语言中字符串变量是如何存储的啊

C++的关键字 asm

微软详述:

__asm关键字启动内联汇编并且能写在任何c/c++合法语句之处.它不能单独出现.它必须接汇编指令、一组被大括号包含的指令或一对空括号.术语“__asm 块”在这里是任意一个指令或一组指令无论是否在括号内。

以下代码片段是在括号内的一个简单的__asm块。

__asm

{

mov al, 2

mov dx, 0xD007

out al, dx

}

另一种方法是,你可以在每个汇编指令前放置__asm

__asm mov al, 2

__asm mov dx, 0xD007

__asm out al, dx

因为__asm关键字是一个语句分隔符,你也可以将汇编指令放在同一行:

__asm mov al, 2 __asm mov dx, 0xD007 __asm out al, dx

以上三个的例子产生相同的代码,但是第一种风格(把__asm块用括号括起来)有一些优势。括号可以清晰的将C或C++代码和汇编代码分开,并且避免了不必要的重复__asm关键字。括号也能避免模糊性。如果你想在__asm块的同一行放置一个C或C++语句,你必须将块用括号括

起来。没有括号,编译器不能告诉汇编代码在哪里停止而C或C++代码在哪里开始。最后,因为在括号的文字有和原始MASM一样的格式,你能轻松的从一个已有的MASM源文件里剪切和黏贴文字到文件来。

不同于C和C++的括号,包含__asm块的括号对变量的作用域并没有效果。你也能嵌套__asm块,嵌套对变量作用域也没有效果。
请参考

4. 汇编定义变量的问题`

这个语句的意思应该是定义一个存储单元,里面存放12H,34H,H表示12和34是16进制,

5. 汇编分配的存储空间如何在c中使用

1、汇编中,所有的变量的存储模式都是由程序员定义的。即几种寻址方式是指令形式确定的。
如MOVC、MOVX、MOV @Ri,MOV X,SETB……,紧跟的地址操作数需要程序员指定,各自独立。数据含义及存放地址需要设计人员根据需要分配。
2、在C中,无需关注具体的地址。只需要指定变量的属性即可。编译时自动分配。溢出时将提示。
如 char code x[5]={1,2,3,4,5};这个表格存放在ROM里
char bdata y;这个变量存放在可位寻址的空间20H-2FH,且y可位寻址。
bit z;这个变量存放在位寻址空间。
char idata a;这个变量存放在内部RAM中。
char xdata b;这个变量存放在外部RAM中。
如果你想指定地址访问:XBYTE[]CBYTE[]等都可(需ABSACC.H支持)

6. 如何汇编语言定义变量

汇编语言定义变量的格式为 :【变量名】【变量类型】【数值列表】

其中,变量类型有DB,DW,DD等,分别表示变量占有的内存空间(依次为1,2,4个字节)

如:

A DB 1,2,3,4 就定义了名称为A的4个占1个字节的变量,分别是1,2,3,4(严格来说是0001,0010,0011,0100)保存在系统分配的内存空间中。

如果是A DW 1,2,3,4则保存的值为(00000001,00000010,00000011,00000100)

(6)汇编变量定义的存储扩展阅读:

注意事项

由于汇编语言是面向机器的语言,没有对函数的定义,函数的实现是通过中断调用的,(一个代码段跳到另外一个代码段) 所以对全局变量和局部变量的体现是通过栈来实现的。

即:

全局变量保存在数据段中,即伪代码中声明的DATA SEGMENT,任何时刻都能调用。

而局部变量则保存在栈段中,是伪代码中声明的STACK SEGMENT,平时不调用,调用中断时把局部变量从栈里取出来。

7. 在汇编语言中,定义常量、变量、分配内存空间的是什么指令

1、定义一个常量一般可用EQU伪指令来实现

一般使用格式:
符号名 EQU 表达式
如:

NUMBER EQU 200H ; 给缓冲区的长度取一个符号名
STRING EQU “My Strings"

LEN EQU NUMBER+2
2、定义变量
汇编语言在数据段使用数据定义伪指令定义变量,对数据定义伪指令说明如下:
(1)db((byte,字节,一字节宽)
(2)dw(word,字,两字节宽)
(3)dd(double word,双字,四字节宽)
示例如下:
BUF0 DB 1 ;定义一个字节型变量,名称是BUF0,初始值是1
BUF1 DB "2" ;定义一个字符型变量,名称是BUF1,初始值是"2"
BUF2 DW 10H ;定义一个字型变量,名称是BUF2,初始值是10H
3、分配内存
可在在前面定义变量的基础上利用DUP伪指令来分配内存
如:
MEM1 DW 5 DUP(20) ; 分配20个字长度空间,每个字的初始化为5.

8. 汇编和C-51程序是如何设置变量所处的存储器区域的

汇编中的变量可以直接指定变量的地址,
而在C-51中是通过关键字 data 和xdata 来区别的,前者是在片内RAM,后者是在片外RAM,例如: int data y;就定义了各个存储于片内的整型变量;int xdata x;就定义了一个存储在片外的整型变量。两外,在C-51中也可以直接指定变量地址,可以使用宏替换XDATA[]或者at 关键字,详细内容建议查阅相关书籍,说的太多了不利于楼主的自学能力!

相信自己!

记得加分哟!

9. 汇编语言中定义的变量是存放在哪的内存还是寄存器

内存