- 1、本文档共155页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第章汇编语言程序设计;第4章:汇编语言的特点;第4章:4.1汇编语言语法4.1.1 汇编语言源程序的结构及组成;;[名字] 指令/伪指令 [操作数1[,操作数2…]];段:数据段、堆栈段、附加段、代码段;1) 组成名字的合法字符有:
● 字母(不分大小写);
● 数字0~9;
●特殊符号(“?”,“:”,“@”,“_”,“$”)。
2) 名字的有效长度小于31个西文字符。
3) 名字以字母开头。
4) 不能把保留字用作名字。 ;3.名字属性;(3)过程名
或标号名;4.1.2 汇编语言伪指令;(1) 数字常量:十进制、八进制、十六进制、二进制等,缺省形式是十进制;
(2) 字符常量,用单引号括起来,被存储的是该字符的ASCII码;
(3) 符号常量,必须是预先已定义的符号;
(4) 符号“?”,表示预留空间,内容不定;?
(5) DUP,表示内容重复的数据。具体形式为:
次数 DUP(被重复的内容) ;;ORG 100H
D_E DB 3 DUP(?)
EVEN
D_F DW D_E
D_G DB 2 DUP(1,3,4)
D_H DW $+2;2.符号定义伪指令;(2)等号 “=”;(3)LABEL ;【例】利用LABEL使同一个数据区有一个以上的类型及相关属性。
AREAW LABEL WORD ;AREAW与AREAB指向相同的数
据区,AREAW类型为字,而
AREAB类型为字节
AREAB DB 100 DUP(?)
……
MOV AX,1234H
MOV AREAW,AX ;(AREAW) = 1234H
……
MOV BL,AREAB ;BL = 34H ;3.段定义伪指令;BYTE:×××× ×××× ×××× ××××B,
即段可以从任何地址开始;
WORD:×××× ×××× ×××× ×××0B,
即段的起始地址必须为偶地址;
PARA:×××× ×××× ×××× 0000B,
即段从节(PARAGRAPH)边界开始,每16个字节
为1小段,所以,其起始地址必为16的倍数。(缺省值)
PAGE:×××× ×××× 0000 0000B,
即段从页边界开始,每256个字节为1页,所
以,其起始地址必为256的倍数。 ;组合类型:说明程序连接时的段合并方法 ;4 MEMORY:与PUBLIC同义,只不过MEMORY定义的
段装在所有同名段的最后。若连接时
出现多个MEMORY,则最先遇到的段按
组合类型MEMORY处理,其他段组合类
型按PUBLIC处理。
5 PRIVATE:不组合,该段与其它段逻辑上不发
生关系,即使同名,各段拥有各自
的段基值。[缺省值]
6 AT exp:段地址为表达式exp的值(长度为16位)。
此项不能用于代码段。; 当几个程序模块进行连接时,其中具有相同类别名的段,按出现的先后顺序被装入连续的内存区。没有类别名的段,与其它无类别名的段一起连续装入内存。 ;ASSUME 段寄存器名:段名[,段寄存器名:段名…] ;【例】按下面要求,写出程序框架;DSEG SEGMENT AT 0E000H
D_BYTE DB 100 DUP(?)
D_WORD EQU WORD PTR D_BYTE
DSEG ENDS
SSEG SEGMENT PARA ‘STACK’
DB 200 DUP(?)
SSEG ENDS
CSEG SEGMENT
ORG 1000H
MAIN PROC FAR
ASSUME CS:CSEG,DS:DSEG,SS:SSEG;
START: PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DSEG
MOV DS,AX
……
RET
MAIN ENDP
CSEG ENDS
END START;4.1.3 汇编语句;1.算术运算符;2.逻辑运算符;例2:从端口86H读取一个字节,高位屏蔽后从端口
文档评论(0)