- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章 汇编语言程序设计 4.2 伪 指 令 语 句 【伪指令语句】在汇编期间进行处理,主要完成变 量定义,存储器分配,指示程序开 始和结束,段定义,段分配等。 伪指令没有对应的机器代码,不像指令语句那样由CPU来执行,它是由汇编程序在汇编期间进行处理。 伪指令则不产生与之相应的目标代码。 示例 偏移量 机器码 程序 0000 CODE SEGMENT ASSUME CS:CODE 0000 0405 PROG_S: ADD AL,05H 0002 90 NOP 0003 EBFB JMP SHORT PROG_S 0005 90 NOP 0006 CODE ENDS END 伪指令语句分类 数据定义语句,如DB,DW,DD等 标号赋值语句,如EQU,=等 段定义语句,如SEGMENT…ENDS 段分配语句,如ASSUME 过程定义语句,如PROC…ENDP 程序开始结束语句,如ORG,END 数据定义伪指令 【格式1】变量名 助记符 操作数1,…操作数n ;注释 【格式2】变量名 助记符 n DUP(操作数1,…操作数n) ;注释 功能:将操作数存入变量名指定的存储单元中,或者 只分配存储空间不存入数据。 变量名:用符号表示,可以省略,后面不跟冒号。汇编时将变量助记符后的第一个字节的偏移地址作为它的符号地址。 助记符:所用伪指令助记符主要有DB,DW,DD,DQ,DT。 数据定义伪指令 操作数:操作数可以是常数,字符串,变量,标号,表达式等。多个操作数之间必须用逗号分开;格式2中,n必须是正整数。 注释:说明伪指令的功能,可以省略,注释前必须带分号“;”,如果注释在一行中注释写不下,换行写时,前面必须加上分号。 数据定义伪指令 【例】操作数是常数和表达式 DA1 DB 10H,52H DA2 DW 1122H,34H DA3 DD 5*20H,0FFEEH 汇编后数据在存储器中 存放格式如图所示: 数据定义伪指令 【例】操作数是字符串 FIRST DB ‘HELLO’ SE DW ‘OK’ DW在定义字符串时,只能定义两个,若要定义多个字符,只能用DB。汇编后数据在存储器中存放格式如图所示: DB与DW在存放上的区别 ①NUM1 DB 12H,34H ②NUM2 DW 1234H ③CHAR1 DB ‘OK’ ④CHAR1 DW ‘OK’ 数据定义伪指令 【例】操作数用DUP定义重复变量。 ONE DB 5 DUP(0) TWO DW 10 DUP(?) THR DB 4 DUP(1, 2 DUP(20H)) 段定义语句 ?分类名:汇编时,汇编程序连接时将所有分类名相同 的逻辑段组成一个段组。 【常见格式】 段名 SEGMENT 逻辑段内容 段名 ENDS 我们在学习时,可以忽略其它因素,会识别,使用常用格式即可。 段分配语句 【段分配语句】ASSUME 【格式】ASSUME CS:段名,DS:段名,SS:段名,ES:段名 ?段名必须是前面段定义语句SEGMENT…ENDS中定义的段名。 ?代码段的定义是必须的。 ?段程序开始时,需要将数据段(除代码段)的段基址装入相应的段寄存器中。数据段段基地址→DS,堆栈段段基地址→SS,扩展段段基地址→ES, 【例】两个16位无符号二进制数相乘 DATA SEGMENT D1 DW 1234H D2 DW 5678H P1 DW ? P2 DW ? DATA ENDS STACK SEGM
文档评论(0)