- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章_编写简单的汇编程序
主要内容 2.1 常量、变量、标号、表达式 2.2 常量和变量的定义 2.3 数据寻址方式 2.4 基本指令 2.5 源程序的基本格式 2.6 汇编语言程序的上机调试 2.1 常量、变量、标号、表达式 指令和伪指令 常量 变量 标号和表达式 硬指令和伪指令 硬指令——使CPU产生动作、并在程序执行时才处理的语句,即处理器指令。 伪指令(Directive)——不产生CPU动作、在程序执行前由汇编程序处理的说明性语句,也称指示性语句。例如,数据说明、变量定义等等 伪指令与具体的处理器类型无关,但与汇编程序的版本有关 常量 常量是在程序运行期间固定不变的数。 用途:用作指令的立即数、寻址方式的偏移量以及变量定义时的初始化值。 各进制数 ?二进制常数:以基数说明符B(b)结尾。 ?十进制常数:以字母D(d)结尾。汇编语言源程序中默认为十进制数,可省略D。 ?八进制常数:以字母O(o)结尾。 ?十六进制常数:以字母H(h)结尾。对于以字母A~F起头的十六进制数,必须在前边加一个数字0,以便与标识符区别开。在DEBUG中默认为十六进制数,可省略H。 常量 如何改变数的默认进制:RADIX伪指令 格式: .RADIX n 其中,n为默认进制的基数。 例如 .RADIX 16 实数:由整数、小数和指数3部分组成,通常以十进制数形式表示 字符串: 用单引号括起来的一个或多个字符。 变量 变量:占固定长度的存储单元,在程序运行期间其值可变。 变量名:符号地址,是变量所占一组存储单元的起始地址。 变量的值:存储单元中的数据 变量的三种属性 段属性(SEG):是16位无符号数,表示变量所在段的段首地址。 偏移属性(OFFSET):是16位无符号数,表示从段首址单元到变量存储单元位置之间的位移量。 段属性和偏移属性就确定了一个变量的物理位置。 类型属性(TYPE):表示变量占用的内存存储单元的字节数,即确定了变量中数据的取值范围,但不能确定变量的操作。变量类型可以为字节、字、双字、四字或10字节 。 标号 标号:指令所占据一组存储单元的符号地址标识, 存储单元中的数据是指令的操作码和操作数。 用途:在分支结构和子程序设计中,用标号表明程序执行流程将要转移的位置 表示: 标识符:指令 例如,定义和使用标号的代码如下: CMP AX,BX JNE NEXT ;(AX)不等于(BX)时,转移到NEXT标号指向的语句继续执行 …… NEXT:MOV AX,0 标号的三种属性 ?段属性(SEG):16位无符号数,标识指令代码段的段首地址。 ?偏移属性(OFFSET):16位无符号数,表示从段首址到标号位置之间的位移量,是指令的偏移地址。 段属性和偏移属性确定了标号所标识的指令的物理地址。 ?类型属性(TYPE):按照转移指令和转移到的位置是否在同一段内,标号的类型分为NEAR和FAR两种。NEAR类型将产生一个2字节的偏移地址,称为短指针或近指针 ;FAR类型则将产生一个包括段地址和偏移地址的4字节转移地址,称为长指针或远指针 。 运算符和表达式 表达式:由寄存器名、常量、标号、变量和运算符按语法规则组合而成。在汇编期间计算表达式的值,并存于目标代码中。 运算符 运算符和表达式 运算符 算术运算符:+、-、*、/和MOD 用途: 数值操作数,汇编后得到数值运算结果。 +、-运算也可用于地址操作数,但只能符合下面两种规则: ① 同一段内两个内储单元地址相减,得到两个内存单元之间相差的字数; ② 一个内存器单元地址可以加或减一个常量,产生其邻近单元的地址。 移位运算符:对常数进行逻辑右移和左移运算,汇编后得到一个新的常数。 格式: 表达式 移位运算符 移动的位数 例如,MOV AX SHR 4 ;等效于MOV AX,0000 0100B SHL AX SHR 2 ;等效于SHL AX 关系运算符:双目运算符,用于比较两个表达式的大小。 说明: 表达式中的操作数必须是常数或同一段内的变量。 对于常数按无符号数比较,对于变量则比较它们的偏移量。 比较结果若为真,则关系表达式的值为-1;如果为假,则关系表达式的值为0。 例如,MOV AX,0FAH NE ;等效于MOV AX,-1 运算符和表达式 运算符 逻辑运算符:实现按位相与、相或、异或、求反的逻辑运算 例如:用逻辑运算符进行运算。 MOV AL,34H AND 0FH ;04H→AL MOV BL,05H OR 30H
文档评论(0)