49.1伪指令 2、数据定义伪指令 ◇功能:定义一个数据存储区,其类型由数据定义伪指 令指定,可以给存储区赋初值,也可以仅仅给变量分 配存储单元,而不赋予特定的值 般格式 标号:数据定义伪指令操作数[操作数…注释 方括号中的内容为可选项。伪指令后面的操作数可以 不止一个。如有多个操作数,互相之间用逗号隔开 例如:SEG:DB23H;定义一个字节 标号SEG可以如下方式引用:标号SEG不能以变量 MOV RO. #SEG 方式被引用: MOV A,@RO MOV A. SEG
7:59:36 4.9.1 伪指令 2、数据定义伪指令 功能:定义一个数据存储区,其类型由数据定义伪指 令指定,可以给存储区赋初值,也可以仅仅给变量分 配存储单元,而不赋予特定的值。 一般格式: [标号:] 数据定义伪指令 操作数 [,操作数…] [;注释] 方括号中的内容为可选项。伪指令后面的操作数可以 不止一个。如有多个操作数,互相之间用逗号隔开。 9 04:34:02 例如: SEG: DB 23H ;定义一个字节 标号SEG 可以如下方式引用: MOV R0, #SEG MOV A, @R0 标号SEG 不能以变量 方式被引用: MOV A, SEG
2、数据定义伪指令 ◇常用的数据定义伪指令有DB和DW: (1)定义字节DB( Define byte) 标号:]DB〈项或项表 其中项或项表:指一个字节、数或数字串,或以引号 括起来的ASCI码字符串(一个字符用ASCI码表示, 相当于一个字节) MSG: DB Press A Key To continue, 0 TAB:DB2.3,5,7,11,13,17,19,";
7:59:36 2、数据定义伪指令 常用的数据定义伪指令有DB和DW: (1)定义字节DB(Define Byte) [标号:] DB 〈项或项表〉 其中项或项表:指一个字节、数或数字串,或以引号 括起来的ASCII码字符串(一个字符用ASCII码表示, 相当于一个字节)。 MSG: DB 'Press A Key To Continue', 0 TAB: DB 2, 3, 5, 7, 11, 13, 17, 19, ';' 11 04:34:02
2、数据定义伪指令 (2)定义字DW( Define word) ◇DW伪指令格式:[标号]DW<项或项表> ◇功能:用于定义字变量。项或项表指所定义的一个字 「两个字节)或用逗号分开的字串。可用来定义地址。 ◇每个字变量占2字节存储单元两个字节存储单元相邻 低高)位字节在低地址中,高低位字节在高地址中。 ◇多个操作数时按排列顺序从 TABLE: 0100H O1H 0101H00H 低地址开始存放。 0102H O1H 0103H[A田 TABLE: DW TABLE TABLE+10. HERE 0104H OIH HERE: DW 0 0105H|06H DW S HERE:0106H[00 0107H[00H 0108H|0IH
7:59:36 2、数据定义伪指令 (2)定义字DW(Define Word) DW伪指令格式:[标号:] DW <项或项表> 功能: 用于定义字变量。项或项表指所定义的一个字 (两个字节)或用逗号分开的字串。可用来定义地址。 每个字变量占2字节存储单元,两个字节存储单元相邻, 低(高)位字节在低地址中, 高(低)位字节在高地址中。 12 04:34:02 TABLE: DW TABLE, TABLE+10, HERE HERE: DW 0 DW $ 0100H 01H 0101H 00H 0102H 01H 0103H 1AH 0104H 01H 0105H 06H 0106H 00H 0107H 00H 0108H 01H 0109H 08H 多个操作数时,按排列顺序从 低地址开始存放。 TABLE: HERE:
2、数据定义伪指令(DS在“§5.3单片机C语言程序调试用到) (3)预留存储空间DS(补充) ◇格式:[标号]DS表达式 ◇功能:从标号地址开始保留若千个字节的内存空间以 备存放数据。保留字节单元数由表达式值决定 ◇例如 仅DS伪指令需在数据段中定义 DSEG AT0x30;数据段起始地址30H VARIBLE:DS5H;该指令不能出现在代码段 ◇汇编后从30H开始,预留5个字节的内存单元 数据段中的标号SEG可以变量方式被引用: MOV VARIBLE. A MOV RI VARIBLE ◇ CSEG AT0080h;代码段可用此指令定义起始地址, 或省略则默认为都是代码段。(仅作了解)
7:59:36 2、数据定义伪指令 (3)预留存储空间 DS (补充) 格式:[标号:] DS 表达式 功能:从标号地址开始, 保留若干个字节的内存空间以 备存放数据。保留字节单元数由表达式值决定。 例如: DSEG AT 0x30 ; 数据段起始地址30H VARIBLE: DS 5H ;该指令不能出现在代码段 汇编后从30H开始,预留5个字节的内存单元。 13 04:34:02 (DS在“§5.3 单片机C语言程序调试”用到) 数据段中的标号SEG 可以变量方式被引用: MOV VARIBLE, A; MOV R1, VARIBLE; CSEG AT 0080h; 代码段可用此指令定义起始地址, 或省略则默认为都是代码段。(仅作了解) 仅DS伪指令需在数据段中定义
2、数据定义伪指令 例如: ORG 1000H SEG: DB 23H ;定义一个字节 DW 1000H ;定义一个字 DB MCS-51 ;定义一个字符串 END 则:(1000H)=23H SEG的地址为1000H (1001H)=9H10H (1002H)=4H00H (1003H)=4DH M的ASCI码 (1004H)=43H C的ASCI码 (1005H)=53H S的ASCI码 (1006H)=2DH -3的ASCI码 (1007H)=35H 数字5的ASCI码 (1008H)=31I 数字1的ASCI码
7:59:36 2、数据定义伪指令 例如: ORG 1000H SEG: DB 23H ;定义一个字节 DW 1000H ;定义一个字 DB ‘MCS-51’ ;定义一个字符串 END 则: (1000H)=23H SEG的地址为1000H (1001H)=00H 10H (1002H)=10H 00H (1003H)=4DH ‘M‘的ASCII码 (1004H)=43H ‘C’ 的ASCII码 (1005H)=53H ‘S’ 的ASCII码 (1006H)=2DH ‘-’的ASCII码 (1007H)=35H 数字5的ASCII码 (1008H)=31H 数字1的ASCII码 14 04:34:02