第三部分汇编.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三部分汇编

3)ORG伪指令 该指令可用来设置段内偏移地址。汇编程序开始对源程序的某段进行汇编时,其地址计数器的初值相对于段地址总是零。接着,依次累计段内语句汇编后生成目的代码的字节数。ORG伪指令可修改计数器的内容。格式为: ORG 〈表达式〉 它告知汇编,该指令后生成的目的代码,从表达式提供的偏移地址开始存放。该指令的实际工作是把当前段的汇编程序地址计数器置成表达式所确定的值。下面是使用ORG伪指令的例子: DATA SEGMENT PAGE PUBLIC WWW ORG 100 XX DW 10 DUP(?) ORG $+5 ;$表示当前地址 ORG OFFSET XX+256 ARRAYB DB 100 DUP(1, -1) 第一个ORG表示该数据段从偏移地址100的位置开始使用;第二个ORG是为变量XX分配十个未初始化的字后,又跳过五个字节存储单元,再继续存储数据;第三个ORG表示变量ARRAYB从偏移地址356的位置开始存放。 4) ASSUME 伪指令 8086利用CS寄存器为代码段寻址,DS寄存器为数据段寻址,SS寄存器为堆栈段寻址 …。然而SEGMENT和ENDS两个伪指令并未告诉汇编程序,其所定义的段是哪一种段,而ASSUME伪指令可达到此种功能,它告诉汇编一种匹配假设,即哪个段寄存器将为哪个段名寻址,从而在汇编时能检查出语句所引用的变量或标号是否可以通过某段寄存器正确地访问。ASSUME的指令格式如下: ASSUME段寄存器:段名 [,段寄存器:段名] 其中段名是程序中定义过的任何段名或组名,也可以是表达式(SEG〈变量名〉或 SEG〈标号〉)或关键字NOTHING 。 注意: 1) ? 问号表示所定义的变量未指定初值。例如: BUF DW ?;定义一个字变量BUF,初值为一随机数 2) n DUP 表达式 这种情况用于定义重复变量,DUP(Duplication)是重复数据操作符,n表示重复次数,圆括号内的表达式表示要重复的内容。例如: TAB DB 100 DUP(0) ;数组变量TAB有100个初值为零的字节元素 DUP操作符可以嵌套使用,即圆括号中的表达式又 是一个带DUP的表达式。例如: 2. 算术与关系运算符伪指令 (2)关系运算符伪指令 (1)算术运算符伪指令 +(加)、-(减)、*(乘)、/(除)、MOD(求余) 例:MOV AL,3*5-6 MOV AL,12 MOD 4 ? 关系运算符伪指令 ?关系运算符伪指令举例 EQ(相等) NE(不相等) LT(小于) GT(大于) LE(小于或等于)GE(大于或等于) 关系为“真”: 结果=全“1”。 关系为“假”: 结果=全“0”。 LOP: LOOP LOP CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AH,4CH INT 21H CODE ENDS END START 汇编程序设计举例 1.编辑汇编程序的基本思路 以多字节加法为例: NUM1 DB 0A9H,7CH,0B4H NUM2 DB 65H,8FH,0C1H 计算:B47CA9H+C18F65H ADD NUM1,NUM2 MOV SI,0 AD

文档评论(0)

sunshaoying + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档